@parity/product-sdk-descriptors 0.2.0 → 0.3.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 (73) hide show
  1. package/README.md +9 -2
  2. package/chains/{bulletin → paseo-bulletin}/.papi/polkadot-api.json +3 -3
  3. package/chains/{bulletin → paseo-bulletin}/generated/dist/common-types.d.ts +449 -101
  4. package/chains/paseo-bulletin/generated/dist/descriptors-DLKNGfNn.js +25 -0
  5. package/chains/paseo-bulletin/generated/dist/descriptors.d.ts +1 -0
  6. package/chains/{bulletin → paseo-bulletin}/generated/dist/index.d.ts +5 -5
  7. package/chains/{bulletin → paseo-bulletin}/generated/dist/index.js +5 -5
  8. package/chains/paseo-bulletin/generated/dist/metadataTypes-BOa_7XZY.js +3 -0
  9. package/chains/paseo-bulletin/generated/dist/metadataTypes.d.ts +2 -0
  10. package/chains/{bulletin/generated/dist/bulletin.d.ts → paseo-bulletin/generated/dist/paseo_bulletin.d.ts} +442 -78
  11. package/chains/paseo-bulletin/generated/dist/paseo_bulletin_metadata-CtL8fKr5.js +3 -0
  12. package/chains/paseo-individuality/.papi/polkadot-api.json +12 -0
  13. package/chains/{individuality → paseo-individuality}/generated/dist/common-types.d.ts +1456 -562
  14. package/chains/paseo-individuality/generated/dist/descriptors-B1XZ3XJy.js +25 -0
  15. package/chains/paseo-individuality/generated/dist/descriptors.d.ts +1 -0
  16. package/chains/{individuality → paseo-individuality}/generated/dist/index.d.ts +5 -5
  17. package/chains/{individuality → paseo-individuality}/generated/dist/index.js +6 -6
  18. package/chains/paseo-individuality/generated/dist/metadataTypes-BaUy_4gO.js +3 -0
  19. package/chains/paseo-individuality/generated/dist/metadataTypes.d.ts +2 -0
  20. package/chains/{individuality/generated/dist/individuality.d.ts → paseo-individuality/generated/dist/paseo_individuality.d.ts} +1487 -427
  21. package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-Cj1JLFI2.js +3 -0
  22. package/chains/previewnet-asset-hub/.papi/polkadot-api.json +12 -0
  23. package/chains/previewnet-asset-hub/generated/dist/common-types.d.ts +16923 -0
  24. package/chains/previewnet-asset-hub/generated/dist/common.d.ts +1 -0
  25. package/chains/previewnet-asset-hub/generated/dist/descriptors-uhwNzCA5.js +25 -0
  26. package/chains/previewnet-asset-hub/generated/dist/descriptors.d.ts +1 -0
  27. package/chains/previewnet-asset-hub/generated/dist/index.d.ts +10 -0
  28. package/chains/previewnet-asset-hub/generated/dist/index.js +116 -0
  29. package/chains/previewnet-asset-hub/generated/dist/metadataTypes-C_2YPTST.js +3 -0
  30. package/chains/previewnet-asset-hub/generated/dist/metadataTypes.d.ts +2 -0
  31. package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub.d.ts +16362 -0
  32. package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub_metadata-UA_IAYkc.js +3 -0
  33. package/chains/previewnet-asset-hub/generated/dist/previewnet_asset_hub_metadata.d.ts +2 -0
  34. package/chains/previewnet-bulletin/.papi/polkadot-api.json +12 -0
  35. package/chains/previewnet-bulletin/generated/dist/common-types.d.ts +4440 -0
  36. package/chains/previewnet-bulletin/generated/dist/common.d.ts +1 -0
  37. package/chains/previewnet-bulletin/generated/dist/descriptors-h6xJR9O2.js +25 -0
  38. package/chains/previewnet-bulletin/generated/dist/descriptors.d.ts +1 -0
  39. package/chains/previewnet-bulletin/generated/dist/index.d.ts +10 -0
  40. package/chains/previewnet-bulletin/generated/dist/index.js +88 -0
  41. package/chains/previewnet-bulletin/generated/dist/metadataTypes-BOa_7XZY.js +3 -0
  42. package/chains/previewnet-bulletin/generated/dist/metadataTypes.d.ts +2 -0
  43. package/chains/previewnet-bulletin/generated/dist/previewnet_bulletin.d.ts +3833 -0
  44. package/chains/previewnet-bulletin/generated/dist/previewnet_bulletin_metadata-BaLIpmxp.js +3 -0
  45. package/chains/previewnet-bulletin/generated/dist/previewnet_bulletin_metadata.d.ts +2 -0
  46. package/chains/previewnet-individuality/.papi/polkadot-api.json +12 -0
  47. package/chains/previewnet-individuality/generated/dist/common-types.d.ts +11260 -0
  48. package/chains/previewnet-individuality/generated/dist/common.d.ts +1 -0
  49. package/chains/previewnet-individuality/generated/dist/descriptors-CDoklESi.js +25 -0
  50. package/chains/previewnet-individuality/generated/dist/descriptors.d.ts +1 -0
  51. package/chains/previewnet-individuality/generated/dist/index.d.ts +10 -0
  52. package/chains/previewnet-individuality/generated/dist/index.js +88 -0
  53. package/chains/previewnet-individuality/generated/dist/metadataTypes-BaUy_4gO.js +3 -0
  54. package/chains/previewnet-individuality/generated/dist/metadataTypes.d.ts +2 -0
  55. package/chains/previewnet-individuality/generated/dist/previewnet_individuality.d.ts +10696 -0
  56. package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata-Bfu1vCrE.js +3 -0
  57. package/chains/previewnet-individuality/generated/dist/previewnet_individuality_metadata.d.ts +2 -0
  58. package/package.json +21 -9
  59. package/chains/bulletin/generated/dist/bulletin_metadata-Btf7Dcxv.js +0 -3
  60. package/chains/bulletin/generated/dist/descriptors-BP_sIh_J.js +0 -25
  61. package/chains/bulletin/generated/dist/descriptors.d.ts +0 -1
  62. package/chains/bulletin/generated/dist/metadataTypes-CAWBUdSH.js +0 -3
  63. package/chains/bulletin/generated/dist/metadataTypes.d.ts +0 -2
  64. package/chains/individuality/.papi/polkadot-api.json +0 -12
  65. package/chains/individuality/generated/dist/descriptors-D3unnGtJ.js +0 -25
  66. package/chains/individuality/generated/dist/descriptors.d.ts +0 -1
  67. package/chains/individuality/generated/dist/individuality_metadata-DRlJN3X6.js +0 -3
  68. package/chains/individuality/generated/dist/metadataTypes-DOUrKMCQ.js +0 -3
  69. package/chains/individuality/generated/dist/metadataTypes.d.ts +0 -2
  70. /package/chains/{bulletin → paseo-bulletin}/generated/dist/common.d.ts +0 -0
  71. /package/chains/{bulletin/generated/dist/bulletin_metadata.d.ts → paseo-bulletin/generated/dist/paseo_bulletin_metadata.d.ts} +0 -0
  72. /package/chains/{individuality → paseo-individuality}/generated/dist/common.d.ts +0 -0
  73. /package/chains/{individuality/generated/dist/individuality_metadata.d.ts → paseo-individuality/generated/dist/paseo_individuality_metadata.d.ts} +0 -0
@@ -0,0 +1,3 @@
1
+ const binMeta = "bWV0YRCJEgAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lLFJ1bnRpbWVDYWxsAAHUGFN5c3RlbQQAJAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTeXN0ZW0sIFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAQAHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhY2hhaW5TeXN0ZW0sIFJ1bnRpbWU+AAEAJFRpbWVzdGFtcAQAsAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUaW1lc3RhbXAsIFJ1bnRpbWU+AAMANFBhcmFjaGFpbkluZm8EALgByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYWNoYWluSW5mbywgUnVudGltZT4ABAAgUHJlaW1hZ2UEALwBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UHJlaW1hZ2UsIFJ1bnRpbWU+AAUAJFNjaGVkdWxlcgQAxAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTY2hlZHVsZXIsIFJ1bnRpbWU+AAYAKFBhcmFtZXRlcnMEANABvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYW1ldGVycywgUnVudGltZT4ABwBQTXVsdGlCbG9ja01pZ3JhdGlvbnMEACUBAeUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tNaWdyYXRpb25zLCBSdW50aW1lPgAIACBCYWxhbmNlcwQATQEBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QmFsYW5jZXMsIFJ1bnRpbWU+AAoAHFZlc3RpbmcEAGUBAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFZlc3RpbmcsIFJ1bnRpbWU+AA4AGENsYWltcwQAbQEBrQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q2xhaW1zLCBSdW50aW1lPgAPAERDb2xsYXRvclNlbGVjdGlvbgQAkQEB2QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q29sbGF0b3JTZWxlY3Rpb24sIFJ1bnRpbWU+ABUAHFNlc3Npb24EAJUBAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFNlc3Npb24sIFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQAoQEBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8WGNtcFF1ZXVlLCBSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQApQEBwQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UG9sa2Fkb3RYY20sIFJ1bnRpbWU+AB8AKEN1bXVsdXNYY20EAKUDAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEN1bXVsdXNYY20sIFJ1bnRpbWU+ACAARFRvS3VzYW1hWGNtUm91dGVyBACpAwHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUb0t1c2FtYVhjbVJvdXRlciwgUnVudGltZT4AIgAwTWVzc2FnZVF1ZXVlBACtAwHFAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNZXNzYWdlUXVldWUsIFJ1bnRpbWU+ACMAYFNub3dicmlkZ2VTeXN0ZW1Gcm9udGVuZAQAtQMB9QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U25vd2JyaWRnZVN5c3RlbUZyb250ZW5kLCBSdW50aW1lPgAkABxVdGlsaXR5BADJAwGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxVdGlsaXR5LCBSdW50aW1lPgAoACBNdWx0aXNpZwQACQQBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlzaWcsIFJ1bnRpbWU+ACkAFFByb3h5BAAVBAGpAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQcm94eSwgUnVudGltZT4AKgAcSW5kaWNlcwQAIQQBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8SW5kaWNlcywgUnVudGltZT4AKwAYQXNzZXRzBAAlBAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBc3NldHMsIFJ1bnRpbWU+ADIAHFVuaXF1ZXMEADEEAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFVuaXF1ZXMsIFJ1bnRpbWU+ADMAEE5mdHMEAEkEAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE5mdHMsIFJ1bnRpbWU+ADQANEZvcmVpZ25Bc3NldHMEAKkEAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEZvcmVpZ25Bc3NldHMsIFJ1bnRpbWU+ADUAKFBvb2xBc3NldHMEALkEAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBvb2xBc3NldHMsIFJ1bnRpbWU+ADYAPEFzc2V0Q29udmVyc2lvbgQAvQQB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QXNzZXRDb252ZXJzaW9uLCBSdW50aW1lPgA3ACBUcmVhc3VyeQQAxQQBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VHJlYXN1cnksIFJ1bnRpbWU+ADwAQENvbnZpY3Rpb25Wb3RpbmcEANEEAdUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvbnZpY3Rpb25Wb3RpbmcsIFJ1bnRpbWU+AD0AJFJlZmVyZW5kYQQA5QQBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UmVmZXJlbmRhLCBSdW50aW1lPgA+ACRXaGl0ZWxpc3QEAPkEAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFdoaXRlbGlzdCwgUnVudGltZT4AQAAgQm91bnRpZXMEAP0EAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEJvdW50aWVzLCBSdW50aW1lPgBBADRDaGlsZEJvdW50aWVzBAABBQHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDaGlsZEJvdW50aWVzLCBSdW50aW1lPgBCACRBc3NldFJhdGUEAAUFAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFzc2V0UmF0ZSwgUnVudGltZT4AQwBITXVsdGlBc3NldEJvdW50aWVzBAANBQHdAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUFzc2V0Qm91bnRpZXMsIFJ1bnRpbWU+AEQADERhcAQAEQUBoQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8RGFwLCBSdW50aW1lPgBFAEhTdGF0ZVRyaWVNaWdyYXRpb24EACkFAd0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN0YXRlVHJpZU1pZ3JhdGlvbiwgUnVudGltZT4ARgA8Tm9taW5hdGlvblBvb2xzBABBBQHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxOb21pbmF0aW9uUG9vbHMsIFJ1bnRpbWU+AFAAJFZvdGVyTGlzdAQAdQUBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Vm90ZXJMaXN0LCBSdW50aW1lPgBSADxTdGFraW5nUmNDbGllbnQEAHkFAdEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN0YWtpbmdSY0NsaWVudCwgUnVudGltZT4AVABITXVsdGlCbG9ja0VsZWN0aW9uBACdBQHdAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUJsb2NrRWxlY3Rpb24sIFJ1bnRpbWU+AFUAaE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyBADRBQH9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUJsb2NrRWxlY3Rpb25WZXJpZmllciwgUnVudGltZT4AVgBoTXVsdGlCbG9ja0VsZWN0aW9uVW5zaWduZWQEANUFAf0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tFbGVjdGlvblVuc2lnbmVkLCBSdW50aW1lPgBXAGBNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQEAK0GAfUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZCwgUnVudGltZT4AWAAcU3Rha2luZwQAtQYBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3Rha2luZywgUnVudGltZT4AWQBETWVtYmVyc1N1YnNjcmliZXIEAAEHAdkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1lbWJlcnNTdWJzY3JpYmVyLCBSdW50aW1lPgBhADRBbGlhc0FjY291bnRzBAAlBwHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBbGlhc0FjY291bnRzLCBSdW50aW1lPgBiABBQZ2FzBAAtBwGlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQZ2FzLCBSdW50aW1lPgBjABhSZXZpdmUEADEHAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFJldml2ZSwgUnVudGltZT4AZAAwRG90bnNHYXRld2F5BABFBwHFAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxEb3Ruc0dhdGV3YXksIFJ1bnRpbWU+AJgAEFN1ZG8EAFkHAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN1ZG8sIFJ1bnRpbWU+APsAACQMMGZyYW1lX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABLBhyZW1hcmsEARhyZW1hcmsYARxWZWM8dTg+AAAMaE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsuAIhDYW4gYmUgZXhlY3V0ZWQgYnkgZXZlcnkgYG9yaWdpbmAuOHNldF9oZWFwX3BhZ2VzBAEUcGFnZXMoAQx1NjQAAQT4U2V0IHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIFdlYkFzc2VtYmx5IGVudmlyb25tZW50J3MgaGVhcC4gc2V0X2NvZGUEARBjb2RlGAEcVmVjPHU4PgACBGRTZXQgdGhlIG5ldyBydW50aW1lIGNvZGUuXHNldF9jb2RlX3dpdGhvdXRfY2hlY2tzBAEQY29kZRgBHFZlYzx1OD4AAxAZAVNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZSB3aXRob3V0IGRvaW5nIGFueSBjaGVja3Mgb2YgdGhlIGdpdmVuIGBjb2RlYC4AUQFOb3RlIHRoYXQgcnVudGltZSB1cGdyYWRlcyB3aWxsIG5vdCBydW4gaWYgdGhpcyBpcyBjYWxsZWQgd2l0aCBhIG5vdC1pbmNyZWFzaW5nIHNwZWMgdmVyc2lvbiEsc2V0X3N0b3JhZ2UEARRpdGVtcywBNFZlYzxLZXlWYWx1ZT4ABARoU2V0IHNvbWUgaXRlbXMgb2Ygc3RvcmFnZS4wa2lsbF9zdG9yYWdlBAEQa2V5czQBIFZlYzxLZXk+AAUEdEtpbGwgc29tZSBpdGVtcyBmcm9tIHN0b3JhZ2UuLGtpbGxfcHJlZml4CAEYcHJlZml4GAEMS2V5AAEcc3Via2V5czgBDHUzMgAGEBEBS2lsbCBhbGwgc3RvcmFnZSBpdGVtcyB3aXRoIGEga2V5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeC4AOQEqKk5PVEU6KiogV2UgcmVseSBvbiB0aGUgUm9vdCBvcmlnaW4gdG8gcHJvdmlkZSB1cyB0aGUgbnVtYmVyIG9mIHN1YmtleXMgdW5kZXI9AXRoZSBwcmVmaXggd2UgYXJlIHJlbW92aW5nIHRvIGFjY3VyYXRlbHkgY2FsY3VsYXRlIHRoZSB3ZWlnaHQgb2YgdGhpcyBmdW5jdGlvbi5EcmVtYXJrX3dpdGhfZXZlbnQEARhyZW1hcmsYARxWZWM8dTg+AAcEpE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsgYW5kIGVtaXQgZXZlbnQuRGF1dGhvcml6ZV91cGdyYWRlBAEkY29kZV9oYXNoPAEcVDo6SGFzaAAJEGEBQXV0aG9yaXplIGFuIHVwZ3JhZGUgdG8gYSBnaXZlbiBgY29kZV9oYXNoYCBmb3IgdGhlIHJ1bnRpbWUuIFRoZSBydW50aW1lIGNhbiBiZSBzdXBwbGllZBhsYXRlci4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi6AYXV0aG9yaXplX3VwZ3JhZGVfd2l0aG91dF9jaGVja3MEASRjb2RlX2hhc2g8ARxUOjpIYXNoAAogYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgBdAVdBUk5JTkc6IFRoaXMgYXV0aG9yaXplcyBhbiB1cGdyYWRlIHRoYXQgd2lsbCB0YWtlIHBsYWNlIHdpdGhvdXQgYW55IHNhZmV0eSBjaGVja3MsIGZvclkBZXhhbXBsZSB0aGF0IHRoZSBzcGVjIG5hbWUgcmVtYWlucyB0aGUgc2FtZSBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaW5jcmVhc2VzLiBOb3TwcmVjb21tZW5kZWQgZm9yIG5vcm1hbCB1c2UuIFVzZSBgYXV0aG9yaXplX3VwZ3JhZGVgIGluc3RlYWQuAHxUaGlzIGNhbGwgcmVxdWlyZXMgUm9vdCBvcmlnaW4uYGFwcGx5X2F1dGhvcml6ZWRfdXBncmFkZQQBEGNvZGUYARxWZWM8dTg+AAskVQFQcm92aWRlIHRoZSBwcmVpbWFnZSAocnVudGltZSBiaW5hcnkpIGBjb2RlYCBmb3IgYW4gdXBncmFkZSB0aGF0IGhhcyBiZWVuIGF1dGhvcml6ZWQuAEkBSWYgdGhlIGF1dGhvcml6YXRpb24gcmVxdWlyZWQgYSB2ZXJzaW9uIGNoZWNrLCB0aGlzIGNhbGwgd2lsbCBlbnN1cmUgdGhlIHNwZWMgbmFtZehyZW1haW5zIHVuY2hhbmdlZCBhbmQgdGhhdCB0aGUgc3BlYyB2ZXJzaW9uIGhhcyBpbmNyZWFzZWQuAFkBRGVwZW5kaW5nIG9uIHRoZSBydW50aW1lJ3MgYE9uU2V0Q29kZWAgY29uZmlndXJhdGlvbiwgdGhpcyBmdW5jdGlvbiBtYXkgZGlyZWN0bHkgYXBwbHkRAXRoZSBuZXcgYGNvZGVgIGluIHRoZSBzYW1lIGJsb2NrIG9yIGF0dGVtcHQgdG8gc2NoZWR1bGUgdGhlIHVwZ3JhZGUuAGBBbGwgb3JpZ2lucyBhcmUgYWxsb3dlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKAAABQYALAAAAjAAMAAABAgYGAA0AAACGAA4AAAFBQA8CDxwcmltaXRpdmVfdHlwZXMQSDI1NgAABAAIASBbdTg7IDMyXQAAQAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABCExzZXRfdmFsaWRhdGlvbl9kYXRhCAEQZGF0YUQBaEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAFUaW5ib3VuZF9tZXNzYWdlc19kYXRhfAFMSW5ib3VuZE1lc3NhZ2VzRGF0YQAAJIBTZXQgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBkYXRhLgBBAVRoaXMgc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIHBlciBibG9jay4gSXQgd2lsbCBwYW5pYyBhdCB0aGUgZmluYWxpemF0aW9uiHBoYXNlIGlmIHRoZSBjYWxsIHdhcyBub3QgaW52b2tlZC4A0FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBJbmhlcmVudGAAIQFBcyBhIHNpZGUgZWZmZWN0LCB0aGlzIGZ1bmN0aW9uIHVwZ3JhZGVzIHRoZSBjdXJyZW50IHZhbGlkYXRpb24gZnVuY3Rpb26EaWYgdGhlIGFwcHJvcHJpYXRlIHRpbWUgaGFzIGNvbWUuYHN1ZG9fc2VuZF91cHdhcmRfbWVzc2FnZQQBHG1lc3NhZ2UYATRVcHdhcmRNZXNzYWdlAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50aEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAAQATx2YWxpZGF0aW9uX2RhdGFIAVxQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YQABRHJlbGF5X2NoYWluX3N0YXRlUAFUc3BfdHJpZTo6U3RvcmFnZVByb29mAAFgcmVsYXlfcGFyZW50X2Rlc2NlbmRhbnRzWAFAVmVjPFJlbGF5SGVhZGVyPgABQGNvbGxhdG9yX3BlZXJfaWR0AVhPcHRpb248QXBwcm92ZWRQZWVySWQ+AABIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5XFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhCARIATwETgE4ABABLHBhcmVudF9oZWFkTAEgSGVhZERhdGEAAUxyZWxheV9wYXJlbnRfbnVtYmVyOAEETgABZHJlbGF5X3BhcmVudF9zdG9yYWdlX3Jvb3Q8AQRIAAEwbWF4X3Bvdl9zaXplOAEMdTMyAABMDHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzIEhlYWREYXRhAAAEABgBHFZlYzx1OD4AAFAMHHNwX3RyaWU0c3RvcmFnZV9wcm9vZjBTdG9yYWdlUHJvb2YAAAQBKHRyaWVfbm9kZXNUAURCVHJlZVNldDxWZWM8dTg+PgAAVAQgQlRyZWVTZXQEBFQBGAAEADQAAABYAAACXABcEChzcF9ydW50aW1lHGdlbmVyaWMYaGVhZGVyGEhlYWRlcggYTnVtYmVyATgQSGFzaAAAFAEscGFyZW50X2hhc2g8ATBIYXNoOjpPdXRwdXQAARhudW1iZXJgARhOdW1iZXIAAShzdGF0ZV9yb290PAEwSGFzaDo6T3V0cHV0AAE8ZXh0cmluc2ljc19yb290PAEwSGFzaDo6T3V0cHV0AAEYZGlnZXN0ZAEYRGlnZXN0AABgAAAGOABkEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0GERpZ2VzdAAABAEQbG9nc2gBPFZlYzxEaWdlc3RJdGVtPgAAaAAAAmwAbBAoc3BfcnVudGltZRxnZW5lcmljGGRpZ2VzdChEaWdlc3RJdGVtAAEUKFByZVJ1bnRpbWUIAHABRENvbnNlbnN1c0VuZ2luZUlkAAAYARxWZWM8dTg+AAYAJENvbnNlbnN1cwgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABAAQU2VhbAgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABQAUT3RoZXIEABgBHFZlYzx1OD4AAABkUnVudGltZUVudmlyb25tZW50VXBkYXRlZAAIAABwAAADBAAAAAwAdAQYT3B0aW9uBARUAXgBCBBOb25lAAAAEFNvbWUEAHgAAAEAAHgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAB8DHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudExJbmJvdW5kTWVzc2FnZXNEYXRhAAAIAURkb3dud2FyZF9tZXNzYWdlc4ABfEFicmlkZ2VkSW5ib3VuZERvd253YXJkTWVzc2FnZXMAAUxob3Jpem9udGFsX21lc3NhZ2VzlAFsQWJyaWRnZWRJbmJvdW5kSHJtcE1lc3NhZ2VzAACADHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudIRBYnJpZGdlZEluYm91bmRNZXNzYWdlc0NvbGxlY3Rpb24EHE1lc3NhZ2UBhAAIATRmdWxsX21lc3NhZ2VziAEwVmVjPE1lc3NhZ2U+AAE8aGFzaGVkX21lc3NhZ2VzjAF8VmVjPE1lc3NhZ2U6OkNvbXByZXNzZWRNZXNzYWdlPgAAhAhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzWEluYm91bmREb3dud2FyZE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEMbXNnGAE8RG93bndhcmRNZXNzYWdlAACIAAAChACMAAACkACQCJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50NEhhc2hlZE1lc3NhZ2UAAAgBHHNlbnRfYXQ4AVRSZWxheUNoYWluQmxvY2tOdW1iZXIAASBtc2dfaGFzaDwBNHNwX2NvcmU6OkgyNTYAAJQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50hEFicmlkZ2VkSW5ib3VuZE1lc3NhZ2VzQ29sbGVjdGlvbgQcTWVzc2FnZQGYAAgBNGZ1bGxfbWVzc2FnZXOkATBWZWM8TWVzc2FnZT4AATxoYXNoZWRfbWVzc2FnZXOoAXxWZWM8TWVzc2FnZTo6Q29tcHJlc3NlZE1lc3NhZ2U+AACYAAAECJygAJwMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMISWQAAAQAOAEMdTMyAACgCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNISW5ib3VuZEhybXBNZXNzYWdlBCxCbG9ja051bWJlcgE4AAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AACkAAACmACoAAACrACsAAAECJyQALAMQHBhbGxldF90aW1lc3RhbXAYcGFsbGV0EENhbGwEBFQAAQQMc2V0BAEMbm93tAEkVDo6TW9tZW50AABMVFNldCB0aGUgY3VycmVudCB0aW1lLgBVAVRoaXMgY2FsbCBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb27UcGhhc2UsIGlmIHRoaXMgY2FsbCBoYXNuJ3QgYmVlbiBpbnZva2VkIGJ5IHRoYXQgdGltZS4AQQFUaGUgdGltZXN0YW1wIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gdGhlIHByZXZpb3VzIG9uZSBieSB0aGUgYW1vdW50IHNwZWNpZmllZCBieWhbYENvbmZpZzo6TWluaW11bVBlcmlvZGBdLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBRAVRoaXMgZGlzcGF0Y2ggY2xhc3MgaXMgX01hbmRhdG9yeV8gdG8gZW5zdXJlIGl0IGdldHMgZXhlY3V0ZWQgaW4gdGhlIGJsb2NrLiBCZSBhd2FyZVEBdGhhdCBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBvZiB0aGlzIGNhbGwgY291bGQgcmVzdWx0IGV4aGF1c3RpbmcgdGhlIHJlc291cmNlcyBpbiBhhGJsb2NrIHRvIGV4ZWN1dGUgYW55IG90aGVyIGNhbGxzLgA0IyMgQ29tcGxleGl0eTEBLSBgTygxKWAgKE5vdGUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgb2YgYE9uVGltZXN0YW1wU2V0YCBtdXN0IGFsc28gYmUgYE8oMSlgKVUBLSAxIHN0b3JhZ2UgcmVhZCBhbmQgMSBzdG9yYWdlIG11dGF0aW9uIChjb2RlYyBgTygxKWAgYmVjYXVzZSBvZiBgRGlkVXBkYXRlOjp0YWtlYCBpbkAgIGBvbl9maW5hbGl6ZWAp1C0gMSBldmVudCBoYW5kbGVyIGBvbl90aW1lc3RhbXBfc2V0YC4gTXVzdCBiZSBgTygxKWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrQAAAYoALgMWHN0YWdpbmdfcGFyYWNoYWluX2luZm8YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvAw8cGFsbGV0X3ByZWltYWdlGHBhbGxldBBDYWxsBARUAAEUNG5vdGVfcHJlaW1hZ2UEARRieXRlcxgBHFZlYzx1OD4AABB0UmVnaXN0ZXIgYSBwcmVpbWFnZSBvbi1jaGFpbi4AVQFJZiB0aGUgcHJlaW1hZ2Ugd2FzIHByZXZpb3VzbHkgcmVxdWVzdGVkLCBubyBmZWVzIG9yIGRlcG9zaXRzIGFyZSB0YWtlbiBmb3IgcHJvdmlkaW5nVQF0aGUgcHJlaW1hZ2UuIE90aGVyd2lzZSwgYSBkZXBvc2l0IGlzIHRha2VuIHByb3BvcnRpb25hbCB0byB0aGUgc2l6ZSBvZiB0aGUgcHJlaW1hZ2UuPHVubm90ZV9wcmVpbWFnZQQBEGhhc2g8ARxUOjpIYXNoAAEY3ENsZWFyIGFuIHVucmVxdWVzdGVkIHByZWltYWdlIGZyb20gdGhlIHJ1bnRpbWUgc3RvcmFnZS4A/ElmIGBsZW5gIGlzIHByb3ZpZGVkLCB0aGVuIGl0IHdpbGwgYmUgYSBtdWNoIGNoZWFwZXIgb3BlcmF0aW9uLgABAS0gYGhhc2hgOiBUaGUgaGFzaCBvZiB0aGUgcHJlaW1hZ2UgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzdG9yZS64LSBgbGVuYDogVGhlIGxlbmd0aCBvZiB0aGUgcHJlaW1hZ2Ugb2YgYGhhc2hgLkByZXF1ZXN0X3ByZWltYWdlBAEQaGFzaDwBHFQ6Okhhc2gAAhBBAVJlcXVlc3QgYSBwcmVpbWFnZSBiZSB1cGxvYWRlZCB0byB0aGUgY2hhaW4gd2l0aG91dCBwYXlpbmcgYW55IGZlZXMgb3IgZGVwb3NpdHMuAFUBSWYgdGhlIHByZWltYWdlIHJlcXVlc3RzIGhhcyBhbHJlYWR5IGJlZW4gcHJvdmlkZWQgb24tY2hhaW4sIHdlIHVucmVzZXJ2ZSBhbnkgZGVwb3NpdDkBYSB1c2VyIG1heSBoYXZlIHBhaWQsIGFuZCB0YWtlIHRoZSBjb250cm9sIG9mIHRoZSBwcmVpbWFnZSBvdXQgb2YgdGhlaXIgaGFuZHMuSHVucmVxdWVzdF9wcmVpbWFnZQQBEGhhc2g8ARxUOjpIYXNoAAMMvENsZWFyIGEgcHJldmlvdXNseSBtYWRlIHJlcXVlc3QgZm9yIGEgcHJlaW1hZ2UuAC0BTk9URTogVEhJUyBNVVNUIE5PVCBCRSBDQUxMRUQgT04gYGhhc2hgIE1PUkUgVElNRVMgVEhBTiBgcmVxdWVzdF9wcmVpbWFnZWAuOGVuc3VyZV91cGRhdGVkBAEYaGFzaGVzwAEwVmVjPFQ6Okhhc2g+AAQMvEVuc3VyZSB0aGF0IHRoZSBidWxrIG9mIHByZS1pbWFnZXMgaXMgdXBncmFkZWQuAD0BVGhlIGNhbGxlciBwYXlzIG5vIGZlZSBpZiBhdCBsZWFzdCA5MCUgb2YgcHJlLWltYWdlcyB3ZXJlIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7AAAACPADEDEBwYWxsZXRfc2NoZWR1bGVyGHBhbGxldBBDYWxsBARUAAEoIHNjaGVkdWxlEAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAE4bWF5YmVfcGVyaW9kaWPIAaxPcHRpb248c2NoZWR1bGU6OlBlcmlvZDxCbG9ja051bWJlckZvcjxUPj4+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAABHBBbm9ueW1vdXNseSBzY2hlZHVsZSBhIHRhc2suGGNhbmNlbAgBEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4OAEMdTMyAAEQYQFDYW5jZWwgYSBzY2hlZHVsZWQgdGFzayAobmFtZWQgb3IgYW5vbnltb3VzKSwgYnkgcHJvdmlkaW5nIHRoZSBibG9jayBpdCBpcyBzY2hlZHVsZWQgZm9yGQFleGVjdXRpb24gaW4sIGFzIHdlbGwgYXMgdGhlIGluZGV4IG9mIHRoZSB0YXNrIGluIHRoYXQgYmxvY2sncyBhZ2VuZGEuADUBSW4gdGhlIGNhc2Ugb2YgYSBuYW1lZCB0YXNrLCBpdCB3aWxsIHJlbW92ZSBpdCBmcm9tIHRoZSBsb29rdXAgdGFibGUgYXMgd2VsbC44c2NoZWR1bGVfbmFtZWQUAQhpZAgBIFRhc2tOYW1lAAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAE4bWF5YmVfcGVyaW9kaWPIAaxPcHRpb248c2NoZWR1bGU6OlBlcmlvZDxCbG9ja051bWJlckZvcjxUPj4+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgACBFhTY2hlZHVsZSBhIG5hbWVkIHRhc2suMGNhbmNlbF9uYW1lZAQBCGlkCAEgVGFza05hbWUAAwR4Q2FuY2VsIGEgbmFtZWQgc2NoZWR1bGVkIHRhc2suOHNjaGVkdWxlX2FmdGVyEAEUYWZ0ZXI4AURCbG9ja051bWJlckZvcjxUPgABOG1heWJlX3BlcmlvZGljyAGsT3B0aW9uPHNjaGVkdWxlOjpQZXJpb2Q8QmxvY2tOdW1iZXJGb3I8VD4+PgABIHByaW9yaXR5DAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABASoQW5vbnltb3VzbHkgc2NoZWR1bGUgYSB0YXNrIGFmdGVyIGEgZGVsYXkuUHNjaGVkdWxlX25hbWVkX2FmdGVyFAEIaWQIASBUYXNrTmFtZQABFGFmdGVyOAFEQmxvY2tOdW1iZXJGb3I8VD4AAThtYXliZV9wZXJpb2RpY8gBrE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASBwcmlvcml0eQwBSHNjaGVkdWxlOjpQcmlvcml0eQABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAUEkFNjaGVkdWxlIGEgbmFtZWQgdGFzayBhZnRlciBhIGRlbGF5LiRzZXRfcmV0cnkMARB0YXNrzAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEccmV0cmllcwwBCHU4AAEYcGVyaW9kOAFEQmxvY2tOdW1iZXJGb3I8VD4ABjhZAVNldCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIGEgdGFzayBzbyB0aGF0LCBpbiBjYXNlIGl0cyBzY2hlZHVsZWQgcnVuIGZhaWxzLCBpdCB3aWxsVQFiZSByZXRyaWVkIGFmdGVyIGBwZXJpb2RgIGJsb2NrcywgZm9yIGEgdG90YWwgYW1vdW50IG9mIGByZXRyaWVzYCByZXRyaWVzIG9yIHVudGlsIGl0JHN1Y2NlZWRzLgBVAVRhc2tzIHdoaWNoIG5lZWQgdG8gYmUgc2NoZWR1bGVkIGZvciBhIHJldHJ5IGFyZSBzdGlsbCBzdWJqZWN0IHRvIHdlaWdodCBtZXRlcmluZyBhbmRRAWFnZW5kYSBzcGFjZSwgc2FtZSBhcyBhIHJlZ3VsYXIgdGFzay4gSWYgYSBwZXJpb2RpYyB0YXNrIGZhaWxzLCBpdCB3aWxsIGJlIHNjaGVkdWxlZJBub3JtYWxseSB3aGlsZSB0aGUgdGFzayBpcyByZXRyeWluZy4AUQFUYXNrcyBzY2hlZHVsZWQgYXMgYSByZXN1bHQgb2YgYSByZXRyeSBmb3IgYSBwZXJpb2RpYyB0YXNrIGFyZSB1bm5hbWVkLCBub24tcGVyaW9kaWM9AWNsb25lcyBvZiB0aGUgb3JpZ2luYWwgdGFzay4gVGhlaXIgcmV0cnkgY29uZmlndXJhdGlvbiB3aWxsIGJlIGRlcml2ZWQgZnJvbSB0aGVNAW9yaWdpbmFsIHRhc2sncyBjb25maWd1cmF0aW9uLCBidXQgd2lsbCBoYXZlIGEgbG93ZXIgdmFsdWUgZm9yIGByZW1haW5pbmdgIHRoYW4gdGhlZG9yaWdpbmFsIGB0b3RhbF9yZXRyaWVzYC4ALQFUaGlzIGNhbGwgKipjYW5ub3QqKiBiZSB1c2VkIHRvIHNldCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIGEgbmFtZWQgdGFzay48c2V0X3JldHJ5X25hbWVkDAEIaWQIASBUYXNrTmFtZQABHHJldHJpZXMMAQh1OAABGHBlcmlvZDgBREJsb2NrTnVtYmVyRm9yPFQ+AAc4XQFTZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBhIG5hbWVkIHRhc2sgc28gdGhhdCwgaW4gY2FzZSBpdHMgc2NoZWR1bGVkIHJ1biBmYWlscywgaXRdAXdpbGwgYmUgcmV0cmllZCBhZnRlciBgcGVyaW9kYCBibG9ja3MsIGZvciBhIHRvdGFsIGFtb3VudCBvZiBgcmV0cmllc2AgcmV0cmllcyBvciB1bnRpbDBpdCBzdWNjZWVkcy4AVQFUYXNrcyB3aGljaCBuZWVkIHRvIGJlIHNjaGVkdWxlZCBmb3IgYSByZXRyeSBhcmUgc3RpbGwgc3ViamVjdCB0byB3ZWlnaHQgbWV0ZXJpbmcgYW5kUQFhZ2VuZGEgc3BhY2UsIHNhbWUgYXMgYSByZWd1bGFyIHRhc2suIElmIGEgcGVyaW9kaWMgdGFzayBmYWlscywgaXQgd2lsbCBiZSBzY2hlZHVsZWSQbm9ybWFsbHkgd2hpbGUgdGhlIHRhc2sgaXMgcmV0cnlpbmcuAFEBVGFza3Mgc2NoZWR1bGVkIGFzIGEgcmVzdWx0IG9mIGEgcmV0cnkgZm9yIGEgcGVyaW9kaWMgdGFzayBhcmUgdW5uYW1lZCwgbm9uLXBlcmlvZGljPQFjbG9uZXMgb2YgdGhlIG9yaWdpbmFsIHRhc2suIFRoZWlyIHJldHJ5IGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBkZXJpdmVkIGZyb20gdGhlTQFvcmlnaW5hbCB0YXNrJ3MgY29uZmlndXJhdGlvbiwgYnV0IHdpbGwgaGF2ZSBhIGxvd2VyIHZhbHVlIGZvciBgcmVtYWluaW5nYCB0aGFuIHRoZWRvcmlnaW5hbCBgdG90YWxfcmV0cmllc2AuAA0BVGhpcyBpcyB0aGUgb25seSB3YXkgdG8gc2V0IGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3IgYSBuYW1lZCB0YXNrLjBjYW5jZWxfcmV0cnkEARB0YXNrzAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAgEqFJlbW92ZXMgdGhlIHJldHJ5IGNvbmZpZ3VyYXRpb24gb2YgYSB0YXNrLkhjYW5jZWxfcmV0cnlfbmFtZWQEAQhpZAgBIFRhc2tOYW1lAAkEvENhbmNlbCB0aGUgcmV0cnkgY29uZmlndXJhdGlvbiBvZiBhIG5hbWVkIHRhc2suBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsgEGE9wdGlvbgQEVAHMAQgQTm9uZQAAABBTb21lBADMAAABAADMAAAECDg4ANAMRHBhbGxldF9wYXJhbWV0ZXJzGHBhbGxldBBDYWxsBARUAAEENHNldF9wYXJhbWV0ZXIEASRrZXlfdmFsdWXUAVBUOjpSdW50aW1lUGFyYW1ldGVycwAAEHRTZXQgdGhlIHZhbHVlIG9mIGEgcGFyYW1ldGVyLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgYEFkbWluT3JpZ2luYCBmb3IgdGhlIGdpdmVuIGBrZXlgLiBWYWx1ZXMgYmWIZGVsZXRlZCBieSBzZXR0aW5nIHRoZW0gdG8gYE5vbmVgLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7UCHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lRFJ1bnRpbWVQYXJhbWV0ZXJzAAEMPFN0YWtpbmdFbGVjdGlvbgQA2AGwZHluYW1pY19wYXJhbXM6OnN0YWtpbmdfZWxlY3Rpb246OlBhcmFtZXRlcnMAAAAkU2NoZWR1bGVyBAABAQGUZHluYW1pY19wYXJhbXM6OnNjaGVkdWxlcjo6UGFyYW1ldGVycwABADBNZXNzYWdlUXVldWUEABUBAaRkeW5hbWljX3BhcmFtczo6bWVzc2FnZV9xdWV1ZTo6UGFyYW1ldGVycwACAADYEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb24oUGFyYW1ldGVycwABHCxTaWduZWRQaGFzZQgA3AEsU2lnbmVkUGhhc2UAAOABTE9wdGlvbjxCbG9ja051bWJlcj4AAABQTWF4U2lnbmVkU3VibWlzc2lvbnMIAOQBUE1heFNpZ25lZFN1Ym1pc3Npb25zAADgASxPcHRpb248dTMyPgABADRVbnNpZ25lZFBoYXNlCADoATRVbnNpZ25lZFBoYXNlAADgAUxPcHRpb248QmxvY2tOdW1iZXI+AAIAKE1pbmVyUGFnZXMIAOwBKE1pbmVyUGFnZXMAAOABLE9wdGlvbjx1MzI+AAMARE1heEVsZWN0aW5nVm90ZXJzCADwAURNYXhFbGVjdGluZ1ZvdGVycwAA4AEsT3B0aW9uPHUzMj4ABABYVGFyZ2V0U25hcHNob3RQZXJCbG9jawgA9AFYVGFyZ2V0U25hcHNob3RQZXJCbG9jawAA4AEsT3B0aW9uPHUzMj4ABQA4TWF4RXJhRHVyYXRpb24IAPgBOE1heEVyYUR1cmF0aW9uAAD8ASxPcHRpb248dTY0PgAGAADcEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb24sU2lnbmVkUGhhc2UAAAAA4AQYT3B0aW9uBARUATgBCBBOb25lAAAAEFNvbWUEADgAAAEAAOQQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvblBNYXhTaWduZWRTdWJtaXNzaW9ucwAAAADoEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb240VW5zaWduZWRQaGFzZQAAAADsEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb24oTWluZXJQYWdlcwAAAADwEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb25ETWF4RWxlY3RpbmdWb3RlcnMAAAAA9BBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uWFRhcmdldFNuYXBzaG90UGVyQmxvY2sAAAAA+BBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uOE1heEVyYUR1cmF0aW9uAAAAAPwEGE9wdGlvbgQEVAEoAQgQTm9uZQAAABBTb21lBAAoAAABAAABARBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtcyRzY2hlZHVsZXIoUGFyYW1ldGVycwABCFBNYXhTY2hlZHVsZWRQZXJCbG9jawgABQEBUE1heFNjaGVkdWxlZFBlckJsb2NrAADgASxPcHRpb248dTMyPgAAADRNYXhpbXVtV2VpZ2h0CAAJAQE0TWF4aW11bVdlaWdodAAADQEBOE9wdGlvbjxXZWlnaHQ+AAEAAAUBEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zJHNjaGVkdWxlclBNYXhTY2hlZHVsZWRQZXJCbG9jawAAAAAJARBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtcyRzY2hlZHVsZXI0TWF4aW11bVdlaWdodAAAAAANAQQYT3B0aW9uBARUAREBAQgQTm9uZQAAABBTb21lBAARAQAAAQAAEQEMKHNwX3dlaWdodHMkd2VpZ2h0X3YyGFdlaWdodAAACAEgcmVmX3RpbWW0AQx1NjQAAShwcm9vZl9zaXpltAEMdTY0AAAVARBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtczRtZXNzYWdlX3F1ZXVlKFBhcmFtZXRlcnMAAQg8TWF4T25Jbml0V2VpZ2h0CAAZAQE8TWF4T25Jbml0V2VpZ2h0AAAdAQFYT3B0aW9uPE9wdGlvbjxXZWlnaHQ+PgAAADxNYXhPbklkbGVXZWlnaHQIACEBATxNYXhPbklkbGVXZWlnaHQAAB0BAVhPcHRpb248T3B0aW9uPFdlaWdodD4+AAEAABkBEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zNG1lc3NhZ2VfcXVldWU8TWF4T25Jbml0V2VpZ2h0AAAAAB0BBBhPcHRpb24EBFQBDQEBCBBOb25lAAAAEFNvbWUEAA0BAAABAAAhARBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtczRtZXNzYWdlX3F1ZXVlPE1heE9uSWRsZVdlaWdodAAAAAAlAQxEcGFsbGV0X21pZ3JhdGlvbnMYcGFsbGV0EENhbGwEBFQAARBAZm9yY2Vfc2V0X2N1cnNvcgQBGGN1cnNvcikBAUxPcHRpb248Q3Vyc29yT2Y8VD4+AAAUXQFBbGxvd3Mgcm9vdCB0byBzZXQgYSBjdXJzb3IgdG8gZm9yY2VmdWxseSBzdGFydCwgc3RvcCBvciBmb3J3YXJkIHRoZSBtaWdyYXRpb24gcHJvY2Vzcy4ASQFTaG91bGQgbm9ybWFsbHkgbm90IGJlIG5lZWRlZCBhbmQgaXMgb25seSBpbiBwbGFjZSBhcyBlbWVyZ2VuY3kgbWVhc3VyZS4gTm90ZSB0aGF0BQFyZXN0YXJ0aW5nIHRoZSBtaWdyYXRpb24gcHJvY2VzcyBpbiB0aGlzIG1hbm5lciB3aWxsIG5vdCBjYWxsIHRoZS0BW2BNaWdyYXRpb25TdGF0dXNIYW5kbGVyOjpzdGFydGVkYF0gaG9vayBvciBlbWl0IGFuIGBVcGdyYWRlU3RhcnRlZGAgZXZlbnQuXGZvcmNlX3NldF9hY3RpdmVfY3Vyc29yDAEUaW5kZXg4AQx1MzIAATBpbm5lcl9jdXJzb3I5AQFYT3B0aW9uPFJhd0N1cnNvck9mPFQ+PgABKHN0YXJ0ZWRfYXTgAWRPcHRpb248QmxvY2tOdW1iZXJGb3I8VD4+AAEYWQFBbGxvd3Mgcm9vdCB0byBzZXQgYW4gYWN0aXZlIGN1cnNvciB0byBmb3JjZWZ1bGx5IHN0YXJ0L2ZvcndhcmQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgBFAVRoaXMgaXMgYW4gZWRnZS1jYXNlIHZlcnNpb24gb2YgW2BTZWxmOjpmb3JjZV9zZXRfY3Vyc29yYF0gdGhhdCBhbGxvd3MgdG8gc2V0IHRoZWEBYHN0YXJ0ZWRfYXRgIHZhbHVlIHRvIHRoZSBuZXh0IGJsb2NrIG51bWJlci4gT3RoZXJ3aXNlIHRoaXMgd291bGQgbm90IGJlIHBvc3NpYmxlLCBzaW5jZUUBYGZvcmNlX3NldF9jdXJzb3JgIHRha2VzIGFuIGFic29sdXRlIGJsb2NrIG51bWJlci4gU2V0dGluZyBgc3RhcnRlZF9hdGAgdG8gYE5vbmVgAQFpbmRpY2F0ZXMgdGhhdCB0aGUgY3VycmVudCBibG9jayBudW1iZXIgcGx1cyBvbmUgc2hvdWxkIGJlIHVzZWQuSGZvcmNlX29uYm9hcmRfbWJtcwACEKBGb3JjZXMgdGhlIG9uYm9hcmRpbmcgb2YgdGhlIG1pZ3JhdGlvbnMuAF0BVGhpcyBwcm9jZXNzIGhhcHBlbnMgYXV0b21hdGljYWxseSBvbiBhIHJ1bnRpbWUgdXBncmFkZS4gSXQgaXMgaW4gcGxhY2UgYXMgYW4gZW1lcmdlbmN5/G1lYXN1cmVtZW50LiBUaGUgY3Vyc29yIG5lZWRzIHRvIGJlIGBOb25lYCBmb3IgdGhpcyB0byBzdWNjZWVkLjhjbGVhcl9oaXN0b3JpYwQBIHNlbGVjdG9yPQEBoEhpc3RvcmljQ2xlYW51cFNlbGVjdG9yPElkZW50aWZpZXJPZjxUPj4AAxRoQ2xlYXJzIHRoZSBgSGlzdG9yaWNgIHNldC4ADQFgbWFwX2N1cnNvcmAgbXVzdCBiZSBzZXQgdG8gdGhlIGxhc3QgdmFsdWUgdGhhdCB3YXMgcmV0dXJuZWQgYnkgdGhlXQFgSGlzdG9yaWNDbGVhcmVkYCBldmVudC4gVGhlIGZpcnN0IHRpbWUgYE5vbmVgIGNhbiBiZSB1c2VkLiBgbGltaXRgIG11c3QgYmUgY2hvc2VuIGluIGGod2F5IHRoYXQgd2lsbCByZXN1bHQgaW4gYSBzZW5zaWJsZSB3ZWlnaHQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLikBBBhPcHRpb24EBFQBLQEBCBBOb25lAAAAEFNvbWUEAC0BAAABAAAtAQhEcGFsbGV0X21pZ3JhdGlvbnM8TWlncmF0aW9uQ3Vyc29yCBhDdXJzb3IBMQEsQmxvY2tOdW1iZXIBOAEIGEFjdGl2ZQQANQEBhEFjdGl2ZUN1cnNvcjxDdXJzb3IsIEJsb2NrTnVtYmVyPgAAABRTdHVjawABAAAxAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AADUBCERwYWxsZXRfbWlncmF0aW9uczBBY3RpdmVDdXJzb3IIGEN1cnNvcgExASxCbG9ja051bWJlcgE4AAwBFGluZGV4OAEMdTMyAAEwaW5uZXJfY3Vyc29yOQEBOE9wdGlvbjxDdXJzb3I+AAEoc3RhcnRlZF9hdDgBLEJsb2NrTnVtYmVyAAA5AQQYT3B0aW9uBARUATEBAQgQTm9uZQAAABBTb21lBAAxAQAAAQAAPQEIRHBhbGxldF9taWdyYXRpb25zXEhpc3RvcmljQ2xlYW51cFNlbGVjdG9yBAhJZAFBAQEIIFNwZWNpZmljBABFAQEcVmVjPElkPgAAACBXaWxkY2FyZAgBFGxpbWl04AEsT3B0aW9uPHUzMj4AATxwcmV2aW91c19jdXJzb3JJAQE8T3B0aW9uPFZlYzx1OD4+AAEAAEEBDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAARQEAAAJBAQBJAQQYT3B0aW9uBARUARgBCBBOb25lAAAAEFNvbWUEABgAAAEAAE0BDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0EENhbGwIBFQABEkAASRQdHJhbnNmZXJfYWxsb3dfZGVhdGgIARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZVEBAShUOjpCYWxhbmNlAAAc1FRyYW5zZmVyIHNvbWUgbGlxdWlkIGZyZWUgYmFsYW5jZSB0byBhbm90aGVyIGFjY291bnQuADUBYHRyYW5zZmVyX2FsbG93X2RlYXRoYCB3aWxsIHNldCB0aGUgYEZyZWVCYWxhbmNlYCBvZiB0aGUgc2VuZGVyIGFuZCByZWNlaXZlci4RAUlmIHRoZSBzZW5kZXIncyBhY2NvdW50IGlzIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0IGFzIGEgcmVzdWx0sG9mIHRoZSB0cmFuc2ZlciwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIHRyYW5zYWN0b3IuOGZvcmNlX3RyYW5zZmVyDAEYc291cmNlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZVEBAShUOjpCYWxhbmNlAAIIYQFFeGFjdGx5IGFzIGB0cmFuc2Zlcl9hbGxvd19kZWF0aGAsIGV4Y2VwdCB0aGUgb3JpZ2luIG11c3QgYmUgcm9vdCBhbmQgdGhlIHNvdXJjZSBhY2NvdW50RG1heSBiZSBzcGVjaWZpZWQuTHRyYW5zZmVyX2tlZXBfYWxpdmUIARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZVEBAShUOjpCYWxhbmNlAAMYWQFTYW1lIGFzIHRoZSBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF0gY2FsbCwgYnV0IHdpdGggYSBjaGVjayB0aGF0IHRoZSB0cmFuc2ZlciB3aWxsIG5vdGBraWxsIHRoZSBvcmlnaW4gYWNjb3VudC4A6Dk5JSBvZiB0aGUgdGltZSB5b3Ugd2FudCBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF0gaW5zdGVhZC4A8FtgdHJhbnNmZXJfYWxsb3dfZGVhdGhgXTogc3RydWN0LlBhbGxldC5odG1sI21ldGhvZC50cmFuc2ZlcjB0cmFuc2Zlcl9hbGwIARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShrZWVwX2FsaXZlWQEBEGJvb2wABDwFAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXRhAWFueSBsb2NrZWQsIHJlc2VydmVkLCBvciBleGlzdGVudGlhbCBkZXBvc2l0cyAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgCgLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFjY291bnQgdG8gYmUga2lsbGVkIChmYWxzZSksIG9yWQEgIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0LCB3aGljaCB3aWxsIGd1YXJhbnRlZSB0b5wgIGtlZXAgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlICh0cnVlKS48Zm9yY2VfdW5yZXNlcnZlCAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAFDLBVbnJlc2VydmUgc29tZSBiYWxhbmNlIGZyb20gYSB1c2VyIGJ5IGZvcmNlLgBsQ2FuIG9ubHkgYmUgY2FsbGVkIGJ5IFJPT1QuQHVwZ3JhZGVfYWNjb3VudHMEAQx3aG9dAQFEVmVjPFQ6OkFjY291bnRJZD4ABiBwVXBncmFkZSBhIHNwZWNpZmllZCBhY2NvdW50LgB0LSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYC6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdXBncmFkZWQuAFUBVGhpcyB3aWxsIHdhaXZlIHRoZSB0cmFuc2FjdGlvbiBmZWUgaWYgYXQgbGVhc3QgYWxsIGJ1dCAxMCUgb2YgdGhlIGFjY291bnRzIG5lZWRlZCB0b0EBYmUgdXBncmFkZWQuIChXZSBsZXQgc29tZSBub3QgaGF2ZSB0byBiZSB1cGdyYWRlZCBqdXN0IGluIG9yZGVyIHRvIGFsbG93IGZvciB0aGVYcG9zc2liaWxpdHkgb2YgY2h1cm4pLkRmb3JjZV9zZXRfYmFsYW5jZQgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgbmV3X2ZyZWVRAQEoVDo6QmFsYW5jZQAIDKxTZXQgdGhlIHJlZ3VsYXIgYmFsYW5jZSBvZiBhIGdpdmVuIGFjY291bnQuALBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgaXMgYHJvb3RgLmxmb3JjZV9hZGp1c3RfdG90YWxfaXNzdWFuY2UIASRkaXJlY3Rpb25hAQFMQWRqdXN0bWVudERpcmVjdGlvbgABFGRlbHRhUQEBKFQ6OkJhbGFuY2UACRS4QWRqdXN0IHRoZSB0b3RhbCBpc3N1YW5jZSBpbiBhIHNhdHVyYXRpbmcgd2F5LgD8Q2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHJvb3QgYW5kIGFsd2F5cyBuZWVkcyBhIHBvc2l0aXZlIGBkZWx0YWAuACQjIEV4YW1wbGUQYnVybggBFHZhbHVlUQEBKFQ6OkJhbGFuY2UAAShrZWVwX2FsaXZlWQEBEGJvb2wAChz8QnVybiB0aGUgc3BlY2lmaWVkIGxpcXVpZCBmcmVlIGJhbGFuY2UgZnJvbSB0aGUgb3JpZ2luIGFjY291bnQuACUBSWYgdGhlIG9yaWdpbidzIGFjY291bnQgZW5kcyB1cCBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCBhcyBhIHJlc3VsdAkBb2YgdGhlIGJ1cm4gYW5kIGBrZWVwX2FsaXZlYCBpcyBmYWxzZSwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuAFEBVW5saWtlIHNlbmRpbmcgZnVuZHMgdG8gYSBfYnVybl8gYWRkcmVzcywgd2hpY2ggbWVyZWx5IG1ha2VzIHRoZSBmdW5kcyBpbmFjY2Vzc2libGUsIQF0aGlzIGBidXJuYCBvcGVyYXRpb24gd2lsbCByZWR1Y2UgdG90YWwgaXNzdWFuY2UgYnkgdGhlIGFtb3VudCBfYnVybmVkXy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuUQEAAAZVAQBVAQAABQcAWQEAAAUAAF0BAAACBABhAQw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzTEFkanVzdG1lbnREaXJlY3Rpb24AAQggSW5jcmVhc2UAAAAgRGVjcmVhc2UAAQAAZQEMOHBhbGxldF92ZXN0aW5nGHBhbGxldBBDYWxsBARUAAEYEHZlc3QAACS4VW5sb2NrIGFueSB2ZXN0ZWQgZnVuZHMgb2YgdGhlIHNlbmRlciBhY2NvdW50LgBdAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2VuZGVyIG11c3QgaGF2ZSBmdW5kcyBzdGlsbGRsb2NrZWQgdW5kZXIgdGhpcyBwYWxsZXQuANBFbWl0cyBlaXRoZXIgYFZlc3RpbmdDb21wbGV0ZWRgIG9yIGBWZXN0aW5nVXBkYXRlZGAuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLih2ZXN0X290aGVyBAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASy4VW5sb2NrIGFueSB2ZXN0ZWQgZnVuZHMgb2YgYSBgdGFyZ2V0YCBhY2NvdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFEBLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgd2hvc2UgdmVzdGVkIGZ1bmRzIHNob3VsZCBiZSB1bmxvY2tlZC4gTXVzdCBoYXZlIGZ1bmRzIHN0aWxsZGxvY2tlZCB1bmRlciB0aGlzIHBhbGxldC4A0EVtaXRzIGVpdGhlciBgVmVzdGluZ0NvbXBsZXRlZGAgb3IgYFZlc3RpbmdVcGRhdGVkYC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuPHZlc3RlZF90cmFuc2ZlcggBGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgc2NoZWR1bGVpAQGwVmVzdGluZ0luZm88QmFsYW5jZU9mPFQ+LCBCbG9ja051bWJlckZvcjxUPj4AAjRkQ3JlYXRlIGEgdmVzdGVkIHRyYW5zZmVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAMwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCByZWNlaXZpbmcgdGhlIHZlc3RlZCBmdW5kcy7wLSBgc2NoZWR1bGVgOiBUaGUgdmVzdGluZyBzY2hlZHVsZSBhdHRhY2hlZCB0byB0aGUgdHJhbnNmZXIuAFxFbWl0cyBgVmVzdGluZ0NyZWF0ZWRgLgD8Tk9URTogVGhpcyB3aWxsIHVubG9jayBhbGwgc2NoZWR1bGVzIHRocm91Z2ggdGhlIGN1cnJlbnQgYmxvY2suADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLlRmb3JjZV92ZXN0ZWRfdHJhbnNmZXIMARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgc2NoZWR1bGVpAQGwVmVzdGluZ0luZm88QmFsYW5jZU9mPFQ+LCBCbG9ja051bWJlckZvcjxUPj4AAzhgRm9yY2UgYSB2ZXN0ZWQgdHJhbnNmZXIuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uAOgtIGBzb3VyY2VgOiBUaGUgYWNjb3VudCB3aG9zZSBmdW5kcyBzaG91bGQgYmUgdHJhbnNmZXJyZWQuEQEtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0aGF0IHNob3VsZCBiZSB0cmFuc2ZlcnJlZCB0aGUgdmVzdGVkIGZ1bmRzLvAtIGBzY2hlZHVsZWA6IFRoZSB2ZXN0aW5nIHNjaGVkdWxlIGF0dGFjaGVkIHRvIHRoZSB0cmFuc2Zlci4AXEVtaXRzIGBWZXN0aW5nQ3JlYXRlZGAuAPxOT1RFOiBUaGlzIHdpbGwgdW5sb2NrIGFsbCBzY2hlZHVsZXMgdGhyb3VnaCB0aGUgY3VycmVudCBibG9jay4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuPG1lcmdlX3NjaGVkdWxlcwgBPHNjaGVkdWxlMV9pbmRleDgBDHUzMgABPHNjaGVkdWxlMl9pbmRleDgBDHUzMgAEVF0BTWVyZ2UgdHdvIHZlc3Rpbmcgc2NoZWR1bGVzIHRvZ2V0aGVyLCBjcmVhdGluZyBhIG5ldyB2ZXN0aW5nIHNjaGVkdWxlIHRoYXQgdW5sb2NrcyBvdmVyVQF0aGUgaGlnaGVzdCBwb3NzaWJsZSBzdGFydCBhbmQgZW5kIGJsb2Nrcy4gSWYgYm90aCBzY2hlZHVsZXMgaGF2ZSBhbHJlYWR5IHN0YXJ0ZWQgdGhlWQFjdXJyZW50IGJsb2NrIHdpbGwgYmUgdXNlZCBhcyB0aGUgc2NoZWR1bGUgc3RhcnQ7IHdpdGggdGhlIGNhdmVhdCB0aGF0IGlmIG9uZSBzY2hlZHVsZV0BaXMgZmluaXNoZWQgYnkgdGhlIGN1cnJlbnQgYmxvY2ssIHRoZSBvdGhlciB3aWxsIGJlIHRyZWF0ZWQgYXMgdGhlIG5ldyBtZXJnZWQgc2NoZWR1bGUsLHVubW9kaWZpZWQuAPhOT1RFOiBJZiBgc2NoZWR1bGUxX2luZGV4ID09IHNjaGVkdWxlMl9pbmRleGAgdGhpcyBpcyBhIG5vLW9wLkEBTk9URTogVGhpcyB3aWxsIHVubG9jayBhbGwgc2NoZWR1bGVzIHRocm91Z2ggdGhlIGN1cnJlbnQgYmxvY2sgcHJpb3IgdG8gbWVyZ2luZy5hAU5PVEU6IElmIGJvdGggc2NoZWR1bGVzIGhhdmUgZW5kZWQgYnkgdGhlIGN1cnJlbnQgYmxvY2ssIG5vIG5ldyBzY2hlZHVsZSB3aWxsIGJlIGNyZWF0ZWRkYW5kIGJvdGggd2lsbCBiZSByZW1vdmVkLgBsTWVyZ2VkIHNjaGVkdWxlIGF0dHJpYnV0ZXM6NQEtIGBzdGFydGluZ19ibG9ja2A6IGBNQVgoc2NoZWR1bGUxLnN0YXJ0aW5nX2Jsb2NrLCBzY2hlZHVsZWQyLnN0YXJ0aW5nX2Jsb2NrLEggIGN1cnJlbnRfYmxvY2spYC4hAS0gYGVuZGluZ19ibG9ja2A6IGBNQVgoc2NoZWR1bGUxLmVuZGluZ19ibG9jaywgc2NoZWR1bGUyLmVuZGluZ19ibG9jaylgLlkBLSBgbG9ja2VkYDogYHNjaGVkdWxlMS5sb2NrZWRfYXQoY3VycmVudF9ibG9jaykgKyBzY2hlZHVsZTIubG9ja2VkX2F0KGN1cnJlbnRfYmxvY2spYC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgDoLSBgc2NoZWR1bGUxX2luZGV4YDogaW5kZXggb2YgdGhlIGZpcnN0IHNjaGVkdWxlIHRvIG1lcmdlLuwtIGBzY2hlZHVsZTJfaW5kZXhgOiBpbmRleCBvZiB0aGUgc2Vjb25kIHNjaGVkdWxlIHRvIG1lcmdlLnRmb3JjZV9yZW1vdmVfdmVzdGluZ19zY2hlZHVsZQgBGHRhcmdldAABjDxUOjpMb29rdXAgYXMgU3RhdGljTG9va3VwPjo6U291cmNlAAE4c2NoZWR1bGVfaW5kZXg4AQx1MzIABRh8Rm9yY2UgcmVtb3ZlIGEgdmVzdGluZyBzY2hlZHVsZQDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgDILSBgdGFyZ2V0YDogQW4gYWNjb3VudCB0aGF0IGhhcyBhIHZlc3Rpbmcgc2NoZWR1bGUVAS0gYHNjaGVkdWxlX2luZGV4YDogVGhlIHZlc3Rpbmcgc2NoZWR1bGUgaW5kZXggdGhhdCBzaG91bGQgYmUgcmVtb3ZlZAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5pAQw4cGFsbGV0X3Zlc3RpbmcwdmVzdGluZ19pbmZvLFZlc3RpbmdJbmZvCBxCYWxhbmNlAVUBLEJsb2NrTnVtYmVyATgADAEYbG9ja2VkVQEBHEJhbGFuY2UAASRwZXJfYmxvY2tVAQEcQmFsYW5jZQABOHN0YXJ0aW5nX2Jsb2NrOAEsQmxvY2tOdW1iZXIAAG0BEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXMYcGFsbGV0EENhbGwEBFQAARQUY2xhaW0IARBkZXN0BAEwVDo6QWNjb3VudElkAAFIZXRoZXJldW1fc2lnbmF0dXJlcQEBOEVjZHNhU2lnbmF0dXJlAABgiE1ha2UgYSBjbGFpbSB0byBjb2xsZWN0IHlvdXIgRE9Ucy4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Ob25lXy4AUFVuc2lnbmVkIFZhbGlkYXRpb246BQFBIGNhbGwgdG8gY2xhaW0gaXMgZGVlbWVkIHZhbGlkIGlmIHRoZSBzaWduYXR1cmUgcHJvdmlkZWQgbWF0Y2hlc3x0aGUgZXhwZWN0ZWQgc2lnbmVkIG1lc3NhZ2Ugb2Y6AGg+IEV0aGVyZXVtIFNpZ25lZCBNZXNzYWdlOpQ+IChjb25maWd1cmVkIHByZWZpeCBzdHJpbmcpKGFkZHJlc3MpAKRhbmQgYGFkZHJlc3NgIG1hdGNoZXMgdGhlIGBkZXN0YCBhY2NvdW50LgAsUGFyYW1ldGVyczrYLSBgZGVzdGA6IFRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IHRvIHBheW91dCB0aGUgY2xhaW0uXQEtIGBldGhlcmV1bV9zaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIGFuIGV0aGVyZXVtIHNpZ25lZCBtZXNzYWdlIG1hdGNoaW5nIHRoZSBmb3JtYXRIICBkZXNjcmliZWQgYWJvdmUuACA8d2VpZ2h0PvxUaGUgd2VpZ2h0IG9mIHRoaXMgY2FsbCBpcyBpbnZhcmlhbnQgb3ZlciB0aGUgaW5wdXQgcGFyYW1ldGVycy7gV2VpZ2h0IGluY2x1ZGVzIGxvZ2ljIHRvIHZhbGlkYXRlIHVuc2lnbmVkIGBjbGFpbWAgY2FsbC4AWFRvdGFsIENvbXBsZXhpdHk6IE8oMSkkPC93ZWlnaHQ+KG1pbnRfY2xhaW0QAQx3aG95AQE8RXRoZXJldW1BZGRyZXNzAAEUdmFsdWVVAQEwQmFsYW5jZU9mPFQ+AAFAdmVzdGluZ19zY2hlZHVsZX0BAdxPcHRpb248KEJhbGFuY2VPZjxUPiwgQmFsYW5jZU9mPFQ+LCBCbG9ja051bWJlckZvcjxUPik+AAEkc3RhdGVtZW50hQEBVE9wdGlvbjxTdGF0ZW1lbnRLaW5kPgABPIRNaW50IGEgbmV3IGNsYWltIHRvIGNvbGxlY3QgRE9Ucy4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4ALFBhcmFtZXRlcnM68C0gYHdob2A6IFRoZSBFdGhlcmV1bSBhZGRyZXNzIGFsbG93ZWQgdG8gY29sbGVjdCB0aGlzIGNsYWltLswtIGB2YWx1ZWA6IFRoZSBudW1iZXIgb2YgRE9UcyB0aGF0IHdpbGwgYmUgY2xhaW1lZC4JAS0gYHZlc3Rpbmdfc2NoZWR1bGVgOiBBbiBvcHRpb25hbCB2ZXN0aW5nIHNjaGVkdWxlIGZvciB0aGVzZSBET1RzLgAgPHdlaWdodD78VGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgaW52YXJpYW50IG92ZXIgdGhlIGlucHV0IHBhcmFtZXRlcnMuHQFXZSBhc3N1bWUgd29yc3QgY2FzZSB0aGF0IGJvdGggdmVzdGluZyBhbmQgc3RhdGVtZW50IGlzIGJlaW5nIGluc2VydGVkLgBYVG90YWwgQ29tcGxleGl0eTogTygxKSQ8L3dlaWdodD4wY2xhaW1fYXR0ZXN0DAEQZGVzdAQBMFQ6OkFjY291bnRJZAABSGV0aGVyZXVtX3NpZ25hdHVyZXEBAThFY2RzYVNpZ25hdHVyZQABJHN0YXRlbWVudBgBHFZlYzx1OD4AAmzkTWFrZSBhIGNsYWltIHRvIGNvbGxlY3QgeW91ciBET1RzIGJ5IHNpZ25pbmcgYSBzdGF0ZW1lbnQuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfTm9uZV8uAFBVbnNpZ25lZCBWYWxpZGF0aW9uOikBQSBjYWxsIHRvIGBjbGFpbV9hdHRlc3RgIGlzIGRlZW1lZCB2YWxpZCBpZiB0aGUgc2lnbmF0dXJlIHByb3ZpZGVkIG1hdGNoZXN8dGhlIGV4cGVjdGVkIHNpZ25lZCBtZXNzYWdlIG9mOgBoPiBFdGhlcmV1bSBTaWduZWQgTWVzc2FnZTrAPiAoY29uZmlndXJlZCBwcmVmaXggc3RyaW5nKShhZGRyZXNzKShzdGF0ZW1lbnQpAEkBYW5kIGBhZGRyZXNzYCBtYXRjaGVzIHRoZSBgZGVzdGAgYWNjb3VudDsgdGhlIGBzdGF0ZW1lbnRgIG11c3QgbWF0Y2ggdGhhdCB3aGljaCBpc8BleHBlY3RlZCBhY2NvcmRpbmcgdG8geW91ciBwdXJjaGFzZSBhcnJhbmdlbWVudC4ALFBhcmFtZXRlcnM62C0gYGRlc3RgOiBUaGUgZGVzdGluYXRpb24gYWNjb3VudCB0byBwYXlvdXQgdGhlIGNsYWltLl0BLSBgZXRoZXJldW1fc2lnbmF0dXJlYDogVGhlIHNpZ25hdHVyZSBvZiBhbiBldGhlcmV1bSBzaWduZWQgbWVzc2FnZSBtYXRjaGluZyB0aGUgZm9ybWF0SCAgZGVzY3JpYmVkIGFib3ZlLjkBLSBgc3RhdGVtZW50YDogVGhlIGlkZW50aXR5IG9mIHRoZSBzdGF0ZW1lbnQgd2hpY2ggaXMgYmVpbmcgYXR0ZXN0ZWQgdG8gaW4gdGhlMCAgc2lnbmF0dXJlLgAgPHdlaWdodD78VGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgaW52YXJpYW50IG92ZXIgdGhlIGlucHV0IHBhcmFtZXRlcnMu/FdlaWdodCBpbmNsdWRlcyBsb2dpYyB0byB2YWxpZGF0ZSB1bnNpZ25lZCBgY2xhaW1fYXR0ZXN0YCBjYWxsLgBYVG90YWwgQ29tcGxleGl0eTogTygxKSQ8L3dlaWdodD4YYXR0ZXN0BAEkc3RhdGVtZW50GAEcVmVjPHU4PgADTPRBdHRlc3QgdG8gYSBzdGF0ZW1lbnQsIG5lZWRlZCB0byBmaW5hbGl6ZSB0aGUgY2xhaW1zIHByb2Nlc3MuABkBV0FSTklORzogSW5zZWN1cmUgdW5sZXNzIHlvdXIgY2hhaW4gaW5jbHVkZXMgYFByZXZhbGlkYXRlQXR0ZXN0c2AgYXMgYVxgVHJhbnNhY3Rpb25FeHRlbnNpb25gLgBQVW5zaWduZWQgVmFsaWRhdGlvbjopAUEgY2FsbCB0byBhdHRlc3QgaXMgZGVlbWVkIHZhbGlkIGlmIHRoZSBzZW5kZXIgaGFzIGEgYFByZWNsYWltYCByZWdpc3RlcmVk9GFuZCBwcm92aWRlcyBhIGBzdGF0ZW1lbnRgIHdoaWNoIGlzIGV4cGVjdGVkIGZvciB0aGUgYWNjb3VudC4ALFBhcmFtZXRlcnM6OQEtIGBzdGF0ZW1lbnRgOiBUaGUgaWRlbnRpdHkgb2YgdGhlIHN0YXRlbWVudCB3aGljaCBpcyBiZWluZyBhdHRlc3RlZCB0byBpbiB0aGUwICBzaWduYXR1cmUuACA8d2VpZ2h0PvxUaGUgd2VpZ2h0IG9mIHRoaXMgY2FsbCBpcyBpbnZhcmlhbnQgb3ZlciB0aGUgaW5wdXQgcGFyYW1ldGVycy7wV2VpZ2h0IGluY2x1ZGVzIGxvZ2ljIHRvIGRvIHByZS12YWxpZGF0aW9uIG9uIGBhdHRlc3RgIGNhbGwuAFhUb3RhbCBDb21wbGV4aXR5OiBPKDEpJDwvd2VpZ2h0Pihtb3ZlX2NsYWltDAEMb2xkeQEBPEV0aGVyZXVtQWRkcmVzcwABDG5ld3kBATxFdGhlcmV1bUFkZHJlc3MAAThtYXliZV9wcmVjbGFpbY0BAVBPcHRpb248VDo6QWNjb3VudElkPgAEAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5xAQxccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zOEVjZHNhU2lnbmF0dXJlAAAEAHUBASBbdTg7IDY1XQAAdQEAAANBAAAADAB5AQxccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zPEV0aGVyZXVtQWRkcmVzcwAABAAcASBbdTg7IDIwXQAAfQEEGE9wdGlvbgQEVAGBAQEIEE5vbmUAAAAQU29tZQQAgQEAAAEAAIEBAAAEDFUBVQE4AIUBBBhPcHRpb24EBFQBiQEBCBBOb25lAAAAEFNvbWUEAIkBAAABAACJAQxccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zNFN0YXRlbWVudEtpbmQAAQgcUmVndWxhcgAAABBTYWZ0AAEAAI0BBBhPcHRpb24EBFQBBAEIEE5vbmUAAAAQU29tZQQABAAAAQAAkQEMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0EENhbGwEBFQAASREc2V0X2ludnVsbmVyYWJsZXMEAQxuZXddAQFEVmVjPFQ6OkFjY291bnRJZD4AADQxAVNldCB0aGUgbGlzdCBvZiBpbnZ1bG5lcmFibGUgKGZpeGVkKSBjb2xsYXRvcnMuIFRoZXNlIGNvbGxhdG9ycyBtdXN0IGRvIHNvbWXQcHJlcGFyYXRpb24sIG5hbWVseSB0byBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLgBZAVRoZSBjYWxsIHdpbGwgcmVtb3ZlIGFueSBhY2NvdW50cyB0aGF0IGhhdmUgbm90IHJlZ2lzdGVyZWQga2V5cyBmcm9tIHRoZSBzZXQuIFRoYXQgaXMsXQFpdCBpcyBub24tYXRvbWljOyB0aGUgY2FsbGVyIGFjY2VwdHMgYWxsIGBBY2NvdW50SWRgcyBwYXNzZWQgaW4gYG5ld2AgX2luZGl2aWR1YWxseV8gYXMxAWFjY2VwdGFibGUgSW52dWxuZXJhYmxlcywgYW5kIGlzIG5vdCBwcm9wb3NpbmcgYSBfc2V0XyBvZiBuZXcgSW52dWxuZXJhYmxlcy4AWQFUaGlzIGNhbGwgZG9lcyBub3QgbWFpbnRhaW4gbXV0dWFsIGV4Y2x1c2l2aXR5IG9mIGBJbnZ1bG5lcmFibGVzYCBhbmQgYENhbmRpZGF0ZXNgLiBJdGEBaXMgcmVjb21tZW5kZWQgdG8gdXNlIGEgYmF0Y2ggb2YgYGFkZF9pbnZ1bG5lcmFibGVgIGFuZCBgcmVtb3ZlX2ludnVsbmVyYWJsZWAgaW5zdGVhZC4gQVEBYGJhdGNoX2FsbGAgY2FuIGFsc28gYmUgdXNlZCB0byBlbmZvcmNlIGF0b21pY2l0eS4gSWYgYW55IGNhbmRpZGF0ZXMgYXJlIGluY2x1ZGVkIGluTQFgbmV3YCwgdGhleSBzaG91bGQgYmUgcmVtb3ZlZCB3aXRoIGByZW1vdmVfaW52dWxuZXJhYmxlX2NhbmRpZGF0ZWAgYWZ0ZXIgZXhlY3V0aW9uLgCUTXVzdCBiZSBjYWxsZWQgYnkgdGhlIGBVcGRhdGVPcmlnaW5gLlhzZXRfZGVzaXJlZF9jYW5kaWRhdGVzBAEMbWF4OAEMdTMyAAEUVQFTZXQgdGhlIGlkZWFsIG51bWJlciBvZiBub24taW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gSWYgbG93ZXJpbmcgdGhpcyBudW1iZXIsIHRoZW4gdGhlYQFudW1iZXIgb2YgcnVubmluZyBjb2xsYXRvcnMgY291bGQgYmUgaGlnaGVyIHRoYW4gdGhpcyBmaWd1cmUuIEFzaWRlIGZyb20gdGhhdCBlZGdlIGNhc2UsNQF0aGVyZSBzaG91bGQgYmUgbm8gb3RoZXIgd2F5IHRvIGhhdmUgbW9yZSBjYW5kaWRhdGVzIHRoYW4gdGhlIGRlc2lyZWQgbnVtYmVyLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkhzZXRfY2FuZGlkYWN5X2JvbmQEARBib25kVQEBMEJhbGFuY2VPZjxUPgACHHhTZXQgdGhlIGNhbmRpZGFjeSBib25kIGFtb3VudC4AUQFJZiB0aGUgY2FuZGlkYWN5IGJvbmQgaXMgaW5jcmVhc2VkIGJ5IHRoaXMgY2FsbCwgYWxsIGN1cnJlbnQgY2FuZGlkYXRlcyB3aGljaCBoYXZlIGFNAWRlcG9zaXQgbG93ZXIgdGhhbiB0aGUgbmV3IGJvbmQgd2lsbCBiZSBraWNrZWQgZnJvbSB0aGUgbGlzdCBhbmQgZ2V0IHRoZWlyIGRlcG9zaXRzFGJhY2suANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuVHJlZ2lzdGVyX2FzX2NhbmRpZGF0ZQADEEEBUmVnaXN0ZXIgdGhpcyBhY2NvdW50IGFzIGEgY29sbGF0b3IgY2FuZGlkYXRlLiBUaGUgYWNjb3VudCBtdXN0IChhKSBhbHJlYWR5IGhhdmUdAXJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzIGFuZCAoYikgYmUgYWJsZSB0byByZXNlcnZlIHRoZSBgQ2FuZGlkYWN5Qm9uZGAuANxUaGlzIGNhbGwgaXMgbm90IGF2YWlsYWJsZSB0byBgSW52dWxuZXJhYmxlYCBjb2xsYXRvcnMuMGxlYXZlX2ludGVudAAEFFUBRGVyZWdpc3RlciBgb3JpZ2luYCBhcyBhIGNvbGxhdG9yIGNhbmRpZGF0ZS4gTm90ZSB0aGF0IHRoZSBjb2xsYXRvciBjYW4gb25seSBsZWF2ZSBvbg0Bc2Vzc2lvbiBjaGFuZ2UuIFRoZSBgQ2FuZGlkYWN5Qm9uZGAgd2lsbCBiZSB1bnJlc2VydmVkIGltbWVkaWF0ZWx5LgAZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIHRvdGFsIG51bWJlciBvZiBjYW5kaWRhdGVzIHdvdWxkIGRyb3AgYmVsb3dcYE1pbkVsaWdpYmxlQ29sbGF0b3JzYC5AYWRkX2ludnVsbmVyYWJsZQQBDHdobwQBMFQ6OkFjY291bnRJZAAFEEUBQWRkIGEgbmV3IGFjY291bnQgYHdob2AgdG8gdGhlIGxpc3Qgb2YgYEludnVsbmVyYWJsZXNgIGNvbGxhdG9ycy4gYHdob2AgbXVzdCBoYXZlHQFyZWdpc3RlcmVkIHNlc3Npb24ga2V5cy4gSWYgYHdob2AgaXMgYSBjYW5kaWRhdGUsIHRoZXkgd2lsbCBiZSByZW1vdmVkLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkxyZW1vdmVfaW52dWxuZXJhYmxlBAEMd2hvBAEwVDo6QWNjb3VudElkAAYQYQFSZW1vdmUgYW4gYWNjb3VudCBgd2hvYCBmcm9tIHRoZSBsaXN0IG9mIGBJbnZ1bG5lcmFibGVzYCBjb2xsYXRvcnMuIGBJbnZ1bG5lcmFibGVzYCBtdXN0KGJlIHNvcnRlZC4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC4sdXBkYXRlX2JvbmQEASxuZXdfZGVwb3NpdFUBATBCYWxhbmNlT2Y8VD4ABxxdAVVwZGF0ZSB0aGUgY2FuZGlkYWN5IGJvbmQgb2YgY29sbGF0b3IgY2FuZGlkYXRlIGBvcmlnaW5gIHRvIGEgbmV3IGFtb3VudCBgbmV3X2RlcG9zaXRgLgBBAVNldHRpbmcgYSBgbmV3X2RlcG9zaXRgIHRoYXQgaXMgbG93ZXIgdGhhbiB0aGUgY3VycmVudCBkZXBvc2l0IHdoaWxlIGBvcmlnaW5gIGlz4G9jY3VweWluZyBhIHRvcC1gRGVzaXJlZENhbmRpZGF0ZXNgIHNsb3QgaXMgbm90IGFsbG93ZWQuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiBgb3JpZ2luYCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsIHRoZSB1cGRhdGVkIGJvbmQgaXMgbG93ZXIZAXRoYW4gdGhlIG1pbmltdW0gY2FuZGlkYWN5IGJvbmQsIGFuZC9vciB0aGUgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC5MdGFrZV9jYW5kaWRhdGVfc2xvdAgBHGRlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAEYdGFyZ2V0BAEwVDo6QWNjb3VudElkAAgcTQFUaGUgY2FsbGVyIGBvcmlnaW5gIHJlcGxhY2VzIGEgY2FuZGlkYXRlIGB0YXJnZXRgIGluIHRoZSBjb2xsYXRvciBjYW5kaWRhdGUgbGlzdCBieVUBcmVzZXJ2aW5nIGBkZXBvc2l0YC4gVGhlIGFtb3VudCBgZGVwb3NpdGAgcmVzZXJ2ZWQgYnkgdGhlIGNhbGxlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbuB0aGUgZXhpc3RpbmcgYm9uZCBvZiB0aGUgdGFyZ2V0IGl0IGlzIHRyeWluZyB0byByZXBsYWNlLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IGEgY29sbGF0b3IgY2FuZGlkYXRlIG9yIGludnVsbmVyYWJsZSwgdGhlVQFjYWxsZXIgZG9lcyBub3QgaGF2ZSByZWdpc3RlcmVkIHNlc3Npb24ga2V5cywgdGhlIHRhcmdldCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsvGFuZC9vciB0aGUgYGRlcG9zaXRgIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLpUBDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQQQ2FsbAQEVAABCCBzZXRfa2V5cwgBEGtleXOZAQEcVDo6S2V5cwABFHByb29mGAEcVmVjPHU4PgAALORTZXRzIHRoZSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyIHRvIGBrZXlzYC4AHQFBbGxvd3MgYW4gYWNjb3VudCB0byBzZXQgaXRzIHNlc3Npb24ga2V5IHByaW9yIHRvIGJlY29taW5nIGEgdmFsaWRhdG9yLsBUaGlzIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgc2Vzc2lvbi4AAQEtIGBvcmlnaW5gOiBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzaWduZWQuVQEtIGBrZXlzYDogVGhlIG5ldyBzZXNzaW9uIGtleXMgdG8gc2V0LiBUaGVzZSBhcmUgdGhlIHB1YmxpYyBrZXlzIG9mIGFsbCBzZXNzaW9ucyBrZXlzXCAgc2V0dXAgaW4gdGhlIHJ1bnRpbWUuQQEtIGBwcm9vZmA6IFRoZSBwcm9vZiB0aGF0IGBvcmlnaW5gIGhhcyBhY2Nlc3MgdG8gdGhlIHByaXZhdGUga2V5cyBvZiBga2V5c2AuIFNlZU0BICBbYGltcGxfb3BhcXVlX2tleXNgXShzcF9ydW50aW1lOjppbXBsX29wYXF1ZV9rZXlzKSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGU8ICBwcm9vZiBmb3JtYXQuKHB1cmdlX2tleXMAASDIUmVtb3ZlcyBhbnkgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlci4AwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIGFjY291bnQgbXVzdCBiZSBlaXRoZXIgYmVdAWNvbnZlcnRpYmxlIHRvIGEgdmFsaWRhdG9yIElEIHVzaW5nIHRoZSBjaGFpbidzIHR5cGljYWwgYWRkcmVzc2luZyBzeXN0ZW0gKHRoaXMgdXN1YWxseVEBbWVhbnMgYmVpbmcgYSBjb250cm9sbGVyIGFjY291bnQpIG9yIGRpcmVjdGx5IGNvbnZlcnRpYmxlIGludG8gYSB2YWxpZGF0b3IgSUQgKHdoaWNolHVzdWFsbHkgbWVhbnMgYmVpbmcgYSBzdGFzaCBhY2NvdW50KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMumQEIcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUsU2Vzc2lvbktleXMAAAQBEGF1cmGdAQHEPEF1cmEgYXMgJGNyYXRlOjpCb3VuZFRvUnVudGltZUFwcFB1YmxpYz46OlB1YmxpYwAAnQEQRHNwX2NvbnNlbnN1c19hdXJhHHNyMjU1MTksYXBwX3NyMjU1MTkYUHVibGljAAAEAAgBPHNyMjU1MTk6OlB1YmxpYwAAoQEMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0EENhbGwEBFQAARRUc3VzcGVuZF94Y21fZXhlY3V0aW9uAAEMSQFTdXNwZW5kcyBhbGwgWENNIGV4ZWN1dGlvbnMgZm9yIHRoZSBYQ01QIHF1ZXVlLCByZWdhcmRsZXNzIG9mIHRoZSBzZW5kZXIncyBvcmlnaW4uAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLlByZXN1bWVfeGNtX2V4ZWN1dGlvbgACFLhSZXN1bWVzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUuAD0BTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lc24ndCBjaGFuZ2UgdGhlIHN0YXR1cyBvZiB0aGUgaW4vb3V0IGJvdW5kIGNoYW5uZWxzLgCkLSBgb3JpZ2luYDogTXVzdCBwYXNzIGBDb250cm9sbGVyT3JpZ2luYC5gdXBkYXRlX3N1c3BlbmRfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAMUSQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcXVldWUgZm9yIHRoZSBvdGhlciBzaWRlIHRvIGJleHRvbGQgdG8gc3VzcGVuZCB0aGVpciBzZW5kaW5nLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC7oLSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5zdXNwZW5kX3ZhbHVlYFR1cGRhdGVfZHJvcF90aHJlc2hvbGQEAQxuZXc4AQx1MzIABBRFAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBhZnRlciB3aGljaCB3ZSBkcm9wIGFueYhmdXJ0aGVyIG1lc3NhZ2VzIGZyb20gdGhlIGNoYW5uZWwuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLuwtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLmRyb3BfdGhyZXNob2xkYFx1cGRhdGVfcmVzdW1lX3RocmVzaG9sZAQBDG5ldzgBDHUzMgAFFE0BT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIHRoZSBxdWV1ZSBtdXN0IGJlIHJlZHVjZWQgdG8gYmVmb3JlIGl0IHNpZ25hbHMBAXRoYXQgbWVzc2FnZSBzZW5kaW5nIG1heSByZWNvbW1lbmNlIGFmdGVyIGl0IGhhcyBiZWVuIHN1c3BlbmRlZC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu9C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEucmVzdW1lX3RocmVzaG9sZGAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMupQEMKHBhbGxldF94Y20YcGFsbGV0EENhbGwEBFQAAUQQc2VuZAgBEGRlc3SpAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHG1lc3NhZ2UxAgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAAAPHRlbGVwb3J0X2Fzc2V0cxABEGRlc3SpAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5qQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHNtAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABSBEBVGVsZXBvcnQgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gc29tZSBkZXN0aW5hdGlvbiBjaGFpbi4AHQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2AgaW5zdGVhZC4qKgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYC4gVGhlIHdlaWdodCBsaW1pdCBmb3IgZmVlcyBpcyBub3QgcHJvdmlkZWQgYW5kIHRodXMgaXMgdW5saW1pdGVkLLR3aXRoIGFsbCBmZWVzIHRha2VuIGFzIG5lZWRlZCBmcm9tIHRoZSBhc3NldC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuXHJlc2VydmVfdHJhbnNmZXJfYXNzZXRzEAEQZGVzdKkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnmpAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c20DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAJ4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4APQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy4cZXhlY3V0ZQgBHG1lc3NhZ2VxAwG0Qm94PFZlcnNpb25lZFhjbTw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4+AAEobWF4X3dlaWdodBEBARhXZWlnaHQAAyDQRXhlY3V0ZSBhbiBYQ00gbWVzc2FnZSBmcm9tIGEgbG9jYWwsIHNpZ25lZCwgb3JpZ2luLgBNAUFuIGV2ZW50IGlzIGRlcG9zaXRlZCBpbmRpY2F0aW5nIHdoZXRoZXIgYG1zZ2AgY291bGQgYmUgZXhlY3V0ZWQgY29tcGxldGVseSBvciBvbmx5KHBhcnRpYWxseS4AXQFObyBtb3JlIHRoYW4gYG1heF93ZWlnaHRgIHdpbGwgYmUgdXNlZCBpbiBpdHMgYXR0ZW1wdGVkIGV4ZWN1dGlvbi4gSWYgdGhpcyBpcyBsZXNzIHRoYW5BAXRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgdGhhdCB0aGUgbWVzc2FnZSBjb3VsZCB0YWtlIHRvIGJlIGV4ZWN1dGVkLCB0aGVuIG5vfGV4ZWN1dGlvbiBhdHRlbXB0IHdpbGwgYmUgbWFkZS5EZm9yY2VfeGNtX3ZlcnNpb24IASBsb2NhdGlvbv0BATRCb3g8TG9jYXRpb24+AAEcdmVyc2lvbjgBKFhjbVZlcnNpb24ABBhJAUV4dG9sbCB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBjYW4gYmUgY29tbXVuaWNhdGVkIHdpdGggdGhyb3VnaCBhIHBhcnRpY3VsYXI8dmVyc2lvbiBvZiBYQ00uANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4u2C0gYGxvY2F0aW9uYDogVGhlIGRlc3RpbmF0aW9uIHRoYXQgaXMgYmVpbmcgZGVzY3JpYmVkLhEBLSBgeGNtX3ZlcnNpb25gOiBUaGUgbGF0ZXN0IHZlcnNpb24gb2YgWENNIHRoYXQgYGxvY2F0aW9uYCBzdXBwb3J0cy5kZm9yY2VfZGVmYXVsdF94Y21fdmVyc2lvbgQBRG1heWJlX3hjbV92ZXJzaW9u4AFIT3B0aW9uPFhjbVZlcnNpb24+AAUUWQFTZXQgYSBzYWZlIFhDTSB2ZXJzaW9uICh0aGUgdmVyc2lvbiB0aGF0IFhDTSBzaG91bGQgYmUgZW5jb2RlZCB3aXRoIGlmIHRoZSBtb3N0IHJlY2VudLR2ZXJzaW9uIGEgZGVzdGluYXRpb24gY2FuIGFjY2VwdCBpcyB1bmtub3duKS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi45AS0gYG1heWJlX3hjbV92ZXJzaW9uYDogVGhlIGRlZmF1bHQgWENNIGVuY29kaW5nIHZlcnNpb24sIG9yIGBOb25lYCB0byBkaXNhYmxlLnhmb3JjZV9zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbqkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAYQOQFBc2sgYSBsb2NhdGlvbiB0byBub3RpZnkgdXMgcmVnYXJkaW5nIHRoZWlyIFhDTSB2ZXJzaW9uIGFuZCBhbnkgY2hhbmdlcyB0byBpdC4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi5ZAS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIHNob3VsZCBzdWJzY3JpYmUgZm9yIFhDTSB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMugGZvcmNlX3Vuc3Vic2NyaWJlX3ZlcnNpb25fbm90aWZ5BAEgbG9jYXRpb26pAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAHGEkBUmVxdWlyZSB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBzaG91bGQgbm8gbG9uZ2VyIG5vdGlmeSB1cyByZWdhcmRpbmcgYW55IFhDTUB2ZXJzaW9uIGNoYW5nZXMuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4uPQEtIGBsb2NhdGlvbmA6IFRoZSBsb2NhdGlvbiB0byB3aGljaCB3ZSBhcmUgY3VycmVudGx5IHN1YnNjcmliZWQgZm9yIFhDTSB2ZXJzaW9uqCAgbm90aWZpY2F0aW9ucyB3aGljaCB3ZSBubyBsb25nZXIgZGVzaXJlLnxsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzFAEQZGVzdKkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnmpAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c20DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0pQIBLFdlaWdodExpbWl0AAh4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAsIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuXGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzFAEQZGVzdKkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnmpAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c20DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0pQIBLFdlaWdodExpbWl0AAlIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5AZm9yY2Vfc3VzcGVuc2lvbgQBJHN1c3BlbmRlZFkBARBib29sAAoQ9FNldCBvciB1bnNldCB0aGUgZ2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi7QLSBgc3VzcGVuZGVkYDogYHRydWVgIHRvIHN1c3BlbmQsIGBmYWxzZWAgdG8gcmVzdW1lLjx0cmFuc2Zlcl9hc3NldHMUARBkZXN0qQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeakBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzbQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXSlAgEsV2VpZ2h0TGltaXQAC4RdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLNBkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZSwgb3IgdGhyb3VnaCB0ZWxlcG9ydHMuAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mNQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gIChoZW5jZSByZWZlcnJlZCB0byBhcyBgZmVlc2ApLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvckEBYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodCBpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGXcb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgBhAWBhc3NldHNgIChleGNsdWRpbmcgYGZlZXNgKSBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG90aGVyd2lzZSBiZSB0ZWxlcG9ydGFibGWwdG8gYGRlc3RgLCBubyBsaW1pdGF0aW9ucyBpbXBvc2VkIG9uIGBmZWVzYC5NASAtIGZvciBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb24gY2hhaW4gYW5kTQEgICBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0b0QgICBgYmVuZWZpY2lhcnlgLmEBIC0gZm9yIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvIGBkZXN0YCBjaGFpblkBICAgdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZCBkZXBvc2l0IHRoZW1QICAgdG8gYGJlbmVmaWNpYXJ5YC5dASAtIGZvciByZW1vdGUgcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIHJlc2VydmUgY2hhaW4gdG8gbW92ZSByZXNlcnZlc10BICAgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXIgWENNIHRvIGBkZXN0YCB0byBtaW501CAgIGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuUQEgLSBmb3IgdGVsZXBvcnRzOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBYQ00gdG8gYGRlc3RgIGNoYWluIHRvIG1pbnQvdGVsZXBvcnSwICAgYXNzZXRzIGFuZCBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLi0BLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBYMihQYXJlbnQsVQEgIFBhcmFjaGFpbiguLikpYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFgxKFBhcmFjaGFpbiguLikpYCB0byBzZW5kaCAgZnJvbSByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuMGNsYWltX2Fzc2V0cwgBGGFzc2V0c20DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABLGJlbmVmaWNpYXJ5qQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ADBhVAUNsYWltcyBhc3NldHMgdHJhcHBlZCBvbiB0aGlzIHBhbGxldCBiZWNhdXNlIG9mIGxlZnRvdmVyIGFzc2V0cyBkdXJpbmcgWENNIGV4ZWN1dGlvbi4ArC0gYG9yaWdpbmA6IEFueW9uZSBjYW4gY2FsbCB0aGlzIGV4dHJpbnNpYy5dAS0gYGFzc2V0c2A6IFRoZSBleGFjdCBhc3NldHMgdGhhdCB3ZXJlIHRyYXBwZWQuIFVzZSB0aGUgdmVyc2lvbiB0byBzcGVjaWZ5IHdoYXQgdmVyc2lvbph3YXMgdGhlIGxhdGVzdCB3aGVuIHRoZXkgd2VyZSB0cmFwcGVkLkUBLSBgYmVuZWZpY2lhcnlgOiBUaGUgbG9jYXRpb24vYWNjb3VudCB3aGVyZSB0aGUgY2xhaW1lZCBhc3NldHMgd2lsbCBiZSBkZXBvc2l0ZWQujHRyYW5zZmVyX2Fzc2V0c191c2luZ190eXBlX2FuZF90aGVuHAEQZGVzdKkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzbQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAFQYXNzZXRzX3RyYW5zZmVyX3R5cGWdAwFEQm94PFRyYW5zZmVyVHlwZT4AAThyZW1vdGVfZmVlc19pZKEDAVRCb3g8VmVyc2lvbmVkQXNzZXRJZD4AAUhmZWVzX3RyYW5zZmVyX3R5cGWdAwFEQm94PFRyYW5zZmVyVHlwZT4AAUhjdXN0b21feGNtX29uX2Rlc3QxAgFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAEwd2VpZ2h0X2xpbWl0pQIBLFdlaWdodExpbWl0AA3AVQFUcmFuc2ZlciBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHVzaW5nIGV4cGxpY2l0IHRyYW5zZmVyaHR5cGVzIGZvciBhc3NldHMgYW5kIGZlZXMuAFkBYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBvciBtYXkgYmUgdGVsZXBvcnRhYmxlIHRvIGBkZXN0YC4gQ2FsbGVyIG11c3TscHJvdmlkZSB0aGUgYGFzc2V0c190cmFuc2Zlcl90eXBlYCB0byBiZSB1c2VkIGZvciBgYXNzZXRzYDpRASAtIGBUcmFuc2ZlclR5cGU6OkxvY2FsUmVzZXJ2ZWA6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpEZXN0aW5hdGlvblJlc2VydmVgOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuWQEgLSBgVHJhbnNmZXJUeXBlOjpSZW1vdGVSZXNlcnZlKHJlc2VydmUpYDogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIGByZXNlcnZlYGEBICAgY2hhaW4gdG8gbW92ZSByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlclUBICAgWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuIFR5cGljYWxseZQgICB0aGUgcmVtb3RlIGByZXNlcnZlYCBpcyBBc3NldCBIdWIuRQEgLSBgVHJhbnNmZXJUeXBlOjpUZWxlcG9ydGA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG/oICAgbWludC90ZWxlcG9ydCBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgBVAU9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiwgYXMgd2VsbCBhcyBhbnkgaW50ZXJtZWRpYXJ5IGhvcHMsIGBCdXlFeGVjdXRpb25gIGlzIHVzZWQgdG8hAWJ1eSBleGVjdXRpb24gdXNpbmcgdHJhbnNmZXJyZWQgYGFzc2V0c2AgaWRlbnRpZmllZCBieSBgcmVtb3RlX2ZlZXNfaWRgLlkBTWFrZSBzdXJlIGVub3VnaCBvZiB0aGUgc3BlY2lmaWVkIGByZW1vdGVfZmVlc19pZGAgYXNzZXQgaXMgaW5jbHVkZWQgaW4gdGhlIGdpdmVuIGxpc3RhAW9mIGBhc3NldHNgLiBgcmVtb3RlX2ZlZXNfaWRgIHNob3VsZCBiZSBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAEUBYHJlbW90ZV9mZWVzX2lkYCBtYXkgdXNlIGRpZmZlcmVudCB0cmFuc2ZlciB0eXBlIHRoYW4gcmVzdCBvZiBgYXNzZXRzYCBhbmQgY2FuIGJlnHNwZWNpZmllZCB0aHJvdWdoIGBmZWVzX3RyYW5zZmVyX3R5cGVgLgBhAVRoZSBjYWxsZXIgbmVlZHMgdG8gc3BlY2lmeSB3aGF0IHNob3VsZCBoYXBwZW4gdG8gdGhlIHRyYW5zZmVycmVkIGFzc2V0cyBvbmNlIHRoZXkgcmVhY2hBAXRoZSBgZGVzdGAgY2hhaW4uIFRoaXMgaXMgZG9uZSB0aHJvdWdoIHRoZSBgY3VzdG9tX3hjbV9vbl9kZXN0YCBwYXJhbWV0ZXIsIHdoaWNo/GNvbnRhaW5zIHRoZSBpbnN0cnVjdGlvbnMgdG8gZXhlY3V0ZSBvbiBgZGVzdGAgYXMgYSBmaW5hbCBzdGVwLnwgIFRoaXMgaXMgdXN1YWxseSBhcyBzaW1wbGUgYXM6UQEgIGBYY20odmVjIVtEZXBvc2l0QXNzZXQgeyBhc3NldHM6IFdpbGQoQWxsQ291bnRlZChhc3NldHMubGVuKCkpKSwgYmVuZWZpY2lhcnkgfV0pYCwxASAgYnV0IGNvdWxkIGJlIHNvbWV0aGluZyBtb3JlIGV4b3RpYyBsaWtlIHNlbmRpbmcgdGhlIGBhc3NldHNgIGV2ZW4gZnVydGhlci4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbT0BICByZWxheSB0byBwYXJhY2hhaW4sIG9yIGAocGFyZW50czogMiwgKEdsb2JhbENvbnNlbnN1cyguLiksIC4uKSlgIHRvIHNlbmQgZnJvbfQgIHBhcmFjaGFpbiBhY3Jvc3MgYSBicmlkZ2UgdG8gYW5vdGhlciBlY29zeXN0ZW0gZGVzdGluYXRpb24uWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLj0BLSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBhc3NldHNgLiEBLSBgcmVtb3RlX2ZlZXNfaWRgOiBPbmUgb2YgdGhlIGluY2x1ZGVkIGBhc3NldHNgIHRvIGJlIHVzZWQgdG8gcGF5IGZlZXMuSQEtIGBmZWVzX3RyYW5zZmVyX3R5cGVgOiBUaGUgWENNIGBUcmFuc2ZlclR5cGVgIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGBmZWVzYCBhc3NldHMuWQEtIGBjdXN0b21feGNtX29uX2Rlc3RgOiBUaGUgWENNIHRvIGJlIGV4ZWN1dGVkIG9uIGBkZXN0YCBjaGFpbiBhcyB0aGUgbGFzdCBzdGVwIG9mIHRoZVkBICB0cmFuc2Zlciwgd2hpY2ggYWxzbyBkZXRlcm1pbmVzIHdoYXQgaGFwcGVucyB0byB0aGUgYXNzZXRzIG9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLlBhZGRfYXV0aG9yaXplZF9hbGlhcwgBHGFsaWFzZXKpAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHGV4cGlyZXP8ASxPcHRpb248dTY0PgAOLF0BQXV0aG9yaXplIGFub3RoZXIgYGFsaWFzZXJgIGxvY2F0aW9uIHRvIGFsaWFzIGludG8gdGhlIGxvY2FsIGBvcmlnaW5gIG1ha2luZyB0aGlzIGNhbGwuKQFUaGUgYGFsaWFzZXJgIGlzIG9ubHkgYXV0aG9yaXplZCB1bnRpbCB0aGUgcHJvdmlkZWQgYGV4cGlyeWAgYmxvY2sgbnVtYmVyLkkBVGhlIGNhbGwgY2FuIGFsc28gYmUgdXNlZCBmb3IgYSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYWxpYXMgaW4gb3JkZXIgdG8gdXBkYXRlIGl0c1hgZXhwaXJ5YCBibG9jayBudW1iZXIuAFEBVXN1YWxseSB1c2VmdWwgdG8gYWxsb3cgeW91ciBsb2NhbCBhY2NvdW50IHRvIGJlIGFsaWFzZWQgaW50byBmcm9tIGEgcmVtb3RlIGxvY2F0aW9u9GFsc28gdW5kZXIgeW91ciBjb250cm9sIChsaWtlIHlvdXIgYWNjb3VudCBvbiBhbm90aGVyIGNoYWluKS4AUQFXQVJOSU5HOiBtYWtlIHN1cmUgdGhlIGNhbGxlciBgb3JpZ2luYCAoeW91KSB0cnVzdHMgdGhlIGBhbGlhc2VyYCBsb2NhdGlvbiB0byBhY3QgaW5ZAXRoZWlyL3lvdXIgbmFtZS4gT25jZSBhdXRob3JpemVkIHVzaW5nIHRoaXMgY2FsbCwgdGhlIGBhbGlhc2VyYCBjYW4gZnJlZWx5IGltcGVyc29uYXRl1GBvcmlnaW5gIGluIFhDTSBwcm9ncmFtcyBleGVjdXRlZCBvbiB0aGUgbG9jYWwgY2hhaW4uXHJlbW92ZV9hdXRob3JpemVkX2FsaWFzBAEcYWxpYXNlcqkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AA8IXQFSZW1vdmUgYSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYGFsaWFzZXJgIGZyb20gdGhlIGxpc3Qgb2YgbG9jYXRpb25zIHRoYXQgY2FuIGFsaWFzIGludG+QdGhlIGxvY2FsIGBvcmlnaW5gIG1ha2luZyB0aGlzIGNhbGwudHJlbW92ZV9hbGxfYXV0aG9yaXplZF9hbGlhc2VzABAISQFSZW1vdmUgYWxsIHByZXZpb3VzbHkgYXV0aG9yaXplZCBgYWxpYXNlcmBzIHRoYXQgY2FuIGFsaWFzIGludG8gdGhlIGxvY2FsIGBvcmlnaW5gRG1ha2luZyB0aGlzIGNhbGwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLqkBCAx4Y21EVmVyc2lvbmVkTG9jYXRpb24AAQwIVjMEAK0BAUR2Mzo6TXVsdGlMb2NhdGlvbgADAAhWNAQAyQEBMHY0OjpMb2NhdGlvbgAEAAhWNQQA/QEBMHY1OjpMb2NhdGlvbgAFAACtARAsc3RhZ2luZ194Y20IdjM0bXVsdGlsb2NhdGlvbjRNdWx0aUxvY2F0aW9uAAAIARxwYXJlbnRzDAEIdTgAASBpbnRlcmlvcrEBASRKdW5jdGlvbnMAALEBEAx4Y20IdjMkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBAC1AQEgSnVuY3Rpb24AAQAIWDIIALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAIACFgzDAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAMACFg0EAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24ABAAIWDUUALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAUACFg2GAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAYACFg3HAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24ABwAIWDggALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAgAALUBEAx4Y20IdjMganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3JruQEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmu5AQFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLQBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3JruQEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQAUQEBEHUxMjgABQAoR2VuZXJhbEtleQgBGGxlbmd0aAwBCHU4AAEQZGF0YQgBIFt1ODsgMzJdAAYAJE9ubHlDaGlsZAAHACRQbHVyYWxpdHkIAQhpZMEBARhCb2R5SWQAARBwYXJ0xQEBIEJvZHlQYXJ0AAgAPEdsb2JhbENvbnNlbnN1cwQAvQEBJE5ldHdvcmtJZAAJAAC5AQQYT3B0aW9uBARUAb0BAQgQTm9uZQAAABBTb21lBAC9AQAAAQAAvQEQDHhjbQh2MyBqdW5jdGlvbiROZXR3b3JrSWQAASwkQnlHZW5lc2lzBAAIASBbdTg7IDMyXQAAABhCeUZvcmsIATBibG9ja19udW1iZXIoAQx1NjQAAShibG9ja19oYXNoCAEgW3U4OyAzMl0AAQAgUG9sa2Fkb3QAAgAYS3VzYW1hAAMAHFdlc3RlbmQABAAYUm9jb2NvAAUAGFdvY29jbwAGACBFdGhlcmV1bQQBIGNoYWluX2lktAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAAwQEQDHhjbQh2MyBqdW5jdGlvbhhCb2R5SWQAASgQVW5pdAAAABxNb25pa2VyBABwARxbdTg7IDRdAAEAFEluZGV4BABgAQx1MzIAAgAkRXhlY3V0aXZlAAMAJFRlY2huaWNhbAAEACxMZWdpc2xhdGl2ZQAFACBKdWRpY2lhbAAGABxEZWZlbnNlAAcAOEFkbWluaXN0cmF0aW9uAAgAIFRyZWFzdXJ5AAkAAMUBEAx4Y20IdjMganVuY3Rpb24gQm9keVBhcnQAARQUVm9pY2UAAAAcTWVtYmVycwQBFGNvdW50YAEMdTMyAAEAIEZyYWN0aW9uCAEMbm9tYAEMdTMyAAEUZGVub21gAQx1MzIAAgBEQXRMZWFzdFByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgADAEhNb3JlVGhhblByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgAEAADJARAsc3RhZ2luZ194Y20IdjQgbG9jYXRpb24gTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9yzQEBJEp1bmN0aW9ucwAAzQEQLHN0YWdpbmdfeGNtCHY0JGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQA0QEBSEFyYzxbSnVuY3Rpb247IDFdPgABAAhYMgQA4QEBSEFyYzxbSnVuY3Rpb247IDJdPgACAAhYMwQA5QEBSEFyYzxbSnVuY3Rpb247IDNdPgADAAhYNAQA6QEBSEFyYzxbSnVuY3Rpb247IDRdPgAEAAhYNQQA7QEBSEFyYzxbSnVuY3Rpb247IDVdPgAFAAhYNgQA8QEBSEFyYzxbSnVuY3Rpb247IDZdPgAGAAhYNwQA9QEBSEFyYzxbSnVuY3Rpb247IDddPgAHAAhYOAQA+QEBSEFyYzxbSnVuY3Rpb247IDhdPgAIAADRAQAAAwEAAADVAQDVARAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3Jr2QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmvZAQFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLQBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3Jr2QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQAUQEBEHUxMjgABQAoR2VuZXJhbEtleQgBGGxlbmd0aAwBCHU4AAEQZGF0YQgBIFt1ODsgMzJdAAYAJE9ubHlDaGlsZAAHACRQbHVyYWxpdHkIAQhpZMEBARhCb2R5SWQAARBwYXJ0xQEBIEJvZHlQYXJ0AAgAPEdsb2JhbENvbnNlbnN1cwQA3QEBJE5ldHdvcmtJZAAJAADZAQQYT3B0aW9uBARUAd0BAQgQTm9uZQAAABBTb21lBADdAQAAAQAA3QEQLHN0YWdpbmdfeGNtCHY0IGp1bmN0aW9uJE5ldHdvcmtJZAABLCRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAcV2VzdGVuZAAEABhSb2NvY28ABQAYV29jb2NvAAYAIEV0aGVyZXVtBAEgY2hhaW5faWS0AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAADhAQAAAwIAAADVAQDlAQAAAwMAAADVAQDpAQAAAwQAAADVAQDtAQAAAwUAAADVAQDxAQAAAwYAAADVAQD1AQAAAwcAAADVAQD5AQAAAwgAAADVAQD9ARAsc3RhZ2luZ194Y20IdjUgbG9jYXRpb24gTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9yAQIBJEp1bmN0aW9ucwAAAQIQLHN0YWdpbmdfeGNtCHY1JGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQABQIBSEFyYzxbSnVuY3Rpb247IDFdPgABAAhYMgQAFQIBSEFyYzxbSnVuY3Rpb247IDJdPgACAAhYMwQAGQIBSEFyYzxbSnVuY3Rpb247IDNdPgADAAhYNAQAHQIBSEFyYzxbSnVuY3Rpb247IDRdPgAEAAhYNQQAIQIBSEFyYzxbSnVuY3Rpb247IDVdPgAFAAhYNgQAJQIBSEFyYzxbSnVuY3Rpb247IDZdPgAGAAhYNwQAKQIBSEFyYzxbSnVuY3Rpb247IDddPgAHAAhYOAQALQIBSEFyYzxbSnVuY3Rpb247IDhdPgAIAAAFAgAAAwEAAAAJAgAJAhAsc3RhZ2luZ194Y20IdjUganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3JrDQIBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmsNAgFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLQBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3JrDQIBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQAUQEBEHUxMjgABQAoR2VuZXJhbEtleQgBGGxlbmd0aAwBCHU4AAEQZGF0YQgBIFt1ODsgMzJdAAYAJE9ubHlDaGlsZAAHACRQbHVyYWxpdHkIAQhpZMEBARhCb2R5SWQAARBwYXJ0xQEBIEJvZHlQYXJ0AAgAPEdsb2JhbENvbnNlbnN1cwQAEQIBJE5ldHdvcmtJZAAJAAANAgQYT3B0aW9uBARUARECAQgQTm9uZQAAABBTb21lBAARAgAAAQAAEQIQLHN0YWdpbmdfeGNtCHY1IGp1bmN0aW9uJE5ldHdvcmtJZAABICRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAABUCAAADAgAAAAkCABkCAAADAwAAAAkCAB0CAAADBAAAAAkCACECAAADBQAAAAkCACUCAAADBgAAAAkCACkCAAADBwAAAAkCAC0CAAADCAAAAAkCADECCAx4Y20wVmVyc2lvbmVkWGNtBCxSdW50aW1lQ2FsbAABDAhWMwQANQIBUHYzOjpYY208UnVudGltZUNhbGw+AAMACFY0BACpAgFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAIVjUEAPUCAVB2NTo6WGNtPFJ1bnRpbWVDYWxsPgAFAAA1AgwMeGNtCHYzDFhjbQQQQ2FsbAAABAA5AgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAOQIAAAI9AgA9AgwMeGNtCHYzLEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAEECASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAEECASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BABBAgEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlYQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodBEBARhXZWlnaHQAARxxdWVyaWVyiQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzQQIBLE11bHRpQXNzZXRzAAEsYmVuZWZpY2lhcnmtAQE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c0ECASxNdWx0aUFzc2V0cwABEGRlc3StAQE0TXVsdGlMb2NhdGlvbgABDHhjbTUCARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSNAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QRAQEYV2VpZ2h0AAEQY2FsbJECAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EALEBAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAJUCAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHOZAgFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5rQEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c5kCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdK0BATRNdWx0aUxvY2F0aW9uAAEMeGNtNQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmWZAgFATXVsdGlBc3NldEZpbHRlcgABEHdhbnRBAgEsTXVsdGlBc3NldHMAARxtYXhpbWFsWQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHOZAgFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmWtAQE0TXVsdGlMb2NhdGlvbgABDHhjbTUCARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHOZAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3StAQE0TXVsdGlMb2NhdGlvbgABDHhjbTUCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvlQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzmQIBQE11bHRpQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc0kCAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl0pQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAA1AgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAA1AgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c0ECASxNdWx0aUFzc2V0cwABGHRpY2tldK0BATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodBEBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAQQIBLE11bHRpQXNzZXRzABwALEV4cGVjdEFzc2V0BABBAgEsTXVsdGlBc3NldHMAHQAwRXhwZWN0T3JpZ2luBACJAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBABlAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAIECAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm+VAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBACVAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EALUBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya70BASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbrEBAVRJbnRlcmlvck11bHRpTG9jYXRpb24AAQx4Y201AgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldEkCAShNdWx0aUFzc2V0AAEgdW5sb2NrZXKtAQE0TXVsdGlMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0SQIBKE11bHRpQXNzZXQAARh0YXJnZXStAQE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0SQIBKE11bHRpQXNzZXQAARRvd25lcq0BATRNdWx0aUxvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldEkCAShNdWx0aUFzc2V0AAEYbG9ja2VyrQEBNE11bHRpTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXdZAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQArQEBNE11bHRpTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0pQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luiQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAvAABBAhAMeGNtCHYzKG11bHRpYXNzZXQsTXVsdGlBc3NldHMAAAQARQIBPFZlYzxNdWx0aUFzc2V0PgAARQIAAAJJAgBJAhAMeGNtCHYzKG11bHRpYXNzZXQoTXVsdGlBc3NldAAACAEIaWRNAgEcQXNzZXRJZAABDGZ1blECASxGdW5naWJpbGl0eQAATQIQDHhjbQh2MyhtdWx0aWFzc2V0HEFzc2V0SWQAAQggQ29uY3JldGUEAK0BATRNdWx0aUxvY2F0aW9uAAAAIEFic3RyYWN0BAAIASBbdTg7IDMyXQABAABRAhAMeGNtCHYzKG11bHRpYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAFEBARB1MTI4AAAALE5vbkZ1bmdpYmxlBABVAgE0QXNzZXRJbnN0YW5jZQABAABVAhAMeGNtCHYzKG11bHRpYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAFEBARB1MTI4AAEAGEFycmF5NAQAcAEcW3U4OyA0XQACABhBcnJheTgEAFkCARxbdTg7IDhdAAMAHEFycmF5MTYEAF0CASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAABZAgAAAwgAAAAMAF0CAAADEAAAAAwAYQIMDHhjbQh2MyBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQAQQIBLE11bHRpQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAZQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBABxAgGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAIECAThNYXliZUVycm9yQ29kZQAFAABlAgQYT3B0aW9uBARUAWkCAQgQTm9uZQAAABBTb21lBABpAgAAAQAAaQIAAAQIOG0CAG0CEAx4Y20IdjMYdHJhaXRzFEVycm9yAAGgIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAEACgBDHU2NAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiAExVbmhhbmRsZWRYY21WZXJzaW9uACMASFdlaWdodExpbWl0UmVhY2hlZAQAEQEBGFdlaWdodAAkABxCYXJyaWVyACUATFdlaWdodE5vdENvbXB1dGFibGUAJgBERXhjZWVkc1N0YWNrTGltaXQAJwAAcQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAF1AgRTAAAEAH0CARhWZWM8VD4AAHUCDAx4Y20IdjMoUGFsbGV0SW5mbwAAGAEUaW5kZXhgAQx1MzIAARBuYW1leQIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEsbW9kdWxlX25hbWV5AgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AARRtYWpvcmABDHUzMgABFG1pbm9yYAEMdTMyAAEUcGF0Y2hgAQx1MzIAAHkCDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAfQIAAAJ1AgCBAgwMeGNtCHYzOE1heWJlRXJyb3JDb2RlAAEMHFN1Y2Nlc3MAAAAURXJyb3IEAIUCAYxCb3VuZGVkVmVjPHU4LCBNYXhEaXNwYXRjaEVycm9yTGVuPgABADhUcnVuY2F0ZWRFcnJvcgQAhQIBjEJvdW5kZWRWZWM8dTgsIE1heERpc3BhdGNoRXJyb3JMZW4+AAIAAIUCDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAiQIEGE9wdGlvbgQEVAGtAQEIEE5vbmUAAAAQU29tZQQArQEAAAEAAI0CDAx4Y20IdjMoT3JpZ2luS2luZAABEBhOYXRpdmUAAABAU292ZXJlaWduQWNjb3VudAABACRTdXBlcnVzZXIAAgAMWGNtAAMAAJECDAx4Y204ZG91YmxlX2VuY29kZWQ0RG91YmxlRW5jb2RlZAQEVAAABAEcZW5jb2RlZBgBHFZlYzx1OD4AAJUCDAx4Y20IdjNEUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9urQEBNE11bHRpTG9jYXRpb24AASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0EQEBGFdlaWdodAAAmQIQDHhjbQh2MyhtdWx0aWFzc2V0QE11bHRpQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAEECASxNdWx0aUFzc2V0cwAAABBXaWxkBACdAgE4V2lsZE11bHRpQXNzZXQAAQAAnQIQDHhjbQh2MyhtdWx0aWFzc2V0OFdpbGRNdWx0aUFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkTQIBHEFzc2V0SWQAAQxmdW6hAgE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZE0CARxBc3NldElkAAEMZnVuoQIBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAAKECEAx4Y20IdjMobXVsdGlhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAApQIMDHhjbQh2MyxXZWlnaHRMaW1pdAABCCRVbmxpbWl0ZWQAAAAcTGltaXRlZAQAEQEBGFdlaWdodAABAACpAgwsc3RhZ2luZ194Y20IdjQMWGNtBBBDYWxsAAAEAK0CAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AACtAgAAArECALECDCxzdGFnaW5nX3hjbQh2NCxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BAC1AgEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAtQIBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAC1AgEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZc0CASBSZXNwb25zZQABKG1heF93ZWlnaHQRAQEYV2VpZ2h0AAEccXVlcmllcuECAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHO1AgEYQXNzZXRzAAEsYmVuZWZpY2lhcnnJAQEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHO1AgEYQXNzZXRzAAEQZGVzdMkBASBMb2NhdGlvbgABDHhjbakCARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSNAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QRAQEYV2VpZ2h0AAEQY2FsbJECAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAM0BAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBADlAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRz6QIBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnnJAQEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c+kCASxBc3NldEZpbHRlcgABEGRlc3TJAQEgTG9jYXRpb24AAQx4Y22pAgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZekCASxBc3NldEZpbHRlcgABEHdhbnS1AgEYQXNzZXRzAAEcbWF4aW1hbFkBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRz6QIBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZckBASBMb2NhdGlvbgABDHhjbakCARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHPpAgEsQXNzZXRGaWx0ZXIAARBkZXN0yQEBIExvY2F0aW9uAAEMeGNtqQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm/lAgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHPpAgEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc70CARRBc3NldAABMHdlaWdodF9saW1pdKUCASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAqQIBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAqQIBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHO1AgEYQXNzZXRzAAEYdGlja2V0yQEBIExvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodBEBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAtQIBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQAtQIBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAOECAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBABlAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAIECAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm/lAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBADlAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EANUBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya90BASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbs0BAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtqQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXS9AgEUQXNzZXQAASB1bmxvY2tlcskBASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0vQIBFEFzc2V0AAEYdGFyZ2V0yQEBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXS9AgEUQXNzZXQAARRvd25lcskBASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXS9AgEUQXNzZXQAARhsb2NrZXLJAQEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXdZAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAyQEBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdKUCASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbuECAUBPcHRpb248TG9jYXRpb24+AC8AALUCECxzdGFnaW5nX3hjbQh2NBRhc3NldBhBc3NldHMAAAQAuQIBKFZlYzxBc3NldD4AALkCAAACvQIAvQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0FEFzc2V0AAAIAQhpZMECARxBc3NldElkAAEMZnVuxQIBLEZ1bmdpYmlsaXR5AADBAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQcQXNzZXRJZAAABADJAQEgTG9jYXRpb24AAMUCECxzdGFnaW5nX3hjbQh2NBRhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAUQEBEHUxMjgAAAAsTm9uRnVuZ2libGUEAMkCATRBc3NldEluc3RhbmNlAAEAAMkCECxzdGFnaW5nX3hjbQh2NBRhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQAUQEBEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQAWQIBHFt1ODsgOF0AAwAcQXJyYXkxNgQAXQIBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAAM0CDCxzdGFnaW5nX3hjbQh2NCBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQAtQIBGEFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAGUCAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQA0QIBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BACBAgE4TWF5YmVFcnJvckNvZGUABQAA0QIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHVAgRTAAAEAN0CARhWZWM8VD4AANUCDCxzdGFnaW5nX3hjbQh2NChQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWXZAgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZdkCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAA2QIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AADdAgAAAtUCAOECBBhPcHRpb24EBFQByQEBCBBOb25lAAAAEFNvbWUEAMkBAAABAADlAgwsc3RhZ2luZ194Y20IdjREUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9uyQEBIExvY2F0aW9uAAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEobWF4X3dlaWdodBEBARhXZWlnaHQAAOkCECxzdGFnaW5nX3hjbQh2NBRhc3NldCxBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQAtQIBGEFzc2V0cwAAABBXaWxkBADtAgEkV2lsZEFzc2V0AAEAAO0CECxzdGFnaW5nX3hjbQh2NBRhc3NldCRXaWxkQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWTBAgEcQXNzZXRJZAABDGZ1bvECATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAYAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlkwQIBHEFzc2V0SWQAAQxmdW7xAgE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRgAQx1MzIAAwAA8QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAAD1Agwsc3RhZ2luZ194Y20IdjUMWGNtBBBDYWxsAAAEAPkCAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAD5AgAAAv0CAP0CDCxzdGFnaW5nX3hjbQh2NSxJbnN0cnVjdGlvbgQQQ2FsbAAB0DRXaXRoZHJhd0Fzc2V0BAABAwEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAAQMBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAABAwEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZRkDASBSZXNwb25zZQABKG1heF93ZWlnaHQRAQEYV2VpZ2h0AAEccXVlcmllcjkDAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHMBAwEYQXNzZXRzAAEsYmVuZWZpY2lhcnn9AQEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHMBAwEYQXNzZXRzAAEQZGVzdP0BASBMb2NhdGlvbgABDHhjbfUCARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSNAgEoT3JpZ2luS2luZAABTGZhbGxiYWNrX21heF93ZWlnaHQNAQE4T3B0aW9uPFdlaWdodD4AARBjYWxskQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAAQIBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAD0DAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHNBAwEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyef0BASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzQQMBLEFzc2V0RmlsdGVyAAEQZGVzdP0BASBMb2NhdGlvbgABDHhjbfUCARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlQQMBLEFzc2V0RmlsdGVyAAEQd2FudAEDARhBc3NldHMAARxtYXhpbWFsWQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHNBAwEsQXNzZXRGaWx0ZXIAARxyZXNlcnZl/QEBIExvY2F0aW9uAAEMeGNt9QIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c0EDASxBc3NldEZpbHRlcgABEGRlc3T9AQEgTG9jYXRpb24AAQx4Y231AgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mbz0DAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c0EDASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzCQMBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0pQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAD1AgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAD1AgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0cwEDARhBc3NldHMAARh0aWNrZXT9AQEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0EQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAABAwEYQXNzZXRzABwALEV4cGVjdEFzc2V0BAABAwEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAOQMBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAB0DAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAgQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mbz0DAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAD0DAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQACQIBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrEQIBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uAQIBQEludGVyaW9yTG9jYXRpb24AAQx4Y231AgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldAkDARRBc3NldAABIHVubG9ja2Vy/QEBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXQJAwEUQXNzZXQAARh0YXJnZXT9AQEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldAkDARRBc3NldAABFG93bmVy/QEBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldAkDARRBc3NldAABGGxvY2tlcv0BASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd1kBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBAD9AQEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0pQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luOQMBQE9wdGlvbjxMb2NhdGlvbj4ALwAcUGF5RmVlcwQBFGFzc2V0CQMBFEFzc2V0ADAAQEluaXRpYXRlVHJhbnNmZXIUASxkZXN0aW5hdGlvbv0BASBMb2NhdGlvbgABLHJlbW90ZV9mZWVzTQMBbE9wdGlvbjxBc3NldFRyYW5zZmVyRmlsdGVyPgABPHByZXNlcnZlX29yaWdpblkBARBib29sAAEYYXNzZXRzVQMB4EJvdW5kZWRWZWM8QXNzZXRUcmFuc2ZlckZpbHRlciwgTWF4QXNzZXRUcmFuc2ZlckZpbHRlcnM+AAEocmVtb3RlX3hjbfUCARxYY208KCk+ADEAREV4ZWN1dGVXaXRoT3JpZ2luCAFEZGVzY2VuZGFudF9vcmlnaW5dAwFgT3B0aW9uPEludGVyaW9yTG9jYXRpb24+AAEMeGNt9QIBJFhjbTxDYWxsPgAyACBTZXRIaW50cwQBFGhpbnRzYQMBhEJvdW5kZWRWZWM8SGludCwgSGludE51bVZhcmlhbnRzPgAzAAABAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQYQXNzZXRzAAAEAAUDAShWZWM8QXNzZXQ+AAAFAwAAAgkDAAkDECxzdGFnaW5nX3hjbQh2NRRhc3NldBRBc3NldAAACAEIaWQNAwEcQXNzZXRJZAABDGZ1bhEDASxGdW5naWJpbGl0eQAADQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0HEFzc2V0SWQAAAQA/QEBIExvY2F0aW9uAAARAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAFEBARB1MTI4AAAALE5vbkZ1bmdpYmxlBAAVAwE0QXNzZXRJbnN0YW5jZQABAAAVAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAFEBARB1MTI4AAEAGEFycmF5NAQAcAEcW3U4OyA0XQACABhBcnJheTgEAFkCARxbdTg7IDhdAAMAHEFycmF5MTYEAF0CASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAAAZAwwsc3RhZ2luZ194Y20IdjUgUmVzcG9uc2UAARgQTnVsbAAAABhBc3NldHMEAAEDARhBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BAAdAwFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAOAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EACkDAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQAgQIBOE1heWJlRXJyb3JDb2RlAAUAAB0DBBhPcHRpb24EBFQBIQMBCBBOb25lAAAAEFNvbWUEACEDAAABAAAhAwAABAg4JQMAJQMQDHhjbQh2NRh0cmFpdHMURXJyb3IAAaQgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAQAKAEMdTY0ABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIANFRvb01hbnlBc3NldHMAIwBMVW5oYW5kbGVkWGNtVmVyc2lvbgAkAEhXZWlnaHRMaW1pdFJlYWNoZWQEABEBARhXZWlnaHQAJQAcQmFycmllcgAmAExXZWlnaHROb3RDb21wdXRhYmxlACcAREV4Y2VlZHNTdGFja0xpbWl0ACgAACkDDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBLQMEUwAABAA1AwEYVmVjPFQ+AAAtAwwsc3RhZ2luZ194Y20IdjUoUGFsbGV0SW5mbwAAGAEUaW5kZXhgAQx1MzIAARBuYW1lMQMBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEsbW9kdWxlX25hbWUxAwGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AARRtYWpvcmABDHUzMgABFG1pbm9yYAEMdTMyAAEUcGF0Y2hgAQx1MzIAADEDDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAANQMAAAItAwA5AwQYT3B0aW9uBARUAf0BAQgQTm9uZQAAABBTb21lBAD9AQAAAQAAPQMMLHN0YWdpbmdfeGNtCHY1RFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbv0BASBMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHQRAQEYV2VpZ2h0AABBAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQsQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAAEDARhBc3NldHMAAAAQV2lsZAQARQMBJFdpbGRBc3NldAABAABFAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQkV2lsZEFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkDQMBHEFzc2V0SWQAAQxmdW5JAwE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZA0DARxBc3NldElkAAEMZnVuSQMBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAAEkDECxzdGFnaW5nX3hjbQh2NRRhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAATQMEGE9wdGlvbgQEVAFRAwEIEE5vbmUAAAAQU29tZQQAUQMAAAEAAFEDECxzdGFnaW5nX3hjbQh2NRRhc3NldExBc3NldFRyYW5zZmVyRmlsdGVyAAEMIFRlbGVwb3J0BABBAwEsQXNzZXRGaWx0ZXIAAAA4UmVzZXJ2ZURlcG9zaXQEAEEDASxBc3NldEZpbHRlcgABADxSZXNlcnZlV2l0aGRyYXcEAEEDASxBc3NldEZpbHRlcgACAABVAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAVEDBFMAAAQAWQMBGFZlYzxUPgAAWQMAAAJRAwBdAwQYT3B0aW9uBARUAQECAQgQTm9uZQAAABBTb21lBAABAgAAAQAAYQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFlAwRTAAAEAGkDARhWZWM8VD4AAGUDDCxzdGFnaW5nX3hjbQh2NRBIaW50AAEEMEFzc2V0Q2xhaW1lcgQBIGxvY2F0aW9u/QEBIExvY2F0aW9uAAAAAGkDAAACZQMAbQMIDHhjbTxWZXJzaW9uZWRBc3NldHMAAQwIVjMEAEECATx2Mzo6TXVsdGlBc3NldHMAAwAIVjQEALUCASh2NDo6QXNzZXRzAAQACFY1BAABAwEodjU6OkFzc2V0cwAFAABxAwgMeGNtMFZlcnNpb25lZFhjbQQsUnVudGltZUNhbGwAAQwIVjMEAHUDAVB2Mzo6WGNtPFJ1bnRpbWVDYWxsPgADAAhWNAQAhQMBUHY0OjpYY208UnVudGltZUNhbGw+AAQACFY1BACRAwFQdjU6OlhjbTxSdW50aW1lQ2FsbD4ABQAAdQMMDHhjbQh2MwxYY20EEENhbGwAAAQAeQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAHkDAAACfQMAfQMMDHhjbQh2MyxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BABBAgEsTXVsdGlBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBABBAgEsTXVsdGlBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAQQIBLE11bHRpQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZWECASBSZXNwb25zZQABKG1heF93ZWlnaHQRAQEYV2VpZ2h0AAEccXVlcmllcokCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c0ECASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ5rQEBNE11bHRpTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHNBAgEsTXVsdGlBc3NldHMAARBkZXN0rQEBNE11bHRpTG9jYXRpb24AAQx4Y201AgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kjQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0EQEBGFdlaWdodAABEGNhbGyBAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBACxAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAsALFJlcG9ydEVycm9yBACVAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzmQIBQE11bHRpQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyea0BATRNdWx0aUxvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHOZAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3StAQE0TXVsdGlMb2NhdGlvbgABDHhjbTUCARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlmQIBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50QQIBLE11bHRpQXNzZXRzAAEcbWF4aW1hbFkBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzmQIBQE11bHRpQXNzZXRGaWx0ZXIAARxyZXNlcnZlrQEBNE11bHRpTG9jYXRpb24AAQx4Y201AgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzmQIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN0rQEBNE11bHRpTG9jYXRpb24AAQx4Y201AgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb5UCAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c5kCAUBNdWx0aUFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXNJAgEoTXVsdGlBc3NldAABMHdlaWdodF9saW1pdKUCASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAdQMBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAdQMBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHNBAgEsTXVsdGlBc3NldHMAARh0aWNrZXStAQE0TXVsdGlMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQRAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAEECASxNdWx0aUFzc2V0cwAcACxFeHBlY3RBc3NldAQAQQIBLE11bHRpQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAiQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAZQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACBAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvlQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAlQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAC1AQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmu9AQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb26xAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAEMeGNtNQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXRJAgEoTXVsdGlBc3NldAABIHVubG9ja2VyrQEBNE11bHRpTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldEkCAShNdWx0aUFzc2V0AAEYdGFyZ2V0rQEBNE11bHRpTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldEkCAShNdWx0aUFzc2V0AAEUb3duZXKtAQE0TXVsdGlMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXRJAgEoTXVsdGlBc3NldAABGGxvY2tlcq0BATRNdWx0aUxvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3WQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAK0BATRNdWx0aUxvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdKUCASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbokCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4ALwAAgQMMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAAhQMMLHN0YWdpbmdfeGNtCHY0DFhjbQQQQ2FsbAAABACJAwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAiQMAAAKNAwCNAwwsc3RhZ2luZ194Y20IdjQsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAtQIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEALUCARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAtQIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2XNAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0EQEBGFdlaWdodAABHHF1ZXJpZXLhAgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRztQIBGEFzc2V0cwABLGJlbmVmaWNpYXJ5yQEBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRztQIBGEFzc2V0cwABEGRlc3TJAQEgTG9jYXRpb24AAQx4Y22pAgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kjQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0EQEBGFdlaWdodAABEGNhbGyBAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADNAQFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQA5QIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c+kCASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5yQEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHPpAgEsQXNzZXRGaWx0ZXIAARBkZXN0yQEBIExvY2F0aW9uAAEMeGNtqQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmXpAgEsQXNzZXRGaWx0ZXIAARB3YW50tQIBGEFzc2V0cwABHG1heGltYWxZAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c+kCASxBc3NldEZpbHRlcgABHHJlc2VydmXJAQEgTG9jYXRpb24AAQx4Y22pAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRz6QIBLEFzc2V0RmlsdGVyAAEQZGVzdMkBASBMb2NhdGlvbgABDHhjbakCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZv5QIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRz6QIBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXO9AgEUQXNzZXQAATB3ZWlnaHRfbGltaXSlAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAIUDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAIUDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRztQIBGEFzc2V0cwABGHRpY2tldMkBASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQRAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEALUCARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEALUCARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBADhAgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAZQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACBAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZv5QIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQA5QIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBADVAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmvdAQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb27NAQFASW50ZXJpb3JMb2NhdGlvbgABDHhjbakCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0vQIBFEFzc2V0AAEgdW5sb2NrZXLJAQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldL0CARRBc3NldAABGHRhcmdldMkBASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0vQIBFEFzc2V0AAEUb3duZXLJAQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0vQIBFEFzc2V0AAEYbG9ja2VyyQEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3WQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAMkBASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXSlAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW7hAgFAT3B0aW9uPExvY2F0aW9uPgAvAACRAwwsc3RhZ2luZ194Y20IdjUMWGNtBBBDYWxsAAAEAJUDAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AACVAwAAApkDAJkDDCxzdGFnaW5nX3hjbQh2NSxJbnN0cnVjdGlvbgQQQ2FsbAAB0DRXaXRoZHJhd0Fzc2V0BAABAwEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAAQMBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAABAwEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZRkDASBSZXNwb25zZQABKG1heF93ZWlnaHQRAQEYV2VpZ2h0AAEccXVlcmllcjkDAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHMBAwEYQXNzZXRzAAEsYmVuZWZpY2lhcnn9AQEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHMBAwEYQXNzZXRzAAEQZGVzdP0BASBMb2NhdGlvbgABDHhjbfUCARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSNAgEoT3JpZ2luS2luZAABTGZhbGxiYWNrX21heF93ZWlnaHQNAQE4T3B0aW9uPFdlaWdodD4AARBjYWxsgQMBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAAQIBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAD0DAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHNBAwEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyef0BASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzQQMBLEFzc2V0RmlsdGVyAAEQZGVzdP0BASBMb2NhdGlvbgABDHhjbfUCARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlQQMBLEFzc2V0RmlsdGVyAAEQd2FudAEDARhBc3NldHMAARxtYXhpbWFsWQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHNBAwEsQXNzZXRGaWx0ZXIAARxyZXNlcnZl/QEBIExvY2F0aW9uAAEMeGNt9QIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c0EDASxBc3NldEZpbHRlcgABEGRlc3T9AQEgTG9jYXRpb24AAQx4Y231AgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mbz0DAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c0EDASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzCQMBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0pQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBACRAwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BACRAwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0cwEDARhBc3NldHMAARh0aWNrZXT9AQEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0EQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAABAwEYQXNzZXRzABwALEV4cGVjdEFzc2V0BAABAwEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAOQMBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAB0DAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAgQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mbz0DAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAD0DAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQACQIBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrEQIBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uAQIBQEludGVyaW9yTG9jYXRpb24AAQx4Y231AgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldAkDARRBc3NldAABIHVubG9ja2Vy/QEBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXQJAwEUQXNzZXQAARh0YXJnZXT9AQEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldAkDARRBc3NldAABFG93bmVy/QEBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldAkDARRBc3NldAABGGxvY2tlcv0BASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd1kBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBAD9AQEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0pQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luOQMBQE9wdGlvbjxMb2NhdGlvbj4ALwAcUGF5RmVlcwQBFGFzc2V0CQMBFEFzc2V0ADAAQEluaXRpYXRlVHJhbnNmZXIUASxkZXN0aW5hdGlvbv0BASBMb2NhdGlvbgABLHJlbW90ZV9mZWVzTQMBbE9wdGlvbjxBc3NldFRyYW5zZmVyRmlsdGVyPgABPHByZXNlcnZlX29yaWdpblkBARBib29sAAEYYXNzZXRzVQMB4EJvdW5kZWRWZWM8QXNzZXRUcmFuc2ZlckZpbHRlciwgTWF4QXNzZXRUcmFuc2ZlckZpbHRlcnM+AAEocmVtb3RlX3hjbfUCARxYY208KCk+ADEAREV4ZWN1dGVXaXRoT3JpZ2luCAFEZGVzY2VuZGFudF9vcmlnaW5dAwFgT3B0aW9uPEludGVyaW9yTG9jYXRpb24+AAEMeGNtkQMBJFhjbTxDYWxsPgAyACBTZXRIaW50cwQBFGhpbnRzYQMBhEJvdW5kZWRWZWM8SGludCwgSGludE51bVZhcmlhbnRzPgAzAACdAxBQc3RhZ2luZ194Y21fZXhlY3V0b3IYdHJhaXRzOGFzc2V0X3RyYW5zZmVyMFRyYW5zZmVyVHlwZQABECBUZWxlcG9ydAAAADBMb2NhbFJlc2VydmUAAQBIRGVzdGluYXRpb25SZXNlcnZlAAIANFJlbW90ZVJlc2VydmUEAKkBAURWZXJzaW9uZWRMb2NhdGlvbgADAAChAwgMeGNtQFZlcnNpb25lZEFzc2V0SWQAAQwIVjMEAE0CASx2Mzo6QXNzZXRJZAADAAhWNAQAwQIBLHY0OjpBc3NldElkAAQACFY1BAANAwEsdjU6OkFzc2V0SWQABQAApQMMSGN1bXVsdXNfcGFsbGV0X3hjbRhwYWxsZXQQQ2FsbAQEVAABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6pAwxwcGFsbGV0X3hjbV9icmlkZ2VfaHViX3JvdXRlchhwYWxsZXQQQ2FsbAgEVAAESQABBFByZXBvcnRfYnJpZGdlX3N0YXR1cwgBJGJyaWRnZV9pZDwBEEgyNTYAATBpc19jb25nZXN0ZWRZAQEQYm9vbAAABKhOb3RpZmljYXRpb24gYWJvdXQgY29uZ2VzdGVkIGJyaWRnZSBxdWV1ZS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMurQMMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBBDYWxsBARUAAEIJHJlYXBfcGFnZQgBOG1lc3NhZ2Vfb3JpZ2lusQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgABKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgAAAQ9AVJlbW92ZSBhIHBhZ2Ugd2hpY2ggaGFzIG5vIG1vcmUgbWVzc2FnZXMgcmVtYWluaW5nIHRvIGJlIHByb2Nlc3NlZCBvciBpcyBzdGFsZS5IZXhlY3V0ZV9vdmVyd2VpZ2h0EAE4bWVzc2FnZV9vcmlnaW6xAwFITWVzc2FnZU9yaWdpbk9mPFQ+AAEQcGFnZTgBJFBhZ2VJbmRleAABFGluZGV4OAEcVDo6U2l6ZQABMHdlaWdodF9saW1pdBEBARhXZWlnaHQAATR4RXhlY3V0ZSBhbiBvdmVyd2VpZ2h0IG1lc3NhZ2UuAE0BVGVtcG9yYXJ5IHByb2Nlc3NpbmcgZXJyb3JzIHdpbGwgYmUgcHJvcGFnYXRlZCB3aGVyZWFzIHBlcm1hbmVudCBlcnJvcnMgYXJlIHRyZWF0ZWRUYXMgc3VjY2VzcyBjb25kaXRpb24uAHQtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgLjUBLSBgbWVzc2FnZV9vcmlnaW5gOiBUaGUgb3JpZ2luIGZyb20gd2hpY2ggdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQgYXJyaXZlZC49AS0gYHBhZ2VgOiBUaGUgcGFnZSBpbiB0aGUgcXVldWUgaW4gd2hpY2ggdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQgaXMgc2l0dGluZy4JAS0gYGluZGV4YDogVGhlIGluZGV4IGludG8gdGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkLlkBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCBhbGxvd2VkIHRvIGJlIGNvbnN1bWVkIGluIHRoZSBleGVjdXRpb25EICBvZiB0aGUgbWVzc2FnZS4A9EJlbmNobWFyayBjb21wbGV4aXR5IGNvbnNpZGVyYXRpb25zOiBPKGluZGV4ICsgd2VpZ2h0X2xpbWl0KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMusQMIXGN1bXVsdXNfcHJpbWl0aXZlc19jb3JlWEFnZ3JlZ2F0ZU1lc3NhZ2VPcmlnaW4AAQwQSGVyZQAAABhQYXJlbnQAAQAcU2libGluZwQAnAEYUGFyYUlkAAIAALUDDIRzbm93YnJpZGdlX3BhbGxldF9zeXN0ZW1fZnJvbnRlbmQYcGFsbGV0EENhbGwEBFQAAQxIc2V0X29wZXJhdGluZ19tb2RlBAEQbW9kZbkDATRPcGVyYXRpbmdNb2RlAAAE6FNldCB0aGUgb3BlcmF0aW5nIG1vZGUgZm9yIGV4cG9ydGluZyBtZXNzYWdlcyB0byBFdGhlcmV1bS44cmVnaXN0ZXJfdG9rZW4MASBhc3NldF9pZKkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEgbWV0YWRhdGG9AwE0QXNzZXRNZXRhZGF0YQABJGZlZV9hc3NldAkDARRBc3NldAABHEkBSW5pdGlhdGVzIHRoZSByZWdpc3RyYXRpb24gZm9yIGEgUG9sa2Fkb3QtbmF0aXZlIHRva2VuIGFzIGEgd3JhcHBlZCBFUkMyMCB0b2tlbiBvbiRFdGhlcmV1bS6MLSBgYXNzZXRfaWRgOiBMb2NhdGlvbiBvZiB0aGUgYXNzZXRBAS0gYG1ldGFkYXRhYDogTWV0YWRhdGEgdG8gaW5jbHVkZSBpbiB0aGUgaW5zdGFudGlhdGVkIEVSQzIwIGNvbnRyYWN0IG9uIEV0aGVyZXVtAF0BQWxsIG9yaWdpbnMgYXJlIGFsbG93ZWQsIGhvd2V2ZXIgYGFzc2V0X2lkYCBtdXN0IGJlIGEgbG9jYXRpb24gbmVzdGVkIHdpdGhpbiB0aGUgb3JpZ2luRGNvbnNlbnN1cyBzeXN0ZW0uHGFkZF90aXAIAShtZXNzYWdlX2lkxQMBJE1lc3NhZ2VJZAABFGFzc2V0CQMBFEFzc2V0AAIIRQFBZGQgYW4gYWRkaXRpb25hbCByZWxheWVyIHRpcCBmb3IgYSBjb21taXR0ZWQgbWVzc2FnZSBpZGVudGlmaWVkIGJ5IGBtZXNzYWdlX2lkYC6gVGhlIHRpcCBhc3NldCB3aWxsIGJlIHN3YXBwZWQgZm9yIGV0aGVyLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy65Aww8c25vd2JyaWRnZV9jb3JlOG9wZXJhdGluZ19tb2RlSEJhc2ljT3BlcmF0aW5nTW9kZQABCBhOb3JtYWwAAAAYSGFsdGVkAAEAAL0DCDxzbm93YnJpZGdlX2NvcmU0QXNzZXRNZXRhZGF0YQAADAEQbmFtZcEDAcBCb3VuZGVkVmVjPHU4LCBDb25zdFUzMjxNRVRBREFUQV9GSUVMRF9NQVhfTEVOPj4AARhzeW1ib2zBAwHAQm91bmRlZFZlYzx1OCwgQ29uc3RVMzI8TUVUQURBVEFfRklFTERfTUFYX0xFTj4+AAEgZGVjaW1hbHMMAQh1OAAAwQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AADFAww8c25vd2JyaWRnZV9jb3JlGHJld2FyZCRNZXNzYWdlSWQAAQgcSW5ib3VuZAQAKAEMdTY0AAAAIE91dGJvdW5kBAAoAQx1NjQAAQAAyQMMOHBhbGxldF91dGlsaXR5GHBhbGxldBBDYWxsBARUAAEgFGJhdGNoBAEUY2FsbHPNAwF8VmVjPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAASHxTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMuALBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgBdAS0gYGNhbGxzYDogVGhlIGNhbGxzIHRvIGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIFRoZSBudW1iZXIgb2YgY2FsbCBtdXN0IG5vdDkBICBleGNlZWQgdGhlIGNvbnN0YW50OiBgYmF0Y2hlZF9jYWxsc19saW1pdGAgKGF2YWlsYWJsZSBpbiBjb25zdGFudCBtZXRhZGF0YSkuAFUBSWYgb3JpZ2luIGlzIHJvb3QgdGhlbiB0aGUgY2FsbHMgYXJlIGRpc3BhdGNoZWQgd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuAFUBVGhpcyB3aWxsIHJldHVybiBgT2tgIGluIGFsbCBjaXJjdW1zdGFuY2VzLiBUbyBkZXRlcm1pbmUgdGhlIHN1Y2Nlc3Mgb2YgdGhlIGJhdGNoLCBhbjEBZXZlbnQgaXMgZGVwb3NpdGVkLiBJZiBhIGNhbGwgZmFpbGVkIGFuZCB0aGUgYmF0Y2ggd2FzIGludGVycnVwdGVkLCB0aGVuIHRoZVUBYEJhdGNoSW50ZXJydXB0ZWRgIGV2ZW50IGlzIGRlcG9zaXRlZCwgYWxvbmcgd2l0aCB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgY2FsbHMgbWFkZU0BYW5kIHRoZSBlcnJvciBvZiB0aGUgZmFpbGVkIGNhbGwuIElmIGFsbCB3ZXJlIHN1Y2Nlc3NmdWwsIHRoZW4gdGhlIGBCYXRjaENvbXBsZXRlZGBMZXZlbnQgaXMgZGVwb3NpdGVkLjRhc19kZXJpdmF0aXZlCAEUaW5kZXjRAwEMdTE2AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AATTcU2VuZCBhIGNhbGwgdGhyb3VnaCBhbiBpbmRleGVkIHBzZXVkb255bSBvZiB0aGUgc2VuZGVyLgBVAUZpbHRlciBmcm9tIG9yaWdpbiBhcmUgcGFzc2VkIGFsb25nLiBUaGUgY2FsbCB3aWxsIGJlIGRpc3BhdGNoZWQgd2l0aCBhbiBvcmlnaW4gd2hpY2i8dXNlIHRoZSBzYW1lIGZpbHRlciBhcyB0aGUgb3JpZ2luIG9mIHRoaXMgY2FsbC4ARQFOT1RFOiBJZiB5b3UgbmVlZCB0byBlbnN1cmUgdGhhdCBhbnkgYWNjb3VudC1iYXNlZCBmaWx0ZXJpbmcgaXMgbm90IGhvbm9yZWQgKGkuZS5hAWJlY2F1c2UgeW91IGV4cGVjdCBgcHJveHlgIHRvIGhhdmUgYmVlbiB1c2VkIHByaW9yIGluIHRoZSBjYWxsIHN0YWNrIGFuZCB5b3UgZG8gbm90IHdhbnRRAXRoZSBjYWxsIHJlc3RyaWN0aW9ucyB0byBhcHBseSB0byBhbnkgc3ViLWFjY291bnRzKSwgdGhlbiB1c2UgYGFzX211bHRpX3RocmVzaG9sZF8xYHxpbiB0aGUgTXVsdGlzaWcgcGFsbGV0IGluc3RlYWQuAPROT1RFOiBQcmlvciB0byB2ZXJzaW9uICoxMiwgdGhpcyB3YXMgY2FsbGVkIGBhc19saW1pdGVkX3N1YmAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4kYmF0Y2hfYWxsBAEUY2FsbHPNAwF8VmVjPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgACNOxTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMgYW5kIGF0b21pY2FsbHkgZXhlY3V0ZSB0aGVtLiEBVGhlIHdob2xlIHRyYW5zYWN0aW9uIHdpbGwgcm9sbGJhY2sgYW5kIGZhaWwgaWYgYW55IG9mIHRoZSBjYWxscyBmYWlsZWQuALBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgBdAS0gYGNhbGxzYDogVGhlIGNhbGxzIHRvIGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIFRoZSBudW1iZXIgb2YgY2FsbCBtdXN0IG5vdDkBICBleGNlZWQgdGhlIGNvbnN0YW50OiBgYmF0Y2hlZF9jYWxsc19saW1pdGAgKGF2YWlsYWJsZSBpbiBjb25zdGFudCBtZXRhZGF0YSkuAFUBSWYgb3JpZ2luIGlzIHJvb3QgdGhlbiB0aGUgY2FsbHMgYXJlIGRpc3BhdGNoZWQgd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuLGRpc3BhdGNoX2FzCAEkYXNfb3JpZ2lu1QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAMYyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uADQjIyBDb21wbGV4aXR5HC0gTygxKS4sZm9yY2VfYmF0Y2gEARRjYWxsc80DAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAQ0fFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy7UVW5saWtlIGBiYXRjaGAsIGl0IGFsbG93cyBlcnJvcnMgYW5kIHdvbid0IGludGVycnVwdC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4ATQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2ggd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuLHdpdGhfd2VpZ2h0CAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AARh3ZWlnaHQRAQEYV2VpZ2h0AAUYxERpc3BhdGNoIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgc3BlY2lmaWVkIHdlaWdodC4ALQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGW4Um9vdCBvcmlnaW4gdG8gc3BlY2lmeSB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLhxpZl9lbHNlCAEQbWFpbiABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AASBmYWxsYmFjayABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABlwVAURpc3BhdGNoIGEgZmFsbGJhY2sgY2FsbCBpbiB0aGUgZXZlbnQgdGhlIG1haW4gY2FsbCBmYWlscyB0byBleGVjdXRlLrBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgDkVGhpcyBmdW5jdGlvbiBmaXJzdCBhdHRlbXB0cyB0byBkaXNwYXRjaCB0aGUgYG1haW5gIGNhbGwu1ElmIHRoZSBgbWFpbmAgY2FsbCBmYWlscywgdGhlIGBmYWxsYmFja2AgaXMgYXR0ZW10ZWQuFQFpZiB0aGUgZmFsbGJhY2sgaXMgc3VjY2Vzc2Z1bGx5IGRpc3BhdGNoZWQsIHRoZSB3ZWlnaHRzIG9mIGJvdGggY2FsbHMlAWFyZSBhY2N1bXVsYXRlZCBhbmQgYW4gZXZlbnQgY29udGFpbmluZyB0aGUgbWFpbiBjYWxsIGVycm9yIGlzIGRlcG9zaXRlZC4A3EluIHRoZSBldmVudCBvZiBhIGZhbGxiYWNrIGZhaWx1cmUgdGhlIHdob2xlIGNhbGwgZmFpbHNod2l0aCB0aGUgd2VpZ2h0cyByZXR1cm5lZC4AQQEtIGBtYWluYDogVGhlIG1haW4gY2FsbCB0byBiZSBkaXNwYXRjaGVkLiBUaGlzIGlzIHRoZSBwcmltYXJ5IGFjdGlvbiB0byBleGVjdXRlLj0BLSBgZmFsbGJhY2tgOiBUaGUgZmFsbGJhY2sgY2FsbCB0byBiZSBkaXNwYXRjaGVkIGluIGNhc2UgdGhlIGBtYWluYCBjYWxsIGZhaWxzLgBEIyMgRGlzcGF0Y2ggTG9naWNBAS0gSWYgdGhlIG9yaWdpbiBpcyBgcm9vdGAsIGJvdGggdGhlIG1haW4gYW5kIGZhbGxiYWNrIGNhbGxzIGFyZSBleGVjdXRlZCB3aXRob3V0eCAgYXBwbHlpbmcgYW55IG9yaWdpbiBmaWx0ZXJzLkkBLSBJZiB0aGUgb3JpZ2luIGlzIG5vdCBgcm9vdGAsIHRoZSBvcmlnaW4gZmlsdGVyIGlzIGFwcGxpZWQgdG8gYm90aCB0aGUgYG1haW5gIGFuZEwgIGBmYWxsYmFja2AgY2FsbHMuACwjIyBVc2UgQ2FzZVkBLSBTb21lIHVzZSBjYXNlcyBtaWdodCBpbnZvbHZlIHN1Ym1pdHRpbmcgYSBgYmF0Y2hgIHR5cGUgY2FsbCBpbiBlaXRoZXIgbWFpbiwgZmFsbGJhY2soICBvciBib3RoLlBkaXNwYXRjaF9hc19mYWxsaWJsZQgBJGFzX29yaWdpbtUDAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAHFMhEaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgcHJvdmlkZWQgb3JpZ2luLgBRAUFsbW9zdCB0aGUgc2FtZSBhcyBbYFBhbGxldDo6ZGlzcGF0Y2hfYXNgXSBidXQgZm9yd2FyZHMgYW55IGVycm9yIG9mIHRoZSBpbm5lciBjYWxsLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7NAwAAAiAA0QMAAAUEANUDCHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lME9yaWdpbkNhbGxlcgABHBhzeXN0ZW0EANkDAXRmcmFtZV9zeXN0ZW06Ok9yaWdpbjxSdW50aW1lPgAAACxQb2xrYWRvdFhjbQQA3QMBSHBhbGxldF94Y206Ok9yaWdpbgAfAChDdW11bHVzWGNtBADhAwFoY3VtdWx1c19wYWxsZXRfeGNtOjpPcmlnaW4AIAAcT3JpZ2lucwQA5QMBdHBhbGxldF9jdXN0b21fb3JpZ2luczo6T3JpZ2luAD8ANEFsaWFzQWNjb3VudHMEAOkDAYxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHM6Ok9yaWdpbgBiABBQZ2FzBAD1AwFkaW5kaXZfcGFsbGV0X3BnYXM6Ok9yaWdpbgBjABhSZXZpdmUEAAEEAXhwYWxsZXRfcmV2aXZlOjpPcmlnaW48UnVudGltZT4AZAAA2QMMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gkUmF3T3JpZ2luBCRBY2NvdW50SWQBBAEQEFJvb3QAAAAYU2lnbmVkBAAEASRBY2NvdW50SWQAAQAQTm9uZQACAChBdXRob3JpemVkAAMAAN0DDChwYWxsZXRfeGNtGHBhbGxldBhPcmlnaW4AAQgMWGNtBAD9AQEgTG9jYXRpb24AAAAgUmVzcG9uc2UEAP0BASBMb2NhdGlvbgABAADhAwxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBhPcmlnaW4AAQgUUmVsYXkAAABAU2libGluZ1BhcmFjaGFpbgQAnAEYUGFyYUlkAAEAAOUDFHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lKGdvdmVybmFuY2Ucb3JpZ2luc1RwYWxsZXRfY3VzdG9tX29yaWdpbnMYT3JpZ2luAAE8MFN0YWtpbmdBZG1pbgAAACRUcmVhc3VyZXIAAQA8RmVsbG93c2hpcEFkbWluAAIAMEdlbmVyYWxBZG1pbgADADBBdWN0aW9uQWRtaW4ABAAoTGVhc2VBZG1pbgAFAExSZWZlcmVuZHVtQ2FuY2VsbGVyAAYAQFJlZmVyZW5kdW1LaWxsZXIABwAsU21hbGxUaXBwZXIACAAkQmlnVGlwcGVyAAkAMFNtYWxsU3BlbmRlcgAKADRNZWRpdW1TcGVuZGVyAAsAKEJpZ1NwZW5kZXIADABEV2hpdGVsaXN0ZWRDYWxsZXIADQA0V2lzaEZvckNoYW5nZQAOAADpAwxsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzGHBhbGxldBhPcmlnaW4AAQQkUmluZ0FsaWFzBADtAwFAQWxpYXNBY2NvdW50SW5mbwAAAADtAwxsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzFHR5cGVzQEFsaWFzQWNjb3VudEluZm8AABQBKGNvbGxlY3Rpb24IAShJZGVudGlmaWVyAAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEQcmluZzgBJFJpbmdJbmRleAABCGNh8QMBPENvbnRleHR1YWxBbGlhcwABEHBhaWRZAQEQYm9vbAAA8QMQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHk8Q29udGV4dHVhbEFsaWFzAAAIARRhbGlhcwgBFEFsaWFzAAEcY29udGV4dAgBHENvbnRleHQAAPUDDERpbmRpdl9wYWxsZXRfcGdhcxhwYWxsZXQYT3JpZ2luAAEEKENsYWltQWxpYXMMARRhbGlhcwgBFEFsaWFzAAEMZGF5+QMBDERheQABKGNvbGxlY3Rpb279AwE4UGdhc0NvbGxlY3Rpb24AAAAA+QMMNGluZGl2X3N1cHBvcnQUdXRpbHMwQmlnRW5kaWFuVTMyAAMEAAAADAQZAUEgdTMyIGVuY29kZWQgaW4gYmlnLWVuZGlhbiBmb3JtYXQgZm9yIGNvcnJlY3QgbGV4aWNvZ3JhcGhpYyBvcmRlcmluZy79AwxEaW5kaXZfcGFsbGV0X3BnYXMkZXh0ZW5zaW9uOFBnYXNDb2xsZWN0aW9uAAEIGFBlb3BsZQAAAChMaXRlUGVvcGxlAAEAAAEEDDRwYWxsZXRfcmV2aXZlGHBhbGxldBhPcmlnaW4EBFQBBQQBBDhFdGhUcmFuc2FjdGlvbgQABAEwVDo6QWNjb3VudElkAAAAAAUECHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lHFJ1bnRpbWUAAAAACQQMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQQQ2FsbAQEVAABFFBhc19tdWx0aV90aHJlc2hvbGRfMQgBRG90aGVyX3NpZ25hdG9yaWVzXQEBRFZlYzxUOjpBY2NvdW50SWQ+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AADBRAUltbWVkaWF0ZWx5IGRpc3BhdGNoIGEgbXVsdGktc2lnbmF0dXJlIGNhbGwgdXNpbmcgYSBzaW5nbGUgYXBwcm92YWwgZnJvbSB0aGUgY2FsbGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAD0BLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGFyZSBwYXJ0IG9mIHRoZQEBbXVsdGktc2lnbmF0dXJlLCBidXQgZG8gbm90IHBhcnRpY2lwYXRlIGluIHRoZSBhcHByb3ZhbCBwcm9jZXNzLogtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuALhSZXN1bHQgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlzcGF0Y2hlZCByZXN1bHQuADQjIyBDb21wbGV4aXR5GQFPKFogKyBDKSB3aGVyZSBaIGlzIHRoZSBsZW5ndGggb2YgdGhlIGNhbGwgYW5kIEMgaXRzIGV4ZWN1dGlvbiB3ZWlnaHQuIGFzX211bHRpFAEkdGhyZXNob2xk0QMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzXQEBRFZlYzxUOjpBY2NvdW50SWQ+AAE8bWF5YmVfdGltZXBvaW50DQQBkE9wdGlvbjxUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+PgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEobWF4X3dlaWdodBEBARhXZWlnaHQAAahVAVJlZ2lzdGVyIGFwcHJvdmFsIGZvciBhIGRpc3BhdGNoIHRvIGJlIG1hZGUgZnJvbSBhIGRldGVybWluaXN0aWMgY29tcG9zaXRlIGFjY291bnQgaWb4YXBwcm92ZWQgYnkgYSB0b3RhbCBvZiBgdGhyZXNob2xkIC0gMWAgb2YgYG90aGVyX3NpZ25hdG9yaWVzYC4APQEqKklmIHRoZSBhcHByb3ZhbCB0aHJlc2hvbGQgaXMgbWV0IChpbmNsdWRpbmcgdGhlIHNlbmRlcidzIGFwcHJvdmFsKSwgdGhpcyB3aWxsRQFpbW1lZGlhdGVseSBleGVjdXRlIHRoZSBjYWxsLioqIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGV4ZWN1dGUgYSBtdWx0aXNpZyBjYWxsIC3AYGFwcHJvdmVfYXNfbXVsdGlgIHdpbGwgbmV2ZXIgdHJpZ2dlciBleGVjdXRpb24uAC0BUGF5bWVudDogYERlcG9zaXRCYXNlYCB3aWxsIGJlIHJlc2VydmVkIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCBwbHVzPQFgdGhyZXNob2xkYCB0aW1lcyBgRGVwb3NpdEZhY3RvcmAuIEl0IGlzIHJldHVybmVkIG9uY2UgdGhpcyBkaXNwYXRjaCBoYXBwZW5zIG9yNGlzIGNhbmNlbGxlZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBVAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIGZvciB0aGlzIGRpc3BhdGNoIGJlZm9yZSBpdCBpcyBleGVjdXRlZC5BAS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBjYW4gYXBwcm92ZSB0aGlzbGRpc3BhdGNoLiBNYXkgbm90IGJlIGVtcHR5LlkBLSBgbWF5YmVfdGltZXBvaW50YDogSWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gdGhpcyBtdXN0IGJlIGBOb25lYC4gSWYgaXQgaXNRAW5vdCB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gaXQgbXVzdCBiZSBgU29tZWAsIHdpdGggdGhlIHRpbWVwb2ludCAoYmxvY2sgbnVtYmVyIGFuZNR0cmFuc2FjdGlvbiBpbmRleCkgb2YgdGhlIGZpcnN0IGFwcHJvdmFsIHRyYW5zYWN0aW9uLogtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuAE0BTk9URTogRm9yIGludGVybWVkaWF0ZSBhcHByb3ZhbHMgKG5vdCB0aGUgZmluYWwgYXBwcm92YWwpLCB5b3Ugc2hvdWxkIGdlbmVyYWxseSB1c2VFAWBhcHByb3ZlX2FzX211bHRpYCBpbnN0ZWFkLCBzaW5jZSBpdCBvbmx5IHJlcXVpcmVzIGEgaGFzaCBvZiB0aGUgY2FsbCBhbmQgaXMgbW9yZShlZmZpY2llbnQuAFkBUmVzdWx0IGlzIGVxdWl2YWxlbnQgdG8gdGhlIGRpc3BhdGNoZWQgcmVzdWx0IGlmIGB0aHJlc2hvbGRgIGlzIGV4YWN0bHkgYDFgLiBPdGhlcndpc2VVAW9uIHN1Y2Nlc3MsIHJlc3VsdCBpcyBgT2tgIGFuZCB0aGUgcmVzdWx0IGZyb20gdGhlIGludGVyaW9yIGNhbGwsIGlmIGl0IHdhcyBleGVjdXRlZCzcbWF5IGJlIGZvdW5kIGluIHRoZSBkZXBvc2l0ZWQgYE11bHRpc2lnRXhlY3V0ZWRgIGV2ZW50LgA0IyMgQ29tcGxleGl0eVAtIGBPKFMgKyBaICsgQ2FsbClgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLiEBLSBPbmUgY2FsbCBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oWilgIHdoZXJlIGBaYCBpcyB0eC1sZW4uvC0gT25lIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhTKWAu1C0gVXAgdG8gb25lIGJpbmFyeSBzZWFyY2ggYW5kIGluc2VydCAoYE8obG9nUyArIFMpYCku+C0gSS9POiAxIHJlYWQgYE8oUylgLCB1cCB0byAxIG11dGF0ZSBgTyhTKWAuIFVwIHRvIG9uZSByZW1vdmUuMC0gT25lIGV2ZW50LmwtIFRoZSB3ZWlnaHQgb2YgdGhlIGBjYWxsYC5NAS0gU3RvcmFnZTogaW5zZXJ0cyBvbmUgaXRlbSwgdmFsdWUgc2l6ZSBib3VuZGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggYSBkZXBvc2l0GQEgIHRha2VuIGZvciBpdHMgbGlmZXRpbWUgb2YgYERlcG9zaXRCYXNlICsgdGhyZXNob2xkICogRGVwb3NpdEZhY3RvcmAuQGFwcHJvdmVfYXNfbXVsdGkUASR0aHJlc2hvbGTRAwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXNdAQFEVmVjPFQ6OkFjY291bnRJZD4AATxtYXliZV90aW1lcG9pbnQNBAGQT3B0aW9uPFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0AAShtYXhfd2VpZ2h0EQEBGFdlaWdodAACmFUBUmVnaXN0ZXIgYXBwcm92YWwgZm9yIGEgZGlzcGF0Y2ggdG8gYmUgbWFkZSBmcm9tIGEgZGV0ZXJtaW5pc3RpYyBjb21wb3NpdGUgYWNjb3VudCBpZvhhcHByb3ZlZCBieSBhIHRvdGFsIG9mIGB0aHJlc2hvbGQgLSAxYCBvZiBgb3RoZXJfc2lnbmF0b3JpZXNgLgA5ASoqVGhpcyBmdW5jdGlvbiB3aWxsIE5FVkVSIGV4ZWN1dGUgdGhlIGNhbGwsIGV2ZW4gaWYgdGhlIGFwcHJvdmFsIHRocmVzaG9sZCBpc1EBcmVhY2hlZC4qKiBJdCBvbmx5IHJlZ2lzdGVycyBhcHByb3ZhbC4gVG8gYWN0dWFsbHkgZXhlY3V0ZSB0aGUgY2FsbCwgYGFzX211bHRpYCBtdXN08GJlIGNhbGxlZCB3aXRoIHRoZSBmdWxsIGNhbGwgZGF0YSBieSBhbnkgb2YgdGhlIHNpZ25hdG9yaWVzLgBNAVRoaXMgZnVuY3Rpb24gaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBgYXNfbXVsdGlgIGZvciBpbnRlcm1lZGlhdGUgYXBwcm92YWxzIHNpbmNlIGl00G9ubHkgcmVxdWlyZXMgdGhlIGNhbGwgaGFzaCwgbm90IHRoZSBmdWxsIGNhbGwgZGF0YS4ALQFQYXltZW50OiBgRGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgaWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHBsdXM9AWB0aHJlc2hvbGRgIHRpbWVzIGBEZXBvc2l0RmFjdG9yYC4gSXQgaXMgcmV0dXJuZWQgb25jZSB0aGlzIGRpc3BhdGNoIGhhcHBlbnMgb3I0aXMgY2FuY2VsbGVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuWQEtIGBtYXliZV90aW1lcG9pbnRgOiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiB0aGlzIG11c3QgYmUgYE5vbmVgLiBJZiBpdCBpc1EBbm90IHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiBpdCBtdXN0IGJlIGBTb21lYCwgd2l0aCB0aGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5k1HRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWwgdHJhbnNhY3Rpb24uzC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgA9AU5PVEU6IFRvIGV4ZWN1dGUgdGhlIGNhbGwgYWZ0ZXIgYXBwcm92YWxzIGFyZSBnYXRoZXJlZCwgYW55IHNpZ25hdG9yeSBtdXN0IGNhbGwpAWBhc19tdWx0aWAgd2l0aCB0aGUgZnVsbCBjYWxsIGRhdGEuIFRoaXMgZnVuY3Rpb24gY2Fubm90IGV4ZWN1dGUgdGhlIGNhbGwuADQjIyBDb21wbGV4aXR5JC0gYE8oUylgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLtQtIFVwIHRvIG9uZSBiaW5hcnkgc2VhcmNoIGFuZCBpbnNlcnQgKGBPKGxvZ1MgKyBTKWApLvgtIEkvTzogMSByZWFkIGBPKFMpYCwgdXAgdG8gMSBtdXRhdGUgYE8oUylgLiBVcCB0byBvbmUgcmVtb3ZlLjAtIE9uZSBldmVudC5NAS0gU3RvcmFnZTogaW5zZXJ0cyBvbmUgaXRlbSwgdmFsdWUgc2l6ZSBib3VuZGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggYSBkZXBvc2l0GQEgIHRha2VuIGZvciBpdHMgbGlmZXRpbWUgb2YgYERlcG9zaXRCYXNlICsgdGhyZXNob2xkICogRGVwb3NpdEZhY3RvcmAuPGNhbmNlbF9hc19tdWx0aRABJHRocmVzaG9sZNEDAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc10BAURWZWM8VDo6QWNjb3VudElkPgABJHRpbWVwb2ludBEEAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0AA1RVAUNhbmNlbCBhIHByZS1leGlzdGluZywgb24tZ29pbmcgbXVsdGlzaWcgdHJhbnNhY3Rpb24uIEFueSBkZXBvc2l0IHJlc2VydmVkIHByZXZpb3VzbHnEZm9yIHRoaXMgb3BlcmF0aW9uIHdpbGwgYmUgdW5yZXNlcnZlZCBvbiBzdWNjZXNzLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuXQEtIGB0aW1lcG9pbnRgOiBUaGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5kIHRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWx4dHJhbnNhY3Rpb24gZm9yIHRoaXMgZGlzcGF0Y2guzC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgA0IyMgQ29tcGxleGl0eSQtIGBPKFMpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC4wLSBPbmUgZXZlbnQuhC0gSS9POiAxIHJlYWQgYE8oUylgLCBvbmUgcmVtb3ZlLnAtIFN0b3JhZ2U6IHJlbW92ZXMgb25lIGl0ZW0uMHBva2VfZGVwb3NpdAwBJHRocmVzaG9sZNEDAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc10BAURWZWM8VDo6QWNjb3VudElkPgABJGNhbGxfaGFzaAgBIFt1ODsgMzJdAAQ09FBva2UgdGhlIGRlcG9zaXQgcmVzZXJ2ZWQgZm9yIGFuIGV4aXN0aW5nIG11bHRpc2lnIG9wZXJhdGlvbi4AYQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgbXVzdCBiZSB0aGUgb3JpZ2luYWwgZGVwb3NpdG9yIG9mXHRoZSBtdWx0aXNpZyBvcGVyYXRpb24uAAEBVGhlIHRyYW5zYWN0aW9uIGZlZSBpcyB3YWl2ZWQgaWYgdGhlIGRlcG9zaXQgYW1vdW50IGhhcyBjaGFuZ2VkLgAZAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIG5lZWRlZCBmb3IgdGhpcyBtdWx0aXNpZy49AS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBhcmUgcGFydCBvZiB0aGUsICBtdWx0aXNpZy4FAS0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRoaXMgZGVwb3NpdCBpcyByZXNlcnZlZCBmb3IuAIxFbWl0cyBgRGVwb3NpdFBva2VkYCBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4NBAQYT3B0aW9uBARUAREEAQgQTm9uZQAAABBTb21lBAARBAAAAQAAEQQIPHBhbGxldF9tdWx0aXNpZyRUaW1lcG9pbnQELEJsb2NrTnVtYmVyATgACAEYaGVpZ2h0OAEsQmxvY2tOdW1iZXIAARRpbmRleDgBDHUzMgAAFQQMMHBhbGxldF9wcm94eRhwYWxsZXQQQ2FsbAQEVAABLBRwcm94eQwBEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABQGZvcmNlX3Byb3h5X3R5cGUZBAFQT3B0aW9uPFQ6OlByb3h5VHlwZT4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAAJE0BRGlzcGF0Y2ggdGhlIGdpdmVuIGBjYWxsYCBmcm9tIGFuIGFjY291bnQgdGhhdCB0aGUgc2VuZGVyIGlzIGF1dGhvcmlzZWQgZm9yIHRocm91Z2gwYGFkZF9wcm94eWAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuYQEtIGBmb3JjZV9wcm94eV90eXBlYDogU3BlY2lmeSB0aGUgZXhhY3QgcHJveHkgdHlwZSB0byBiZSB1c2VkIGFuZCBjaGVja2VkIGZvciB0aGlzIGNhbGwu0C0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC4kYWRkX3Byb3h5DAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGUdBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgABJEUBUmVnaXN0ZXIgYSBwcm94eSBhY2NvdW50IGZvciB0aGUgc2VuZGVyIHRoYXQgaXMgYWJsZSB0byBtYWtlIGNhbGxzIG9uIGl0cyBiZWhhbGYuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6EQEtIGBwcm94eWA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIGBjYWxsZXJgIHdvdWxkIGxpa2UgdG8gbWFrZSBhIHByb3h5LvwtIGBwcm94eV90eXBlYDogVGhlIHBlcm1pc3Npb25zIGFsbG93ZWQgZm9yIHRoaXMgcHJveHkgYWNjb3VudC5NAS0gYGRlbGF5YDogVGhlIGFubm91bmNlbWVudCBwZXJpb2QgcmVxdWlyZWQgb2YgdGhlIGluaXRpYWwgcHJveHkuIFdpbGwgZ2VuZXJhbGx5IGJlFHplcm8uMHJlbW92ZV9wcm94eQwBIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShwcm94eV90eXBlHQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4AAhyoVW5yZWdpc3RlciBhIHByb3h5IGFjY291bnQgZm9yIHRoZSBzZW5kZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6JQEtIGBwcm94eWA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIGBjYWxsZXJgIHdvdWxkIGxpa2UgdG8gcmVtb3ZlIGFzIGEgcHJveHkuQQEtIGBwcm94eV90eXBlYDogVGhlIHBlcm1pc3Npb25zIGN1cnJlbnRseSBlbmFibGVkIGZvciB0aGUgcmVtb3ZlZCBwcm94eSBhY2NvdW50LjhyZW1vdmVfcHJveGllcwADGLRVbnJlZ2lzdGVyIGFsbCBwcm94eSBhY2NvdW50cyBmb3IgdGhlIHNlbmRlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBdAVdBUk5JTkc6IFRoaXMgbWF5IGJlIGNhbGxlZCBvbiBhY2NvdW50cyBjcmVhdGVkIGJ5IGBjcmVhdGVfcHVyZWAsIGhvd2V2ZXIgaWYgZG9uZSwgdGhlblkBdGhlIHVucmVzZXJ2ZWQgZmVlcyB3aWxsIGJlIGluYWNjZXNzaWJsZS4gKipBbGwgYWNjZXNzIHRvIHRoaXMgYWNjb3VudCB3aWxsIGJlIGxvc3QuKiosY3JlYXRlX3B1cmUMAShwcm94eV90eXBlHQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4AARRpbmRleNEDAQx1MTYABEg5AVNwYXduIGEgZnJlc2ggbmV3IGFjY291bnQgdGhhdCBpcyBndWFyYW50ZWVkIHRvIGJlIG90aGVyd2lzZSBpbmFjY2Vzc2libGUsIGFuZPxpbml0aWFsaXplIGl0IHdpdGggYSBwcm94eSBvZiBgcHJveHlfdHlwZWAgZm9yIGBvcmlnaW5gIHNlbmRlci4AbFJlcXVpcmVzIGEgYFNpZ25lZGAgb3JpZ2luLgBRAS0gYHByb3h5X3R5cGVgOiBUaGUgdHlwZSBvZiB0aGUgcHJveHkgdGhhdCB0aGUgc2VuZGVyIHdpbGwgYmUgcmVnaXN0ZXJlZCBhcyBvdmVyIHRoZU0BbmV3IGFjY291bnQuIFRoaXMgd2lsbCBhbG1vc3QgYWx3YXlzIGJlIHRoZSBtb3N0IHBlcm1pc3NpdmUgYFByb3h5VHlwZWAgcG9zc2libGUgdG94YWxsb3cgZm9yIG1heGltdW0gZmxleGliaWxpdHkuUQEtIGBpbmRleGA6IEEgZGlzYW1iaWd1YXRpb24gaW5kZXgsIGluIGNhc2UgdGhpcyBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgaW4gdGhlIHNhbWVdAXRyYW5zYWN0aW9uIChlLmcuIHdpdGggYHV0aWxpdHk6OmJhdGNoYCkuIFVubGVzcyB5b3UncmUgdXNpbmcgYGJhdGNoYCB5b3UgcHJvYmFibHkganVzdEB3YW50IHRvIHVzZSBgMGAuTQEtIGBkZWxheWA6IFRoZSBhbm5vdW5jZW1lbnQgcGVyaW9kIHJlcXVpcmVkIG9mIHRoZSBpbml0aWFsIHByb3h5LiBXaWxsIGdlbmVyYWxseSBiZRR6ZXJvLgBRAUZhaWxzIHdpdGggYER1cGxpY2F0ZWAgaWYgdGhpcyBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCBpbiB0aGlzIHRyYW5zYWN0aW9uLCBmcm9tIHRoZZhzYW1lIHNlbmRlciwgd2l0aCB0aGUgc2FtZSBwYXJhbWV0ZXJzLgDkRmFpbHMgaWYgdGhlcmUgYXJlIGluc3VmZmljaWVudCBmdW5kcyB0byBwYXkgZm9yIGRlcG9zaXQuJGtpbGxfcHVyZRQBHHNwYXduZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGUdBAEwVDo6UHJveHlUeXBlAAEUaW5kZXjRAwEMdTE2AAEYaGVpZ2h0YAFEQmxvY2tOdW1iZXJGb3I8VD4AASRleHRfaW5kZXhgAQx1MzIABUCgUmVtb3ZlcyBhIHByZXZpb3VzbHkgc3Bhd25lZCBwdXJlIHByb3h5LgBJAVdBUk5JTkc6ICoqQWxsIGFjY2VzcyB0byB0aGlzIGFjY291bnQgd2lsbCBiZSBsb3N0LioqIEFueSBmdW5kcyBoZWxkIGluIGl0IHdpbGwgYmU0aW5hY2Nlc3NpYmxlLgBZAVJlcXVpcmVzIGEgYFNpZ25lZGAgb3JpZ2luLCBhbmQgdGhlIHNlbmRlciBhY2NvdW50IG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgYSBjYWxsIHRvsGBjcmVhdGVfcHVyZWAgd2l0aCBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMuAFUBLSBgc3Bhd25lcmA6IFRoZSBhY2NvdW50IHRoYXQgb3JpZ2luYWxseSBjYWxsZWQgYGNyZWF0ZV9wdXJlYCB0byBjcmVhdGUgdGhpcyBhY2NvdW50LlUBLSBgaW5kZXhgOiBUaGUgZGlzYW1iaWd1YXRpb24gaW5kZXggb3JpZ2luYWxseSBwYXNzZWQgdG8gYGNyZWF0ZV9wdXJlYC4gUHJvYmFibHkgYDBgLgkBLSBgcHJveHlfdHlwZWA6IFRoZSBwcm94eSB0eXBlIG9yaWdpbmFsbHkgcGFzc2VkIHRvIGBjcmVhdGVfcHVyZWAuRQEtIGBoZWlnaHRgOiBUaGUgaGVpZ2h0IG9mIHRoZSBjaGFpbiB3aGVuIHRoZSBjYWxsIHRvIGBjcmVhdGVfcHVyZWAgd2FzIHByb2Nlc3NlZC5RAS0gYGV4dF9pbmRleGA6IFRoZSBleHRyaW5zaWMgaW5kZXggaW4gd2hpY2ggdGhlIGNhbGwgdG8gYGNyZWF0ZV9wdXJlYCB3YXMgcHJvY2Vzc2VkLgA1AUZhaWxzIHdpdGggYE5vUGVybWlzc2lvbmAgaW4gY2FzZSB0aGUgY2FsbGVyIGlzIG5vdCBhIHByZXZpb3VzbHkgY3JlYXRlZCBwdXJl+GFjY291bnQgd2hvc2UgYGNyZWF0ZV9wdXJlYCBjYWxsIGhhcyBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMuIGFubm91bmNlCAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgAGPAUBUHVibGlzaCB0aGUgaGFzaCBvZiBhIHByb3h5LWNhbGwgdGhhdCB3aWxsIGJlIG1hZGUgaW4gdGhlIGZ1dHVyZS4AXQFUaGlzIG11c3QgYmUgY2FsbGVkIHNvbWUgbnVtYmVyIG9mIGJsb2NrcyBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgYHByb3h5YCBpcyBhdHRlbXB0ZWQlAWlmIHRoZSBkZWxheSBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3h5IHJlbGF0aW9uc2hpcCBpcyBncmVhdGVyIHRoYW4gemVyby4AEQFObyBtb3JlIHRoYW4gYE1heFBlbmRpbmdgIGFubm91bmNlbWVudHMgbWF5IGJlIG1hZGUgYXQgYW55IG9uZSB0aW1lLgAJAVRoaXMgd2lsbCB0YWtlIGEgZGVwb3NpdCBvZiBgQW5ub3VuY2VtZW50RGVwb3NpdEZhY3RvcmAgYXMgd2VsbCBhcxkBYEFubm91bmNlbWVudERlcG9zaXRCYXNlYCBpZiB0aGVyZSBhcmUgbm8gb3RoZXIgcGVuZGluZyBhbm5vdW5jZW1lbnRzLgAlAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBhIHByb3h5IG9mIGByZWFsYC4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuFQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC5McmVtb3ZlX2Fubm91bmNlbWVudAgBEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGNhbGxfaGFzaDwBNENhbGxIYXNoT2Y8VD4AByhwUmVtb3ZlIGEgZ2l2ZW4gYW5ub3VuY2VtZW50LgBZAU1heSBiZSBjYWxsZWQgYnkgYSBwcm94eSBhY2NvdW50IHRvIHJlbW92ZSBhIGNhbGwgdGhleSBwcmV2aW91c2x5IGFubm91bmNlZCBhbmQgcmV0dXJuMHRoZSBkZXBvc2l0LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLhUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuTHJlamVjdF9hbm5vdW5jZW1lbnQIASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgAIKLBSZW1vdmUgdGhlIGdpdmVuIGFubm91bmNlbWVudCBvZiBhIGRlbGVnYXRlLgBhAU1heSBiZSBjYWxsZWQgYnkgYSB0YXJnZXQgKHByb3hpZWQpIGFjY291bnQgdG8gcmVtb3ZlIGEgY2FsbCB0aGF0IG9uZSBvZiB0aGVpciBkZWxlZ2F0ZXMlAShgZGVsZWdhdGVgKSBoYXMgYW5ub3VuY2VkIHRoZXkgd2FudCB0byBleGVjdXRlLiBUaGUgZGVwb3NpdCBpcyByZXR1cm5lZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczr0LSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0aGF0IHByZXZpb3VzbHkgYW5ub3VuY2VkIHRoZSBjYWxsLrwtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlLjxwcm94eV9hbm5vdW5jZWQQASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAZm9yY2VfcHJveHlfdHlwZRkEAVBPcHRpb248VDo6UHJveHlUeXBlPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAksTQFEaXNwYXRjaCB0aGUgZ2l2ZW4gYGNhbGxgIGZyb20gYW4gYWNjb3VudCB0aGF0IHRoZSBzZW5kZXIgaXMgYXV0aG9yaXplZCBmb3IgdGhyb3VnaDBgYWRkX3Byb3h5YC4AqFJlbW92ZXMgYW55IGNvcnJlc3BvbmRpbmcgYW5ub3VuY2VtZW50KHMpLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLmEBLSBgZm9yY2VfcHJveHlfdHlwZWA6IFNwZWNpZnkgdGhlIGV4YWN0IHByb3h5IHR5cGUgdG8gYmUgdXNlZCBhbmQgY2hlY2tlZCBmb3IgdGhpcyBjYWxsLtAtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuMHBva2VfZGVwb3NpdAAKIEkBUG9rZSAvIEFkanVzdCBkZXBvc2l0cyBtYWRlIGZvciBwcm94aWVzIGFuZCBhbm5vdW5jZW1lbnRzIGJhc2VkIG9uIGN1cnJlbnQgdmFsdWVzLg0BVGhpcyBjYW4gYmUgdXNlZCBieSBhY2NvdW50cyB0byBwb3NzaWJseSBsb3dlciB0aGVpciBsb2NrZWQgYW1vdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAAEBVGhlIHRyYW5zYWN0aW9uIGZlZSBpcyB3YWl2ZWQgaWYgdGhlIGRlcG9zaXQgYW1vdW50IGhhcyBjaGFuZ2VkLgCMRW1pdHMgYERlcG9zaXRQb2tlZGAgaWYgc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuGQQEGE9wdGlvbgQEVAEdBAEIEE5vbmUAAAAQU29tZQQAHQQAAAEAAB0ECHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lJFByb3h5VHlwZQABMAxBbnkAAAAsTm9uVHJhbnNmZXIAAQAsQ2FuY2VsUHJveHkAAgAYQXNzZXRzAAMAKEFzc2V0T3duZXIABAAwQXNzZXRNYW5hZ2VyAAUAIENvbGxhdG9yAAYAKEdvdmVybmFuY2UABwAcU3Rha2luZwAIADxOb21pbmF0aW9uUG9vbHMACQAcQXVjdGlvbgAKAEBQYXJhUmVnaXN0cmF0aW9uAAsAACEEDDhwYWxsZXRfaW5kaWNlcxhwYWxsZXQQQ2FsbAQEVAABGBRjbGFpbQQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAAwmEFzc2lnbiBhbiBwcmV2aW91c2x5IHVuYXNzaWduZWQgaW5kZXguANxQYXltZW50OiBgRGVwb3NpdGAgaXMgcmVzZXJ2ZWQgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4A8C0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIGNsYWltZWQuIFRoaXMgbXVzdCBub3QgYmUgaW4gdXNlLgCQRW1pdHMgYEluZGV4QXNzaWduZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLiB0cmFuc2ZlcggBDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAATBdAUFzc2lnbiBhbiBpbmRleCBhbHJlYWR5IG93bmVkIGJ5IHRoZSBzZW5kZXIgdG8gYW5vdGhlciBhY2NvdW50LiBUaGUgYmFsYW5jZSByZXNlcnZhdGlvbrhpcyBlZmZlY3RpdmVseSB0cmFuc2ZlcnJlZCB0byB0aGUgbmV3IGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AJQEtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSByZS1hc3NpZ25lZC4gVGhpcyBtdXN0IGJlIG93bmVkIGJ5IHRoZSBzZW5kZXIuXQEtIGBuZXdgOiB0aGUgbmV3IG93bmVyIG9mIHRoZSBpbmRleC4gVGhpcyBmdW5jdGlvbiBpcyBhIG5vLW9wIGlmIGl0IGlzIGVxdWFsIHRvIHNlbmRlci4AkEVtaXRzIGBJbmRleEFzc2lnbmVkYCBpZiBzdWNjZXNzZnVsLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC4QZnJlZQQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAIwlEZyZWUgdXAgYW4gaW5kZXggb3duZWQgYnkgdGhlIHNlbmRlci4AXQFQYXltZW50OiBBbnkgcHJldmlvdXMgZGVwb3NpdCBwbGFjZWQgZm9yIHRoZSBpbmRleCBpcyB1bnJlc2VydmVkIGluIHRoZSBzZW5kZXIgYWNjb3VudC4AVQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IG93biB0aGUgaW5kZXguAA0BLSBgaW5kZXhgOiB0aGUgaW5kZXggdG8gYmUgZnJlZWQuIFRoaXMgbXVzdCBiZSBvd25lZCBieSB0aGUgc2VuZGVyLgCERW1pdHMgYEluZGV4RnJlZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLjhmb3JjZV90cmFuc2ZlcgwBDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAARhmcmVlemVZAQEQYm9vbAADNFUBRm9yY2UgYW4gaW5kZXggdG8gYW4gYWNjb3VudC4gVGhpcyBkb2Vzbid0IHJlcXVpcmUgYSBkZXBvc2l0LiBJZiB0aGUgaW5kZXggaXMgYWxyZWFkeehoZWxkLCB0aGVuIGFueSBkZXBvc2l0IGlzIHJlaW1idXJzZWQgdG8gaXRzIGN1cnJlbnQgb3duZXIuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uAKQtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSAocmUtKWFzc2lnbmVkLl0BLSBgbmV3YDogdGhlIG5ldyBvd25lciBvZiB0aGUgaW5kZXguIFRoaXMgZnVuY3Rpb24gaXMgYSBuby1vcCBpZiBpdCBpcyBlcXVhbCB0byBzZW5kZXIuQQEtIGBmcmVlemVgOiBpZiBzZXQgdG8gYHRydWVgLCB3aWxsIGZyZWV6ZSB0aGUgaW5kZXggc28gaXQgY2Fubm90IGJlIHRyYW5zZmVycmVkLgCQRW1pdHMgYEluZGV4QXNzaWduZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLhhmcmVlemUEARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAAEMEEBRnJlZXplIGFuIGluZGV4IHNvIGl0IHdpbGwgYWx3YXlzIHBvaW50IHRvIHRoZSBzZW5kZXIgYWNjb3VudC4gVGhpcyBjb25zdW1lcyB0aGUgZGVwb3NpdC4AWQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGhhdmUgYWxub24tZnJvemVuIGFjY291bnQgYGluZGV4YC4ArC0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIGZyb3plbiBpbiBwbGFjZS4AiEVtaXRzIGBJbmRleEZyb3plbmAgaWYgc3VjY2Vzc2Z1bC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuMHBva2VfZGVwb3NpdAQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAUonFBva2UgdGhlIGRlcG9zaXQgcmVzZXJ2ZWQgZm9yIGFuIGluZGV4LgBZAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgaGF2ZSBhbG5vbi1mcm96ZW4gYWNjb3VudCBgaW5kZXhgLgBZAVRoZSB0cmFuc2FjdGlvbiBmZWVzIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBpcyBjaGFuZ2VkIGFmdGVyIHBva2luZy9yZWNvbnNpZGVyYXRpb24uAPwtIGBpbmRleGA6IHRoZSBpbmRleCB3aG9zZSBkZXBvc2l0IGlzIHRvIGJlIHBva2VkL3JlY29uc2lkZXJlZC4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLiUEDDRwYWxsZXRfYXNzZXRzGHBhbGxldBBDYWxsCARUAARJAAGIGGNyZWF0ZQwBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlAABM6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50WQEBEGJvb2wAASxtaW5fYmFsYW5jZVEBAShUOjpCYWxhbmNlAAFM+Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uALRUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AWQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXIgcGVybWlzc2lvbnMlAW92ZXIgdGhpcyBhc3NldCwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWA0c3RhcnRfZGVzdHJveQQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgACMNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlmuGFuIGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS5AZGVzdHJveV9hY2NvdW50cwQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABSjEQ29tcGxldGUgZGVzdHJveWluZyBhc3NldCBhbmQgdW5yZXNlcnZlIGN1cnJlbmN5LgBVAWBmaW5pc2hfZGVzdHJveWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGVZAWFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLiBBbGwgYWNjb3VudHMgb3IgYXBwcm92YWxzIHNob3VsZCBiZSBkZXN0cm95ZWQgYmVmb3JlFGhhbmQuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A4EVhY2ggc3VjY2Vzc2Z1bCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZGAgZXZlbnQuEG1pbnQMAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50UQEBKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFEBAShUOjpCYWxhbmNlAAc8RQFSZWR1Y2UgdGhlIGJhbGFuY2Ugb2YgYHdob2AgYnkgYXMgbXVjaCBhcyBwb3NzaWJsZSB1cCB0byBgYW1vdW50YCBhc3NldHMgb2YgYGlkYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBNYW5hZ2VyIG9mIHRoZSBhc3NldCBgaWRgLgDQQmFpbHMgd2l0aCBgTm9BY2NvdW50YCBpZiB0aGUgYHdob2AgaXMgYWxyZWFkeSBkZWFkLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBidXJuZWQuoC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQgZnJvbS4pAS0gYGFtb3VudGA6IFRoZSBtYXhpbXVtIGFtb3VudCBieSB3aGljaCBgd2hvYCdzIGJhbGFuY2Ugc2hvdWxkIGJlIHJlZHVjZWQuAFEBRW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuIElmIHRoaXMgdGFrZXMgdGhlIGJhbGFuY2UgdG8gYmVsb3cgdGhlOQFtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCBidXJuZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgCQFNb2RlczogUG9zdC1leGlzdGVuY2Ugb2YgYHdob2A7IFByZSAmIHBvc3QgWm9tYmllLXN0YXR1cyBvZiBgd2hvYC4gdHJhbnNmZXIMAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFEBAShUOjpCYWxhbmNlAAhI0E1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLkx0cmFuc2Zlcl9rZWVwX2FsaXZlDAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRRAQEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50UQEBKFQ6OkJhbGFuY2UACky0TW92ZSBzb21lIGFzc2V0cyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6YLSBgc291cmNlYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZC6ULSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgYHNvdXJjZWAncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRZAWBkZXN0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluTQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgYHNvdXJjZWAgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dNRiZWxvdyB0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGBkZXN0YDsgUG9zdC1leGlzdGVuY2Ugb2YgYHNvdXJjZWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZhxgZGVzdGAuGGZyZWV6ZQgBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAswVQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCBmcm9tIGFuIGFjY291bnQgYHdob2AuIGB3aG9gTQFtdXN0IGFscmVhZHkgZXhpc3QgYXMgYW4gZW50cnkgaW4gYEFjY291bnRgcyBvZiB0aGUgYXNzZXQuIElmIHlvdSB3YW50IHRvIGZyZWV6ZSBhbvRhY2NvdW50IHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSwgdXNlIGB0b3VjaF9vdGhlcmAgZmlyc3QuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6ILSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjoQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmZyb3plbi4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWAwZnJlZXplX2Fzc2V0BAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAA0k8ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGNsYXNzLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgKHRoYXdfYXNzZXQEAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADiTEQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA8odENoYW5nZSB0aGUgT3duZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+ABAwxENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4ABFAeFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDYRnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6UQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUgKiAobmFtZS5sZW4gKyBzeW1ib2wubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEEAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAEiyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4ApEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgYXNzZXQgb3duZXIuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2Vfc2V0X21ldGFkYXRhFAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plblkBARBib29sABM4uEZvcmNlIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQgdG8gc29tZSB2YWx1ZS4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBoQW55IGRlcG9zaXQgaXMgbGVmdCBhbG9uZS4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgBRAVdlaWdodDogYE8oTiArIFMpYCB3aGVyZSBOIGFuZCBTIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIGFuZCBzeW1ib2wgcmVzcGVjdGl2ZWx5LlBmb3JjZV9jbGVhcl9tZXRhZGF0YQQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VRAQEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnRZAQEQYm9vbAABJGlzX2Zyb3plblkBARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50UQEBKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb24AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFEBAShUOjpCYWxhbmNlABlITQFUcmFuc2ZlciBzb21lIGFzc2V0IGJhbGFuY2UgZnJvbSBhIHByZXZpb3VzbHkgZGVsZWdhdGVkIGFjY291bnQgdG8gc29tZSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBieSB0aGUgYG93bmVyYCB0byB0aGUcc2lnbmVyLgBZAUlmIHRoZSBlbnRpcmUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2ZlciBpcyB0cmFuc2ZlcnJlZCwgdGhlbiBhbnkgZGVwb3NpdCBwcmV2aW91c2x5tHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBpcyB1bnJlc2VydmVkLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuYQEtIGBvd25lcmA6IFRoZSBhY2NvdW50IHdoaWNoIHByZXZpb3VzbHkgYXBwcm92ZWQgZm9yIGEgdHJhbnNmZXIgb2YgYXQgbGVhc3QgYGFtb3VudGAgYW5kvGZyb20gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugd2lsbCBiZSB3aXRoZHJhd24uYQEtIGBkZXN0aW5hdGlvbmA6IFRoZSBhY2NvdW50IHRvIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIG9mIGBhbW91bnRgIHdpbGwgYmUgdHJhbnNmZXJyZWQutC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXRzIHRvIHRyYW5zZmVyLgCcRW1pdHMgYFRyYW5zZmVycmVkQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYBR0b3VjaAQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAaJMBDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3Igbm9uLXByb3ZpZGVyIGFzc2V0cy4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhhyZWZ1bmQIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAShhbGxvd19idXJuWQEBEGJvb2wAGzRZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdLIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi5hAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLCB0aGUgYXNzZXQgc3RhdHVzIG11c3QoICBiZSBsaXZlLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHjRdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZVkBARBib29sACBAHQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhc3NldCBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0PQFhbnkgaGVsZCwgZnJvemVuLCBvciBtaW5pbXVtIGJhbGFuY2UgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQuoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYXNzZXQgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IHRvIGJlIGtpbGxlZEUBICAoZmFsc2UpLCBvciB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgbWluaW11bSBiYWxhbmNlLCB3aGljaCB3aWxs6CAgZ3VhcmFudGVlIHRvIGtlZXAgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IGFsaXZlICh0cnVlKS4wc2V0X3Jlc2VydmVzCAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgcmVzZXJ2ZXMpBAHIQm91bmRlZFZlYzxUOjpSZXNlcnZlRGF0YSwgQ29uc3RVMzI8TUFYX1JFU0VSVkVTPj4AISTEU2V0cyB0aGUgdHJ1c3RlZCByZXNlcnZlIGluZm9ybWF0aW9uIG9mIGFuIGFzc2V0LgBVAU9yaWdpbiBtdXN0IGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4gVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQlAWBDcmVhdGVPcmlnaW5gIG9yIGJlIHRoZSBzaWduZWQgYG93bmVyYCBjb25maWd1cmVkIGR1cmluZyBhc3NldCBjcmVhdGlvbi4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LvAtIGByZXNlcnZlc2A6IFRoZSBmdWxsIGxpc3Qgb2YgdHJ1c3RlZCByZXNlcnZlcyBpbmZvcm1hdGlvbi4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLikEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBEARTAAAEAC0EARhWZWM8VD4AAC0EAAACEAAxBAw4cGFsbGV0X3VuaXF1ZXMYcGFsbGV0EENhbGwIBFQABEkAAWgYY3JlYXRlCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAEAJAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAdAVRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgCsYEl0ZW1EZXBvc2l0YCBmdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkLgAsUGFyYW1ldGVyczphAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGNvbGxlY3Rpb24uIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZS5FAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJhtZW1iZXIgb2YgdGhlIGNvbGxlY3Rpb24ncyBhZG1pbiB0ZWFtLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEwZnJlZV9ob2xkaW5nWQEBEGJvb2wAAUQZAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4ArFRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4ASQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBpdGVtLiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UuOQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNvbGxlY3Rpb24gb2YgaXRlbXMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXI0ICBwZXJtaXNzaW9ucyEBb3ZlciB0aGlzIGl0ZW0sIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAcZGVzdHJveQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARx3aXRuZXNzNQQBOERlc3Ryb3lXaXRuZXNzAAI8nERlc3Ryb3kgYSBjb2xsZWN0aW9uIG9mIGZ1bmdpYmxlIGl0ZW1zLgBdAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZWhvd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgAFAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB0byBiZSBkZXN0cm95ZWQuMQEtIGB3aXRuZXNzYDogSW5mb3JtYXRpb24gb24gdGhlIGl0ZW1zIG1pbnRlZCBpbiB0aGUgY29sbGVjdGlvbi4gVGhpcyBtdXN0IGJlIGNvcnJlY3QuAKBFbWl0cyBgRGVzdHJveWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuAGRXZWlnaHQ6IGBPKG4gKyBtKWAgd2hlcmU6VC0gYG4gPSB3aXRuZXNzLml0ZW1zYHgtIGBtID0gd2l0bmVzcy5pdGVtX21ldGFkYXRhc2BoLSBgYSA9IHdpdG5lc3MuYXR0cmlidXRlc2AQbWludAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADLKBNaW50IGFuIGl0ZW0gb2YgYSBwYXJ0aWN1bGFyIGNvbGxlY3Rpb24uAEEBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBJc3N1ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBtaW50ZWQuyC0gYGl0ZW1gOiBUaGUgaXRlbSB2YWx1ZSBvZiB0aGUgaXRlbSB0byBiZSBtaW50ZWQu2C0gYGJlbmVmaWNpYXJ5YDogVGhlIGluaXRpYWwgb3duZXIgb2YgdGhlIG1pbnRlZCBpdGVtLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAQYnVybgwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEsY2hlY2tfb3duZXI5BAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAEPFhEZXN0cm95IGEgc2luZ2xlIGl0ZW0uAPRPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBiZSBlaXRoZXI6gC0gdGhlIEFkbWluIG9mIHRoZSBgY29sbGVjdGlvbmA7aC0gdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLrAtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLlEBLSBgY2hlY2tfb3duZXJgOiBJZiBgU29tZWAgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCB3aXRoIGBXcm9uZ093bmVyYCB1bmxlc3MgdGhleCAgaXRlbSBpcyBvd25lZCBieSB0aGlzIHZhbHVlLgC0RW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuADhXZWlnaHQ6IGBPKDEpYHxNb2RlczogYGNoZWNrX293bmVyLmlzX3NvbWUoKWAuIHRyYW5zZmVyDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABUTATW92ZSBhbiBpdGVtIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuALRUaGlzIHJlc2V0cyB0aGUgYXBwcm92ZWQgYWNjb3VudCBvZiB0aGUgaXRlbS4A9E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlIGVpdGhlcjqALSB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYDtoLSB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDs1AS0gdGhlIGFwcHJvdmVkIGRlbGVnYXRlIGZvciB0aGUgYGl0ZW1gIChpbiB0aGlzIGNhc2UsIHRoZSBhcHByb3ZhbCBpcyByZXNldCkuAChBcmd1bWVudHM69C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSB0cmFuc2ZlcnJlZC7ELSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIHRyYW5zZmVycmVkLtwtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gcmVjZWl2ZSBvd25lcnNoaXAgb2YgdGhlIGl0ZW0uAFBFbWl0cyBgVHJhbnNmZXJyZWRgLgA4V2VpZ2h0OiBgTygxKWAkcmVkZXBvc2l0CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFGl0ZW1zPQQBOFZlYzxUOjpJdGVtSWQ+AAZEmFJlZXZhbHVhdGUgdGhlIGRlcG9zaXRzIG9uIHNvbWUgaXRlbXMuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBmcm96ZW4uKQEtIGBpdGVtc2A6IFRoZSBpdGVtcyBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBkZXBvc2l0cyB3aWxsIGJlIHJlZXZhbHVhdGVkLgAtAU5PVEU6IFRoaXMgZXhpc3RzIGFzIGEgYmVzdC1lZmZvcnQgZnVuY3Rpb24uIEFueSBpdGVtcyB3aGljaCBhcmUgdW5rbm93biBvcjkBaW4gdGhlIGNhc2UgdGhhdCB0aGUgb3duZXIgYWNjb3VudCBkb2VzIG5vdCBoYXZlIHJlc2VydmFibGUgZnVuZHMgdG8gcGF5IGZvciBhTQFkZXBvc2l0IGluY3JlYXNlIGFyZSBpZ25vcmVkLiBHZW5lcmFsbHkgdGhlIG93bmVyIGlzbid0IGdvaW5nIHRvIGNhbGwgdGhpcyBvbiBpdGVtc1UBd2hvc2UgZXhpc3RpbmcgZGVwb3NpdCBpcyBsZXNzIHRoYW4gdGhlIHJlZnJlc2hlZCBkZXBvc2l0IGFzIGl0IHdvdWxkIG9ubHkgY29zdCB0aGVtLHhzbyBpdCdzIG9mIGxpdHRsZSBjb25zZXF1ZW5jZS4AWQFJdCB3aWxsIHN0aWxsIHJldHVybiBhbiBlcnJvciBpbiB0aGUgY2FzZSB0aGF0IHRoZSBjb2xsZWN0aW9uIGlzIHVua25vd24gb2YgdGhlIHNpZ25lcnBpcyBub3QgcGVybWl0dGVkIHRvIGNhbGwgaXQuAGBXZWlnaHQ6IGBPKGl0ZW1zLmxlbigpKWAYZnJlZXplCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAByjIRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXIgb2YgYW4gaXRlbS4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgZnJvemVuLrAtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQACCioUmUtYWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVyIG9mIGFuIGl0ZW0uAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHRoYXdlZC6wLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBEZnJlZXplX2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAkk/ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgYSB3aG9sZSBjb2xsZWN0aW9uLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBmcm96ZW4uAGRFbWl0cyBgQ29sbGVjdGlvbkZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYDx0aGF3X2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAok3FJlLWFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIGEgd2hvbGUgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYGNvbGxlY3Rpb25gLgCwLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHRvIGJlIHRoYXdlZC4AZEVtaXRzIGBDb2xsZWN0aW9uVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgALLIRDaGFuZ2UgdGhlIE93bmVyIG9mIGEgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgD0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHdob3NlIG93bmVyIHNob3VsZCBiZSBjaGFuZ2VkLgkBLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhleSBtdXN0IGhhdmUgY2FsbGVkSQEgIGBzZXRfYWNjZXB0X293bmVyc2hpcGAgd2l0aCBgY29sbGVjdGlvbmAgaW4gb3JkZXIgZm9yIHRoaXMgb3BlcmF0aW9uIHRvIHN1Y2NlZWQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAMMNRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYSBjb2xsZWN0aW9uLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAPAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gd2hvc2UgdGVhbSBzaG91bGQgYmUgY2hhbmdlZC64LSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBjb2xsZWN0aW9uLrAtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBjb2xsZWN0aW9uLsAtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgY29sbGVjdGlvbi4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AA04FQFBcHByb3ZlIGFuIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4ATQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZfhlaXRoZXIgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAgb3IgdGhlIGFkbWluIG9mIHRoZSBjb2xsZWN0aW9uLgBFAS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyLhUBLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIuGQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgdGhlIGl0ZW0uABkBSW1wb3J0YW50IE5PVEU6IFRoZSBgYXBwcm92ZWRgIGFjY291bnQgZ2V0cyByZXNldCBhZnRlciBlYWNoIHRyYW5zZmVyLgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABUG1heWJlX2NoZWNrX2RlbGVnYXRlOQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4ADkARAUNhbmNlbCB0aGUgcHJpb3IgYXBwcm92YWwgZm9yIHRoZSB0cmFuc2ZlciBvZiBhbiBpdGVtIGJ5IGEgZGVsZWdhdGUuAFhPcmlnaW4gbXVzdCBiZSBlaXRoZXI6VC0gdGhlIGBGb3JjZWAgb3JpZ2luO/wtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYDvkLSBgU2lnbmVkYCB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AChBcmd1bWVudHM6PQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWwgd2lsbCBiZSBjYW5jZWxsZWQuDQEtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWwgd2lsbCBiZSBjYW5jZWxsZWQuUQEtIGBtYXliZV9jaGVja19kZWxlZ2F0ZWA6IElmIGBTb21lYCB3aWxsIGVuc3VyZSB0aGF0IHRoZSBnaXZlbiBhY2NvdW50IGlzIHRoZSBvbmUgdG+wICB3aGljaCBwZXJtaXNzaW9uIG9mIHRyYW5zZmVyIGlzIGRlbGVnYXRlZC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRGZvcmNlX2l0ZW1fc3RhdHVzHAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATBmcmVlX2hvbGRpbmdZAQEQYm9vbAABJGlzX2Zyb3plblkBARBib29sAA9AlEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gaXRlbS4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0umC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGl0ZW0uoC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgaXRlbS6YLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgaXRlbS6oLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGl0ZW0uUQEtIGBmcmVlX2hvbGRpbmdgOiBXaGV0aGVyIGEgZGVwb3NpdCBpcyB0YWtlbiBmb3IgaG9sZGluZyBhbiBpdGVtIG9mIHRoaXMgY29sbGVjdGlvbi45AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhpcyBjb2xsZWN0aW9uIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOBFbWl0cyBgSXRlbVN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBpdGVtLgA4V2VpZ2h0OiBgTygxKWA0c2V0X2F0dHJpYnV0ZRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXnBAwFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWV4AXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAQRKhTZXQgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGU0YGNvbGxlY3Rpb25gLgBRAUlmIHRoZSBvcmlnaW4gaXMgU2lnbmVkLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOikBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIChrZXkubGVuICsgdmFsdWUubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC4FAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS7MLSBgdmFsdWVgOiBUaGUgdmFsdWUgdG8gd2hpY2ggdG8gc2V0IHRoZSBhdHRyaWJ1dGUuAFRFbWl0cyBgQXR0cmlidXRlU2V0YC4AOFdlaWdodDogYE8oMSlgPGNsZWFyX2F0dHJpYnV0ZQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXnBAwFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+ABE4sENsZWFyIGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlNGBjb2xsZWN0aW9uYC4AwEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgY29sbGVjdGlvbidzIG93bmVyLgBBAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gY2xlYXIuDQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS4AZEVtaXRzIGBBdHRyaWJ1dGVDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgMHNldF9tZXRhZGF0YRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGF0YUEEAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AASRpc19mcm96ZW5ZAQEQYm9vbAASRHRTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBSWYgdGhlIG9yaWdpbiBpcyBTaWduZWQsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC7sLSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuNQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgZnJvemVuIGFnYWluc3QgZnVydGhlciBjaGFuZ2VzLgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAEzR8Q2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZRxgaXRlbWAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLvQtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgXHNldF9jb2xsZWN0aW9uX21ldGFkYXRhDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGFBBAF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuWQEBEGJvb2wAFECIU2V0IHRoZSBtZXRhZGF0YSBmb3IgYSBjb2xsZWN0aW9uLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4AWQFJZiB0aGUgb3JpZ2luIGlzIGBTaWduZWRgLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOvRgTWV0YWRhdGFEZXBvc2l0QmFzZSArIERlcG9zaXRQZXJCeXRlICogZGF0YS5sZW5gIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuABEBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHVwZGF0ZS5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuNQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgZnJvemVuIGFnYWluc3QgZnVydGhlciBjaGFuZ2VzLgB4RW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYGRjbGVhcl9jb2xsZWN0aW9uX21ldGFkYXRhBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAVMJBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGEgY29sbGVjdGlvbi4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mRHRoZSBgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AJQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAIhFbWl0cyBgQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFBzZXRfYWNjZXB0X293bmVyc2hpcAQBQG1heWJlX2NvbGxlY3Rpb27gAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAWKBEBU2V0IChvciByZXNldCkgdGhlIGFjY2VwdGFuY2Ugb2Ygb3duZXJzaGlwIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudC4AYQFPcmlnaW4gbXVzdCBiZSBgU2lnbmVkYCBhbmQgaWYgYG1heWJlX2NvbGxlY3Rpb25gIGlzIGBTb21lYCwgdGhlbiB0aGUgc2lnbmVyIG11c3QgaGF2ZSBhTHByb3ZpZGVyIHJlZmVyZW5jZS4AUQEtIGBtYXliZV9jb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2Ugb3duZXJzaGlwIHRoZSBzaWduZXIgaXNhASAgd2lsbGluZyB0byBhY2NlcHQsIG9yIGlmIGBOb25lYCwgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZSBzaWduZXIgaXMgd2lsbGluZyB0byBhY2NlcHQgbm9cICBvd25lcnNoaXAgdHJhbnNmZXJhbC4AjEVtaXRzIGBPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZGAuZHNldF9jb2xsZWN0aW9uX21heF9zdXBwbHkIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseTgBDHUzMgAXLOBTZXQgdGhlIG1heGltdW0gYW1vdW50IG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBjb3VsZCBoYXZlLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4A5E5vdGU6IFRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgc3VjY2VlZCBvbmNlIHBlciBjb2xsZWN0aW9uLgDsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGNoYW5nZS4RAS0gYG1heF9zdXBwbHlgOiBUaGUgbWF4aW11bSBhbW91bnQgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGNvdWxkIGhhdmUuANRFbWl0cyBgQ29sbGVjdGlvbk1heFN1cHBseVNldGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLiRzZXRfcHJpY2UQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlRQQBXE9wdGlvbjxJdGVtUHJpY2U8VCwgST4+AAFEd2hpdGVsaXN0ZWRfYnV5ZXI5BAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAYLJRTZXQgKG9yIHJlc2V0KSB0aGUgcHJpY2UgZm9yIGFuIGl0ZW0uAAEBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIHRoZSBvd25lciBvZiB0aGUgYXNzZXQgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqAtIGBpdGVtYDogVGhlIGl0ZW0gdG8gc2V0IHRoZSBwcmljZSBmb3IuDQEtIGBwcmljZWA6IFRoZSBwcmljZSBmb3IgdGhlIGl0ZW0uIFBhc3MgYE5vbmVgLCB0byByZXNldCB0aGUgcHJpY2Uu9C0gYGJ1eWVyYDogUmVzdHJpY3RzIHRoZSBidXkgb3BlcmF0aW9uIHRvIGEgc3BlY2lmaWMgYWNjb3VudC4A7EVtaXRzIGBJdGVtUHJpY2VTZXRgIG9uIHN1Y2Nlc3MgaWYgdGhlIHByaWNlIGlzIG5vdCBgTm9uZWAu7EVtaXRzIGBJdGVtUHJpY2VSZW1vdmVkYCBvbiBzdWNjZXNzIGlmIHRoZSBwcmljZSBpcyBgTm9uZWAuIGJ1eV9pdGVtDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASRiaWRfcHJpY2VVAQE8SXRlbVByaWNlPFQsIEk+ABkkqEFsbG93cyB0byBidXkgYW4gaXRlbSBpZiBpdCdzIHVwIGZvciBzYWxlLgD4T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IG5vdCBiZSB0aGUgb3duZXIgb2YgdGhlIGBpdGVtYC4ArC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbS6sLSBgaXRlbWA6IFRoZSBpdGVtIHRoZSBzZW5kZXIgd2FudHMgdG8gYnV5LtgtIGBiaWRfcHJpY2VgOiBUaGUgcHJpY2UgdGhlIHNlbmRlciBpcyB3aWxsaW5nIHRvIHBheS4AeEVtaXRzIGBJdGVtQm91Z2h0YCBvbiBzdWNjZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy41BAw4cGFsbGV0X3VuaXF1ZXMUdHlwZXM4RGVzdHJveVdpdG5lc3MAAAwBFGl0ZW1zYAEMdTMyAAE4aXRlbV9tZXRhZGF0YXNgAQx1MzIAAShhdHRyaWJ1dGVzYAEMdTMyAAA5BAQYT3B0aW9uBARUAQABCBBOb25lAAAAEFNvbWUEAAAAAAEAAD0EAAACOABBBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAEUEBBhPcHRpb24EBFQBVQEBCBBOb25lAAAAEFNvbWUEAFUBAAABAABJBAwscGFsbGV0X25mdHMYcGFsbGV0EENhbGwIBFQABEkAAZwYY3JlYXRlCAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGNvbmZpZ00EAWRDb2xsZWN0aW9uQ29uZmlnRm9yPFQsIEk+AAA8CQFJc3N1ZSBhIG5ldyBjb2xsZWN0aW9uIG9mIG5vbi1mdW5naWJsZSBpdGVtcyBmcm9tIGEgcHVibGljIG9yaWdpbi4AHQFUaGlzIG5ldyBjb2xsZWN0aW9uIGhhcyBubyBpdGVtcyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgAlAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AxGBDb2xsZWN0aW9uRGVwb3NpdGAgZnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZC4ALFBhcmFtZXRlcnM6RQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2iYbWVtYmVyIG9mIHRoZSBjb2xsZWN0aW9uJ3MgYWRtaW4gdGVhbS4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUIARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYY29uZmlnTQQBZENvbGxlY3Rpb25Db25maWdGb3I8VCwgST4AATwZAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4ArFRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AOQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNvbGxlY3Rpb24gb2YgaXRlbXMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXJZASAgcGVybWlzc2lvbnMgb3ZlciB0aGlzIGl0ZW0sIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nmCAgYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuAKxFbWl0cyBgRm9yY2VDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYBxkZXN0cm95CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABHHdpdG5lc3NpBAE4RGVzdHJveVdpdG5lc3MAAkScRGVzdHJveSBhIGNvbGxlY3Rpb24gb2YgZnVuZ2libGUgaXRlbXMuAF0BVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlaG93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuANxOT1RFOiBUaGUgY29sbGVjdGlvbiBtdXN0IGhhdmUgMCBpdGVtcyB0byBiZSBkZXN0cm95ZWQuAAUBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGJlIGRlc3Ryb3llZC4xAS0gYHdpdG5lc3NgOiBJbmZvcm1hdGlvbiBvbiB0aGUgaXRlbXMgbWludGVkIGluIHRoZSBjb2xsZWN0aW9uLiBUaGlzIG11c3QgYmUgY29ycmVjdC4AoEVtaXRzIGBEZXN0cm95ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AdFdlaWdodDogYE8obSArIGMgKyBhKWAgd2hlcmU6eC0gYG0gPSB3aXRuZXNzLml0ZW1fbWV0YWRhdGFzYHAtIGBjID0gd2l0bmVzcy5pdGVtX2NvbmZpZ3NgaC0gYGEgPSB3aXRuZXNzLmF0dHJpYnV0ZXNgEG1pbnQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABHG1pbnRfdG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABMHdpdG5lc3NfZGF0YW0EAdhPcHRpb248TWludFdpdG5lc3M8VDo6SXRlbUlkLCBEZXBvc2l0QmFsYW5jZU9mPFQsIEk+Pj4AA0CgTWludCBhbiBpdGVtIG9mIGEgcGFydGljdWxhciBjb2xsZWN0aW9uLgBRAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBjb21wbHkgd2l0aCB0aGUgYG1pbnRfc2V0dGluZ3NgIHJ1bGVzLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIG1pbnRlZC6gLSBgaXRlbWA6IEFuIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBpdGVtLuAtIGBtaW50X3RvYDogQWNjb3VudCBpbnRvIHdoaWNoIHRoZSBpdGVtIHdpbGwgYmUgbWludGVkLkUBLSBgd2l0bmVzc19kYXRhYDogV2hlbiB0aGUgbWludCB0eXBlIGlzIGBIb2xkZXJPZihjb2xsZWN0aW9uX2lkKWAsIHRoZW4gdGhlIG93bmVkWQEgIGl0ZW1faWQgZnJvbSB0aGF0IGNvbGxlY3Rpb24gbmVlZHMgdG8gYmUgcHJvdmlkZWQgd2l0aGluIHRoZSB3aXRuZXNzIGRhdGEgb2JqZWN0LiBJZmEBICB0aGUgbWludCBwcmljZSBpcyBzZXQsIHRoZW4gaXQgc2hvdWxkIGJlIGFkZGl0aW9uYWxseSBjb25maXJtZWQgaW4gdGhlIGB3aXRuZXNzX2RhdGFgLgBRAU5vdGU6IHRoZSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgYG9yaWdpbmAgYW5kIG5vdCB0aGUgYG93bmVyYCBvZiB0aGUgYGl0ZW1gLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAoZm9yY2VfbWludBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEcbWludF90bwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsaXRlbV9jb25maWd1BAEoSXRlbUNvbmZpZwAENAUBTWludCBhbiBpdGVtIG9mIGEgcGFydGljdWxhciBjb2xsZWN0aW9uIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGVsSXNzdWVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgbWludGVkLqAtIGBpdGVtYDogQW4gaWRlbnRpZmllciBvZiB0aGUgbmV3IGl0ZW0u4C0gYG1pbnRfdG9gOiBBY2NvdW50IGludG8gd2hpY2ggdGhlIGl0ZW0gd2lsbCBiZSBtaW50ZWQuqC0gYGl0ZW1fY29uZmlnYDogQSBjb25maWcgb2YgdGhlIG5ldyBpdGVtLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAQYnVybggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAUsWERlc3Ryb3kgYSBzaW5nbGUgaXRlbS4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3RsYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLoAtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmUgYnVybmVkLgA8RW1pdHMgYEJ1cm5lZGAuADhXZWlnaHQ6IGBPKDEpYCB0cmFuc2ZlcgwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAY4wE1vdmUgYW4gaXRlbSBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLgD0T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgYmUgZWl0aGVyOmgtIHRoZSBPd25lciBvZiB0aGUgYGl0ZW1gOzUBLSB0aGUgYXBwcm92ZWQgZGVsZWdhdGUgZm9yIHRoZSBgaXRlbWAgKGluIHRoaXMgY2FzZSwgdGhlIGFwcHJvdmFsIGlzIHJlc2V0KS4AKEFyZ3VtZW50czr0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHRyYW5zZmVycmVkLpQtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQu3C0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byByZWNlaXZlIG93bmVyc2hpcCBvZiB0aGUgaXRlbS4AUEVtaXRzIGBUcmFuc2ZlcnJlZGAuADhXZWlnaHQ6IGBPKDEpYCRyZWRlcG9zaXQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUaXRlbXM9BAE4VmVjPFQ6Okl0ZW1JZD4AB0ScUmUtZXZhbHVhdGUgdGhlIGRlcG9zaXRzIG9uIHNvbWUgaXRlbXMuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A+C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbXMgdG8gYmUgcmVldmFsdWF0ZWQuKQEtIGBpdGVtc2A6IFRoZSBpdGVtcyBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBkZXBvc2l0cyB3aWxsIGJlIHJlZXZhbHVhdGVkLgAtAU5PVEU6IFRoaXMgZXhpc3RzIGFzIGEgYmVzdC1lZmZvcnQgZnVuY3Rpb24uIEFueSBpdGVtcyB3aGljaCBhcmUgdW5rbm93biBvcjkBaW4gdGhlIGNhc2UgdGhhdCB0aGUgb3duZXIgYWNjb3VudCBkb2VzIG5vdCBoYXZlIHJlc2VydmFibGUgZnVuZHMgdG8gcGF5IGZvciBhTQFkZXBvc2l0IGluY3JlYXNlIGFyZSBpZ25vcmVkLiBHZW5lcmFsbHkgdGhlIG93bmVyIGlzbid0IGdvaW5nIHRvIGNhbGwgdGhpcyBvbiBpdGVtc1UBd2hvc2UgZXhpc3RpbmcgZGVwb3NpdCBpcyBsZXNzIHRoYW4gdGhlIHJlZnJlc2hlZCBkZXBvc2l0IGFzIGl0IHdvdWxkIG9ubHkgY29zdCB0aGVtLHhzbyBpdCdzIG9mIGxpdHRsZSBjb25zZXF1ZW5jZS4AWQFJdCB3aWxsIHN0aWxsIHJldHVybiBhbiBlcnJvciBpbiB0aGUgY2FzZSB0aGF0IHRoZSBjb2xsZWN0aW9uIGlzIHVua25vd24gb3IgdGhlIHNpZ25lcnBpcyBub3QgcGVybWl0dGVkIHRvIGNhbGwgaXQuAGBXZWlnaHQ6IGBPKGl0ZW1zLmxlbigpKWBIbG9ja19pdGVtX3RyYW5zZmVyCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQACCjIRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXIgb2YgYW4gaXRlbS4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgY2hhbmdlZC64LSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlY29tZSBub24tdHJhbnNmZXJhYmxlLgBsRW1pdHMgYEl0ZW1UcmFuc2ZlckxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYFB1bmxvY2tfaXRlbV90cmFuc2ZlcggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAkoqFJlLWFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlciBvZiBhbiBpdGVtLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A5C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBjaGFuZ2VkLqgtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmVjb21lIHRyYW5zZmVyYWJsZS4AdEVtaXRzIGBJdGVtVHJhbnNmZXJVbmxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYDxsb2NrX2NvbGxlY3Rpb24IAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAE0bG9ja19zZXR0aW5nc1EEAUhDb2xsZWN0aW9uU2V0dGluZ3MACjDYRGlzYWxsb3dzIHNwZWNpZmllZCBzZXR0aW5ncyBmb3IgdGhlIHdob2xlIGNvbGxlY3Rpb24uADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBsb2NrZWQutC0gYGxvY2tfc2V0dGluZ3NgOiBUaGUgc2V0dGluZ3MgdG8gYmUgbG9ja2VkLgAdAU5vdGU6IGl0J3MgcG9zc2libGUgdG8gb25seSBsb2NrKHNldCkgdGhlIHNldHRpbmcsIGJ1dCBub3QgdG8gdW5zZXQgaXQuAGRFbWl0cyBgQ29sbGVjdGlvbkxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkbmV3X293bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ACyyEQ2hhbmdlIHRoZSBPd25lciBvZiBhIGNvbGxlY3Rpb24uADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A9C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB3aG9zZSBvd25lciBzaG91bGQgYmUgY2hhbmdlZC4JAS0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZXkgbXVzdCBoYXZlIGNhbGxlZEkBICBgc2V0X2FjY2VwdF9vd25lcnNoaXBgIHdpdGggYGNvbGxlY3Rpb25gIGluIG9yZGVyIGZvciB0aGlzIG9wZXJhdGlvbiB0byBzdWNjZWVkLgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARhpc3N1ZXI5BAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgABFGFkbWluOQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4AARxmcmVlemVyOQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4ADEDUQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGEgY29sbGVjdGlvbi4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGU0YGNvbGxlY3Rpb25gLgBRAU5vdGU6IGJ5IHNldHRpbmcgdGhlIHJvbGUgdG8gYE5vbmVgIG9ubHkgdGhlIGBGb3JjZU9yaWdpbmAgd2lsbCBiZSBhYmxlIHRvIGNoYW5nZSBpdGRhZnRlciB0byBgU29tZShhY2NvdW50KWAuAPAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gd2hvc2UgdGVhbSBzaG91bGQgYmUgY2hhbmdlZC64LSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBjb2xsZWN0aW9uLrAtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBjb2xsZWN0aW9uLsAtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgY29sbGVjdGlvbi4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYFhmb3JjZV9jb2xsZWN0aW9uX293bmVyCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADSiEQ2hhbmdlIHRoZSBPd25lciBvZiBhIGNvbGxlY3Rpb24uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgDELSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uLrAtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBjb2xsZWN0aW9uLgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYFxmb3JjZV9jb2xsZWN0aW9uX2NvbmZpZwgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARhjb25maWdNBAFkQ29sbGVjdGlvbkNvbmZpZ0ZvcjxULCBJPgAOKIhDaGFuZ2UgdGhlIGNvbmZpZyBvZiBhIGNvbGxlY3Rpb24uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgDELSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uLrgtIGBjb25maWdgOiBUaGUgbmV3IGNvbmZpZyBvZiB0aGlzIGNvbGxlY3Rpb24uAIBFbWl0cyBgQ29sbGVjdGlvbkNvbmZpZ0NoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlchABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABOG1heWJlX2RlYWRsaW5l4AFwT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQsIEk+PgAPOBUBQXBwcm92ZSBhbiBpdGVtIHRvIGJlIHRyYW5zZmVycmVkIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlHGBpdGVtYC4ARQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2Zlci7kLSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlIGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIuGQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgdGhlIGl0ZW0uSQEtIGBtYXliZV9kZWFkbGluZWA6IE9wdGlvbmFsIGRlYWRsaW5lIGZvciB0aGUgYXBwcm92YWwuIFNwZWNpZmllZCBieSBwcm92aWRpbmcgdGhl2AludW1iZXIgb2YgYmxvY2tzIGFmdGVyIHdoaWNoIHRoZSBhcHByb3ZhbCB3aWxsIGV4cGlyZQCQRW1pdHMgYFRyYW5zZmVyQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AEDjkQ2FuY2VsIG9uZSBvZiB0aGUgdHJhbnNmZXIgYXBwcm92YWxzIGZvciBhIHNwZWNpZmljIGl0ZW0uAFhPcmlnaW4gbXVzdCBiZSBlaXRoZXI6VC0gdGhlIGBGb3JjZWAgb3JpZ2luO+QtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDsAKEFyZ3VtZW50czo9AS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC4lAS0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgY29sbGVjdGlvbiBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC4BAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdGhhdCBpcyBnb2luZyB0byBsb29zZSB0aGVpciBhcHByb3ZhbC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgcGNsZWFyX2FsbF90cmFuc2Zlcl9hcHByb3ZhbHMIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAARNLBDYW5jZWwgYWxsIHRoZSBhcHByb3ZhbHMgb2YgYSBzcGVjaWZpYyBpdGVtLgBYT3JpZ2luIG11c3QgYmUgZWl0aGVyOlQtIHRoZSBgRm9yY2VgIG9yaWdpbjvkLSBgU2lnbmVkYCB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AChBcmd1bWVudHM6OQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWxzIHdpbGwgYmUgY2xlYXJlZC4hAS0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgY29sbGVjdGlvbiBvZiB3aG9zZSBhcHByb3ZhbHMgd2lsbCBiZSBjbGVhcmVkLgCkRW1pdHMgYEFsbEFwcHJvdmFsc0NhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgUGxvY2tfaXRlbV9wcm9wZXJ0aWVzEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAATRsb2NrX21ldGFkYXRhWQEBEGJvb2wAATxsb2NrX2F0dHJpYnV0ZXNZAQEQYm9vbAASROhEaXNhbGxvd3MgY2hhbmdpbmcgdGhlIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZXMgb2YgdGhlIGl0ZW0uAEEBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW5Qb2YgdGhlIGBjb2xsZWN0aW9uYC4AtC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBpZiB0aGUgYGl0ZW1gLnwtIGBpdGVtYDogQW4gaXRlbSB0byBiZSBsb2NrZWQuDQEtIGBsb2NrX21ldGFkYXRhYDogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIG1ldGFkYXRhIHNob3VsZCBiZSBsb2NrZWQuYQEtIGBsb2NrX2F0dHJpYnV0ZXNgOiBTcGVjaWZpZXMgd2hldGhlciB0aGUgYXR0cmlidXRlcyBpbiB0aGUgYENvbGxlY3Rpb25Pd25lcmAgbmFtZXNwYWNlTCAgc2hvdWxkIGJlIGxvY2tlZC4AXQFOb3RlOiBgbG9ja19hdHRyaWJ1dGVzYCBhZmZlY3RzIHRoZSBhdHRyaWJ1dGVzIGluIHRoZSBgQ29sbGVjdGlvbk93bmVyYCBuYW1lc3BhY2Ugb25seS5FAVdoZW4gdGhlIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZXMgYXJlIGxvY2tlZCwgaXQgd29uJ3QgYmUgcG9zc2libGUgdGhlIHVubG9jayB0aGVtLgB0RW1pdHMgYEl0ZW1Qcm9wZXJ0aWVzTG9ja2VkYC4AOFdlaWdodDogYE8oMSlgNHNldF9hdHRyaWJ1dGUUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeABRE9wdGlvbjxUOjpJdGVtSWQ+AAEkbmFtZXNwYWNleQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+AAEMa2V5eAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWVBAQF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AE1ioU2V0IGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAAEBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGNvbmZvcm0gdG8gdGhlIG5hbWVzcGFjZSBydWxlc2V0Oj0BLSBgQ29sbGVjdGlvbk93bmVyYCBuYW1lc3BhY2UgY291bGQgYmUgbW9kaWZpZWQgYnkgdGhlIGBjb2xsZWN0aW9uYCBBZG1pbiBvbmx5O1kBLSBgSXRlbU93bmVyYCBuYW1lc3BhY2UgY291bGQgYmUgbW9kaWZpZWQgYnkgdGhlIGBtYXliZV9pdGVtYCBvd25lciBvbmx5LiBgbWF5YmVfaXRlbWB0ICBzaG91bGQgYmUgc2V0IGluIHRoYXQgY2FzZTtVAS0gYEFjY291bnQoQWNjb3VudElkKWAgbmFtZXNwYWNlIGNvdWxkIGJlIG1vZGlmaWVkIG9ubHkgd2hlbiB0aGUgYG9yaWdpbmAgd2FzIGdpdmVuIGFYICBwZXJtaXNzaW9uIHRvIGRvIHNvOwDwVGhlIGZ1bmRzIG9mIGBvcmlnaW5gIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6LQFgQXR0cmlidXRlRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIChrZXkubGVuICsgdmFsdWUubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC4FAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQulC0gYG5hbWVzcGFjZWA6IEF0dHJpYnV0ZSdzIG5hbWVzcGFjZS6ILSBga2V5YDogVGhlIGtleSBvZiB0aGUgYXR0cmlidXRlLswtIGB2YWx1ZWA6IFRoZSB2YWx1ZSB0byB3aGljaCB0byBzZXQgdGhlIGF0dHJpYnV0ZS4AVEVtaXRzIGBBdHRyaWJ1dGVTZXRgLgA4V2VpZ2h0OiBgTygxKWBMZm9yY2Vfc2V0X2F0dHJpYnV0ZRgBGHNldF9hc40BAVBPcHRpb248VDo6QWNjb3VudElkPgABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AASRuYW1lc3BhY2V5BAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AAQxrZXl4AWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AARR2YWx1ZUEBAXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAURMBGb3JjZS1zZXQgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuADkBSWYgdGhlIGF0dHJpYnV0ZSBhbHJlYWR5IGV4aXN0cyBhbmQgaXQgd2FzIHNldCBieSBhbm90aGVyIGFjY291bnQsIHRoZSBkZXBvc2l0nHdpbGwgYmUgcmV0dXJuZWQgdG8gdGhlIHByZXZpb3VzIG93bmVyLgC8LSBgc2V0X2FzYDogQW4gb3B0aW9uYWwgb3duZXIgb2YgdGhlIGF0dHJpYnV0ZS45AS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gc2V0LgUBLSBgbWF5YmVfaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC6ULSBgbmFtZXNwYWNlYDogQXR0cmlidXRlJ3MgbmFtZXNwYWNlLogtIGBrZXlgOiBUaGUga2V5IG9mIHRoZSBhdHRyaWJ1dGUuzC0gYHZhbHVlYDogVGhlIHZhbHVlIHRvIHdoaWNoIHRvIHNldCB0aGUgYXR0cmlidXRlLgBURW1pdHMgYEF0dHJpYnV0ZVNldGAuADhXZWlnaHQ6IGBPKDEpYDxjbGVhcl9hdHRyaWJ1dGUQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeABRE9wdGlvbjxUOjpJdGVtSWQ+AAEkbmFtZXNwYWNleQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+AAEMa2V5eAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+ABU8sENsZWFyIGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlKGF0dHJpYnV0ZS4AwEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgY29sbGVjdGlvbidzIG93bmVyLgBBAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gY2xlYXIuDQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIulC0gYG5hbWVzcGFjZWA6IEF0dHJpYnV0ZSdzIG5hbWVzcGFjZS6ILSBga2V5YDogVGhlIGtleSBvZiB0aGUgYXR0cmlidXRlLgBkRW1pdHMgYEF0dHJpYnV0ZUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBcYXBwcm92ZV9pdGVtX2F0dHJpYnV0ZXMMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFiQtAUFwcHJvdmUgaXRlbSdzIGF0dHJpYnV0ZXMgdG8gYmUgY2hhbmdlZCBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgDkT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgaXRlbWAuAKQtIGBjb2xsZWN0aW9uYDogQSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqQtIGBpdGVtYDogVGhlIGl0ZW0gdGhhdCBob2xkcyBhdHRyaWJ1dGVzLkkBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBhdHRyaWJ1dGVzIG9mIHRoZSBpdGVtLgC8RW1pdHMgYEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxBZGRlZGAgb24gc3VjY2Vzcy58Y2FuY2VsX2l0ZW1fYXR0cmlidXRlc19hcHByb3ZhbBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHHdpdG5lc3N9BAF8Q2FuY2VsQXR0cmlidXRlc0FwcHJvdmFsV2l0bmVzcwAXKBEBQ2FuY2VsIHRoZSBwcmV2aW91c2x5IHByb3ZpZGVkIGFwcHJvdmFsIHRvIGNoYW5nZSBpdGVtJ3MgYXR0cmlidXRlcy4RAUFsbCB0aGUgcHJldmlvdXNseSBzZXQgYXR0cmlidXRlcyBieSB0aGUgYGRlbGVnYXRlYCB3aWxsIGJlIHJlbW92ZWQuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4A9C0gYGNvbGxlY3Rpb25gOiBDb2xsZWN0aW9uIHRoYXQgdGhlIGl0ZW0gaXMgY29udGFpbmVkIHdpdGhpbi6kLSBgaXRlbWA6IFRoZSBpdGVtIHRoYXQgaG9sZHMgYXR0cmlidXRlcy7gLSBgZGVsZWdhdGVgOiBUaGUgcHJldmlvdXNseSBhcHByb3ZlZCBhY2NvdW50IHRvIHJlbW92ZS4AxEVtaXRzIGBJdGVtQXR0cmlidXRlc0FwcHJvdmFsUmVtb3ZlZGAgb24gc3VjY2Vzcy4wc2V0X21ldGFkYXRhDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkYXRhQQEBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAYQHRTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBSWYgdGhlIG9yaWdpbiBpcyBTaWduZWQsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC7sLSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuAGBFbWl0cyBgSXRlbU1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAGTR8Q2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZTRgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLvQtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAHBFbWl0cyBgSXRlbU1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFxzZXRfY29sbGVjdGlvbl9tZXRhZGF0YQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBkYXRhQQEBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAaPIhTZXQgdGhlIG1ldGFkYXRhIGZvciBhIGNvbGxlY3Rpb24uAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZkR0aGUgYGNvbGxlY3Rpb25gLgBZAUlmIHRoZSBvcmlnaW4gaXMgYFNpZ25lZGAsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AEQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gdXBkYXRlLk0BLSBgZGF0YWA6IFRoZSBnZW5lcmFsIGluZm9ybWF0aW9uIG9mIHRoaXMgaXRlbS4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4AeEVtaXRzIGBDb2xsZWN0aW9uTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWBkY2xlYXJfY29sbGVjdGlvbl9tZXRhZGF0YQQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAGzCQQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhIGNvbGxlY3Rpb24uAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZkR0aGUgYGNvbGxlY3Rpb25gLgDAQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIuACUBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLgCIRW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBQc2V0X2FjY2VwdF9vd25lcnNoaXAEAUBtYXliZV9jb2xsZWN0aW9u4AFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AHCgRAVNldCAob3IgcmVzZXQpIHRoZSBhY2NlcHRhbmNlIG9mIG93bmVyc2hpcCBmb3IgYSBwYXJ0aWN1bGFyIGFjY291bnQuAGEBT3JpZ2luIG11c3QgYmUgYFNpZ25lZGAgYW5kIGlmIGBtYXliZV9jb2xsZWN0aW9uYCBpcyBgU29tZWAsIHRoZW4gdGhlIHNpZ25lciBtdXN0IGhhdmUgYUxwcm92aWRlciByZWZlcmVuY2UuAFEBLSBgbWF5YmVfY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIG93bmVyc2hpcCB0aGUgc2lnbmVyIGlzYQEgIHdpbGxpbmcgdG8gYWNjZXB0LCBvciBpZiBgTm9uZWAsIGFuIGluZGljYXRpb24gdGhhdCB0aGUgc2lnbmVyIGlzIHdpbGxpbmcgdG8gYWNjZXB0IG5vXCAgb3duZXJzaGlwIHRyYW5zZmVyYWwuAIxFbWl0cyBgT3duZXJzaGlwQWNjZXB0YW5jZUNoYW5nZWRgLmRzZXRfY29sbGVjdGlvbl9tYXhfc3VwcGx5CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heF9zdXBwbHk4AQx1MzIAHSTgU2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gY291bGQgaGF2ZS4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mRHRoZSBgY29sbGVjdGlvbmAuAOwtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gdG8gY2hhbmdlLhEBLSBgbWF4X3N1cHBseWA6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gY291bGQgaGF2ZS4A1EVtaXRzIGBDb2xsZWN0aW9uTWF4U3VwcGx5U2V0YCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuUHVwZGF0ZV9taW50X3NldHRpbmdzCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABNG1pbnRfc2V0dGluZ3NZBAEVAU1pbnRTZXR0aW5nczxCYWxhbmNlT2Y8VCwgST4sIEJsb2NrTnVtYmVyRm9yPFQsIEk+LCBUOjoKQ29sbGVjdGlvbklkPgAeJFRVcGRhdGUgbWludCBzZXR0aW5ncy4ATQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIElzc3VlclBvZiB0aGUgYGNvbGxlY3Rpb25gLgDsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGNoYW5nZS6kLSBgbWludF9zZXR0aW5nc2A6IFRoZSBuZXcgbWludCBzZXR0aW5ncy4A8EVtaXRzIGBDb2xsZWN0aW9uTWludFNldHRpbmdzVXBkYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLiRzZXRfcHJpY2UQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlRQQBXE9wdGlvbjxJdGVtUHJpY2U8VCwgST4+AAFEd2hpdGVsaXN0ZWRfYnV5ZXI5BAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAfLJRTZXQgKG9yIHJlc2V0KSB0aGUgcHJpY2UgZm9yIGFuIGl0ZW0uAOhPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0uoC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBzZXQgdGhlIHByaWNlIGZvci4NAS0gYHByaWNlYDogVGhlIHByaWNlIGZvciB0aGUgaXRlbS4gUGFzcyBgTm9uZWAsIHRvIHJlc2V0IHRoZSBwcmljZS70LSBgYnV5ZXJgOiBSZXN0cmljdHMgdGhlIGJ1eSBvcGVyYXRpb24gdG8gYSBzcGVjaWZpYyBhY2NvdW50LgDsRW1pdHMgYEl0ZW1QcmljZVNldGAgb24gc3VjY2VzcyBpZiB0aGUgcHJpY2UgaXMgbm90IGBOb25lYC7sRW1pdHMgYEl0ZW1QcmljZVJlbW92ZWRgIG9uIHN1Y2Nlc3MgaWYgdGhlIHByaWNlIGlzIGBOb25lYC4gYnV5X2l0ZW0MAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABJGJpZF9wcmljZVUBATxJdGVtUHJpY2U8VCwgST4AICSoQWxsb3dzIHRvIGJ1eSBhbiBpdGVtIGlmIGl0J3MgdXAgZm9yIHNhbGUuAPhPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3Qgbm90IGJlIHRoZSBvd25lciBvZiB0aGUgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqwtIGBpdGVtYDogVGhlIGl0ZW0gdGhlIHNlbmRlciB3YW50cyB0byBidXku2C0gYGJpZF9wcmljZWA6IFRoZSBwcmljZSB0aGUgc2VuZGVyIGlzIHdpbGxpbmcgdG8gcGF5LgB4RW1pdHMgYEl0ZW1Cb3VnaHRgIG9uIHN1Y2Nlc3MuIHBheV90aXBzBAEQdGlwc4EEAZxCb3VuZGVkVmVjPEl0ZW1UaXBPZjxULCBJPiwgVDo6TWF4VGlwcz4AIRxcQWxsb3dzIHRvIHBheSB0aGUgdGlwcy4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AVC0gYHRpcHNgOiBUaXBzIGFycmF5LgCYRW1pdHMgYFRpcFNlbnRgIG9uIGV2ZXJ5IHRpcCB0cmFuc2Zlci4sY3JlYXRlX3N3YXAYAUhvZmZlcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBvZmZlcmVkX2l0ZW04ASRUOjpJdGVtSWQAAUhkZXNpcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAUhtYXliZV9kZXNpcmVkX2l0ZW3gAURPcHRpb248VDo6SXRlbUlkPgABLG1heWJlX3ByaWNljQQBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AASBkdXJhdGlvbjgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+ACJAUQFSZWdpc3RlciBhIG5ldyBhdG9taWMgc3dhcCwgZGVjbGFyaW5nIGFuIGludGVudGlvbiB0byBzZW5kIGFuIGBpdGVtYCBpbiBleGNoYW5nZSBmb3L8YGRlc2lyZWRfaXRlbWAgZnJvbSBvcmlnaW4gdG8gdGFyZ2V0IG9uIHRoZSBjdXJyZW50IGJsb2NrY2hhaW4uTQFUaGUgdGFyZ2V0IGNhbiBleGVjdXRlIHRoZSBzd2FwIGR1cmluZyB0aGUgc3BlY2lmaWVkIGBkdXJhdGlvbmAgb2YgYmxvY2tzIChpZiBzZXQpLvBBZGRpdGlvbmFsbHksIHRoZSBwcmljZSBjb3VsZCBiZSBzZXQgZm9yIHRoZSBkZXNpcmVkIGBpdGVtYC4A5E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSBhbiBvd25lciBvZiB0aGUgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqgtIGBpdGVtYDogVGhlIGl0ZW0gYW4gb3duZXIgd2FudHMgdG8gZ2l2ZS7sLSBgZGVzaXJlZF9jb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGRlc2lyZWQgaXRlbS70LSBgZGVzaXJlZF9pdGVtYDogVGhlIGRlc2lyZWQgaXRlbSBhbiBvd25lciB3YW50cyB0byByZWNlaXZlLmEBLSBgbWF5YmVfcHJpY2VgOiBUaGUgcHJpY2UgYW4gb3duZXIgaXMgd2lsbGluZyB0byBwYXkgb3IgcmVjZWl2ZSBmb3IgdGhlIGRlc2lyZWQgYGl0ZW1gLkkBLSBgZHVyYXRpb25gOiBBIGRlYWRsaW5lIGZvciB0aGUgc3dhcC4gU3BlY2lmaWVkIGJ5IHByb3ZpZGluZyB0aGUgbnVtYmVyIG9mIGJsb2Nrc4gJYWZ0ZXIgd2hpY2ggdGhlIHN3YXAgd2lsbCBleHBpcmUuAHxFbWl0cyBgU3dhcENyZWF0ZWRgIG9uIHN1Y2Nlc3MuLGNhbmNlbF9zd2FwCAFIb2ZmZXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwb2ZmZXJlZF9pdGVtOAEkVDo6SXRlbUlkACMkWENhbmNlbCBhbiBhdG9taWMgc3dhcC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4VAU9yaWdpbiBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgaXRlbWAgaWYgdGhlIGRlYWRsaW5lIGhhc24ndCBleHBpcmVkLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqgtIGBpdGVtYDogVGhlIGl0ZW0gYW4gb3duZXIgd2FudHMgdG8gZ2l2ZS4AhEVtaXRzIGBTd2FwQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLihjbGFpbV9zd2FwFAE8c2VuZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkc2VuZF9pdGVtOAEkVDo6SXRlbUlkAAFIcmVjZWl2ZV9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwcmVjZWl2ZV9pdGVtOAEkVDo6SXRlbUlkAAE0d2l0bmVzc19wcmljZY0EAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+ACQwVENsYWltIGFuIGF0b21pYyBzd2FwLjkBVGhpcyBtZXRob2QgZXhlY3V0ZXMgYSBwZW5kaW5nIHN3YXAsIHRoYXQgd2FzIGNyZWF0ZWQgYnkgYSBjb3VudGVycGFydCBiZWZvcmUuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4A7C0gYHNlbmRfY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHNlbnQujC0gYHNlbmRfaXRlbWA6IFRoZSBpdGVtIHRvIGJlIHNlbnQuCQEtIGByZWNlaXZlX2NvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSByZWNlaXZlZC6oLSBgcmVjZWl2ZV9pdGVtYDogVGhlIGl0ZW0gdG8gYmUgcmVjZWl2ZWQu5C0gYHdpdG5lc3NfcHJpY2VgOiBBIHByaWNlIHRoYXQgd2FzIHByZXZpb3VzbHkgYWdyZWVkIG9uLgB8RW1pdHMgYFN3YXBDbGFpbWVkYCBvbiBzdWNjZXNzLjxtaW50X3ByZV9zaWduZWQMASRtaW50X2RhdGGZBAFoQm94PFByZVNpZ25lZE1pbnRPZjxULCBJPj4AASRzaWduYXR1cmWdBAFQVDo6T2ZmY2hhaW5TaWduYXR1cmUAARhzaWduZXIEATBUOjpBY2NvdW50SWQAJTTITWludCBhbiBpdGVtIGJ5IHByb3ZpZGluZyB0aGUgcHJlLXNpZ25lZCBhcHByb3ZhbC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AXQEtIGBtaW50X2RhdGFgOiBUaGUgcHJlLXNpZ25lZCBhcHByb3ZhbCB0aGF0IGNvbnNpc3RzIG9mIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaXRlbSxRASAgaXRzIG1ldGFkYXRhLCBhdHRyaWJ1dGVzLCB3aG8gY2FuIG1pbnQgaXQgKGBOb25lYCBmb3IgYW55b25lKSBhbmQgdW50aWwgd2hhdCBibG9jayQgIG51bWJlci7ILSBgc2lnbmF0dXJlYDogVGhlIHNpZ25hdHVyZSBvZiB0aGUgYGRhdGFgIG9iamVjdC45AS0gYHNpZ25lcmA6IFRoZSBgZGF0YWAgb2JqZWN0J3Mgc2lnbmVyLiBTaG91bGQgYmUgYW4gSXNzdWVyIG9mIHRoZSBjb2xsZWN0aW9uLgBoRW1pdHMgYElzc3VlZGAgb24gc3VjY2Vzcy7URW1pdHMgYEF0dHJpYnV0ZVNldGAgaWYgdGhlIGF0dHJpYnV0ZXMgd2VyZSBwcm92aWRlZC7YRW1pdHMgYEl0ZW1NZXRhZGF0YVNldGAgaWYgdGhlIG1ldGFkYXRhIHdhcyBub3QgZW1wdHkuZHNldF9hdHRyaWJ1dGVzX3ByZV9zaWduZWQMARBkYXRhpQQBbFByZVNpZ25lZEF0dHJpYnV0ZXNPZjxULCBJPgABJHNpZ25hdHVyZZ0EAVBUOjpPZmZjaGFpblNpZ25hdHVyZQABGHNpZ25lcgQBMFQ6OkFjY291bnRJZAAmNAEBU2V0IGF0dHJpYnV0ZXMgZm9yIGFuIGl0ZW0gYnkgcHJvdmlkaW5nIHRoZSBwcmUtc2lnbmVkIGFwcHJvdmFsLgD4T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgZGF0YS5pdGVtYC4ASQEtIGBkYXRhYDogVGhlIHByZS1zaWduZWQgYXBwcm92YWwgdGhhdCBjb25zaXN0cyBvZiB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGl0ZW0szCAgYXR0cmlidXRlcyB0byB1cGRhdGUgYW5kIHVudGlsIHdoYXQgYmxvY2sgbnVtYmVyLsgtIGBzaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIHRoZSBgZGF0YWAgb2JqZWN0LlEBLSBgc2lnbmVyYDogVGhlIGBkYXRhYCBvYmplY3QncyBzaWduZXIuIFNob3VsZCBiZSBhbiBBZG1pbiBvZiB0aGUgY29sbGVjdGlvbiBmb3IgdGhleCAgYENvbGxlY3Rpb25Pd25lcmAgbmFtZXNwYWNlLgDERW1pdHMgYEF0dHJpYnV0ZVNldGAgZm9yIGVhY2ggcHJvdmlkZWQgYXR0cmlidXRlLhkBRW1pdHMgYEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxBZGRlZGAgaWYgdGhlIGFwcHJvdmFsIHdhc24ndCBzZXQgYmVmb3JlLqhFbWl0cyBgUHJlU2lnbmVkQXR0cmlidXRlc1NldGAgb24gc3VjY2Vzcy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuTQQMLHBhbGxldF9uZnRzFHR5cGVzQENvbGxlY3Rpb25Db25maWcMFFByaWNlAVUBLEJsb2NrTnVtYmVyATgwQ29sbGVjdGlvbklkATgADAEgc2V0dGluZ3NRBAFIQ29sbGVjdGlvblNldHRpbmdzAAEobWF4X3N1cHBseeABLE9wdGlvbjx1MzI+AAE0bWludF9zZXR0aW5nc1kEAbhNaW50U2V0dGluZ3M8UHJpY2UsIEJsb2NrTnVtYmVyLCBDb2xsZWN0aW9uSWQ+AABRBAwscGFsbGV0X25mdHMUdHlwZXMgQml0RmxhZ3MEBFQBVQQABAAoAURDb2xsZWN0aW9uU2V0dGluZwAAVQQMLHBhbGxldF9uZnRzFHR5cGVzRENvbGxlY3Rpb25TZXR0aW5nAAEURFRyYW5zZmVyYWJsZUl0ZW1zAAEAQFVubG9ja2VkTWV0YWRhdGEAAgBIVW5sb2NrZWRBdHRyaWJ1dGVzAAQARFVubG9ja2VkTWF4U3VwcGx5AAgAPERlcG9zaXRSZXF1aXJlZAAQAABZBAwscGFsbGV0X25mdHMUdHlwZXMwTWludFNldHRpbmdzDBRQcmljZQFVASxCbG9ja051bWJlcgE4MENvbGxlY3Rpb25JZAE4ABQBJG1pbnRfdHlwZV0EAVhNaW50VHlwZTxDb2xsZWN0aW9uSWQ+AAEUcHJpY2VFBAE0T3B0aW9uPFByaWNlPgABLHN0YXJ0X2Jsb2Nr4AFMT3B0aW9uPEJsb2NrTnVtYmVyPgABJGVuZF9ibG9ja+ABTE9wdGlvbjxCbG9ja051bWJlcj4AAVRkZWZhdWx0X2l0ZW1fc2V0dGluZ3NhBAEwSXRlbVNldHRpbmdzAABdBAwscGFsbGV0X25mdHMUdHlwZXMgTWludFR5cGUEMENvbGxlY3Rpb25JZAE4AQwYSXNzdWVyAAAAGFB1YmxpYwABACBIb2xkZXJPZgQAOAEwQ29sbGVjdGlvbklkAAIAAGEEDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAFlBAAEACgBLEl0ZW1TZXR0aW5nAABlBAwscGFsbGV0X25mdHMUdHlwZXMsSXRlbVNldHRpbmcAAQwwVHJhbnNmZXJhYmxlAAEAQFVubG9ja2VkTWV0YWRhdGEAAgBIVW5sb2NrZWRBdHRyaWJ1dGVzAAQAAGkEDCxwYWxsZXRfbmZ0cxR0eXBlczhEZXN0cm95V2l0bmVzcwAADAE4aXRlbV9tZXRhZGF0YXNgAQx1MzIAATBpdGVtX2NvbmZpZ3NgAQx1MzIAAShhdHRyaWJ1dGVzYAEMdTMyAABtBAQYT3B0aW9uBARUAXEEAQgQTm9uZQAAABBTb21lBABxBAAAAQAAcQQMLHBhbGxldF9uZnRzFHR5cGVzLE1pbnRXaXRuZXNzCBhJdGVtSWQBOBxCYWxhbmNlAVUBAAgBKG93bmVkX2l0ZW3gAThPcHRpb248SXRlbUlkPgABKG1pbnRfcHJpY2VFBAE8T3B0aW9uPEJhbGFuY2U+AAB1BAwscGFsbGV0X25mdHMUdHlwZXMoSXRlbUNvbmZpZwAABAEgc2V0dGluZ3NhBAEwSXRlbVNldHRpbmdzAAB5BAwscGFsbGV0X25mdHMUdHlwZXNIQXR0cmlidXRlTmFtZXNwYWNlBCRBY2NvdW50SWQBBAEQGFBhbGxldAAAADxDb2xsZWN0aW9uT3duZXIAAQAkSXRlbU93bmVyAAIAHEFjY291bnQEAAQBJEFjY291bnRJZAADAAB9BAwscGFsbGV0X25mdHMUdHlwZXN8Q2FuY2VsQXR0cmlidXRlc0FwcHJvdmFsV2l0bmVzcwAABAFIYWNjb3VudF9hdHRyaWJ1dGVzOAEMdTMyAACBBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYUEBFMAAAQAiQQBGFZlYzxUPgAAhQQMLHBhbGxldF9uZnRzFHR5cGVzHEl0ZW1UaXAQMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4JEFjY291bnRJZAEEGEFtb3VudAFVAQAQAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBGEl0ZW1JZAABIHJlY2VpdmVyBAEkQWNjb3VudElkAAEYYW1vdW50VQEBGEFtb3VudAAAiQQAAAKFBACNBAQYT3B0aW9uBARUAZEEAQgQTm9uZQAAABBTb21lBACRBAAAAQAAkQQMLHBhbGxldF9uZnRzFHR5cGVzSFByaWNlV2l0aERpcmVjdGlvbgQYQW1vdW50AVUBAAgBGGFtb3VudFUBARhBbW91bnQAASRkaXJlY3Rpb26VBAE4UHJpY2VEaXJlY3Rpb24AAJUEDCxwYWxsZXRfbmZ0cxR0eXBlczhQcmljZURpcmVjdGlvbgABCBBTZW5kAAAAHFJlY2VpdmUAAQAAmQQMLHBhbGxldF9uZnRzFHR5cGVzNFByZVNpZ25lZE1pbnQUMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4JEFjY291bnRJZAEEIERlYWRsaW5lATgcQmFsYW5jZQFVAQAcAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBGEl0ZW1JZAABKGF0dHJpYnV0ZXMsAVxWZWM8KFZlYzx1OD4sIFZlYzx1OD4pPgABIG1ldGFkYXRhGAEcVmVjPHU4PgABMG9ubHlfYWNjb3VudI0BAURPcHRpb248QWNjb3VudElkPgABIGRlYWRsaW5lOAEgRGVhZGxpbmUAAShtaW50X3ByaWNlRQQBPE9wdGlvbjxCYWxhbmNlPgAAnQQIKHNwX3J1bnRpbWU4TXVsdGlTaWduYXR1cmUAARAcRWQyNTUxOQQAoQQBSGVkMjU1MTk6OlNpZ25hdHVyZQAAABxTcjI1NTE5BAChBAFIc3IyNTUxOTo6U2lnbmF0dXJlAAEAFEVjZHNhBAB1AQFAZWNkc2E6OlNpZ25hdHVyZQACAAxFdGgEAHUBAVhlY2RzYTo6S2VjY2FrU2lnbmF0dXJlAAMAAKEEAAADQAAAAAwApQQMLHBhbGxldF9uZnRzFHR5cGVzTFByZVNpZ25lZEF0dHJpYnV0ZXMQMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4JEFjY291bnRJZAEEIERlYWRsaW5lATgAFAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABEGl0ZW04ARhJdGVtSWQAAShhdHRyaWJ1dGVzLAFcVmVjPChWZWM8dTg+LCBWZWM8dTg+KT4AASRuYW1lc3BhY2V5BAF0QXR0cmlidXRlTmFtZXNwYWNlPEFjY291bnRJZD4AASBkZWFkbGluZTgBIERlYWRsaW5lAACpBAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQQQ2FsbAgEVAAESQABiBhjcmVhdGUMAQhpZP0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlVQEBKFQ6OkJhbGFuY2UAAEzoSXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAlAVRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5IGFuZCBpdHMgb3duZXIgaXMgdGhlIG9yaWdpbi4AYQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCBgQ3JlYXRlT3JpZ2luYCBhbmQgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZyZWUuALxGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGJ5IGBBc3NldERlcG9zaXRgLgAsUGFyYW1ldGVyczpZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5MQFhbiBleGlzdGluZyBhc3NldC4gSWYgW2BOZXh0QXNzZXRJZGBdIGlzIHNldCwgdGhlbiB0aGlzIG11c3QgYmUgZXF1YWwgdG8gaXQuWQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJxtZW1iZXIgb2YgdGhlIGFzc2V0IGNsYXNzJ3MgYWRtaW4gdGVhbS5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAJhFbWl0cyBgQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAwZm9yY2VfY3JlYXRlEAEIaWT9AQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50WQEBEGJvb2wAASxtaW5fYmFsYW5jZVEBAShUOjpCYWxhbmNlAAFM+Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uALRUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AWQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXIgcGVybWlzc2lvbnMlAW92ZXIgdGhpcyBhc3NldCwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWA0c3RhcnRfZGVzdHJveQQBCGlk/QEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAjDcU3RhcnQgdGhlIHByb2Nlc3Mgb2YgZGVzdHJveWluZyBhIGZ1bmdpYmxlIGFzc2V0IGNsYXNzLgBZAWBzdGFydF9kZXN0cm95YCBpcyB0aGUgZmlyc3QgaW4gYSBzZXJpZXMgb2YgZXh0cmluc2ljcyB0aGF0IHNob3VsZCBiZSBjYWxsZWQsIHRvIGFsbG93eGRlc3RydWN0aW9uIG9mIGFuIGFzc2V0IGNsYXNzLgBRAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgYXNzZXQncyBgb3duZXJgLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZrhhbiBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuQGRlc3Ryb3lfYWNjb3VudHMEAQhpZP0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAMwzERlc3Ryb3kgYWxsIGFjY291bnRzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0LgBdAWBkZXN0cm95X2FjY291bnRzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHkxAWRlc3Ryb3kgYWxsIGFjY291bnRzLiBJdCB3aWxsIGRlc3Ryb3kgYFJlbW92ZUl0ZW1zTGltaXRgIGFjY291bnRzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDURWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFjY291bnRzYCBldmVudC5EZGVzdHJveV9hcHByb3ZhbHMEAQhpZP0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZP0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAUoxENvbXBsZXRlIGRlc3Ryb3lpbmcgYXNzZXQgYW5kIHVucmVzZXJ2ZSBjdXJyZW5jeS4AVQFgZmluaXNoX2Rlc3Ryb3lgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlWQFhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4gQWxsIGFjY291bnRzIG9yIGFwcHJvdmFscyBzaG91bGQgYmUgZGVzdHJveWVkIGJlZm9yZRRoYW5kLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAOBFYWNoIHN1Y2Nlc3NmdWwgY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRgIGV2ZW50LhBtaW50DAEIaWT9AQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRRAQEoVDo6QmFsYW5jZQAGMIhNaW50IGFzc2V0cyBvZiBhIHBhcnRpY3VsYXIgY2xhc3MuADkBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBJc3N1ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IG1pbnRlZC4NAS0gYGJlbmVmaWNpYXJ5YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQgd2l0aCB0aGUgbWludGVkIGFzc2V0cy7ELSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiB0aGUgYXNzZXQgdG8gYmUgbWludGVkLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWBVAU1vZGVzOiBQcmUtZXhpc3RpbmcgYmFsYW5jZSBvZiBgYmVuZWZpY2lhcnlgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YgYGJlbmVmaWNpYXJ5YC4QYnVybgwBCGlk/QEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFEBAShUOjpCYWxhbmNlAAc8RQFSZWR1Y2UgdGhlIGJhbGFuY2Ugb2YgYHdob2AgYnkgYXMgbXVjaCBhcyBwb3NzaWJsZSB1cCB0byBgYW1vdW50YCBhc3NldHMgb2YgYGlkYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBNYW5hZ2VyIG9mIHRoZSBhc3NldCBgaWRgLgDQQmFpbHMgd2l0aCBgTm9BY2NvdW50YCBpZiB0aGUgYHdob2AgaXMgYWxyZWFkeSBkZWFkLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBidXJuZWQuoC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQgZnJvbS4pAS0gYGFtb3VudGA6IFRoZSBtYXhpbXVtIGFtb3VudCBieSB3aGljaCBgd2hvYCdzIGJhbGFuY2Ugc2hvdWxkIGJlIHJlZHVjZWQuAFEBRW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuIElmIHRoaXMgdGFrZXMgdGhlIGJhbGFuY2UgdG8gYmVsb3cgdGhlOQFtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCBidXJuZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgCQFNb2RlczogUG9zdC1leGlzdGVuY2Ugb2YgYHdob2A7IFByZSAmIHBvc3QgWm9tYmllLXN0YXR1cyBvZiBgd2hvYC4gdHJhbnNmZXIMAQhpZP0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRRAQEoVDo6QmFsYW5jZQAISNBNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQwBCGlk/QEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFEBAShUOjpCYWxhbmNlAAlIWQFNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIsIGtlZXBpbmcgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuOGZvcmNlX3RyYW5zZmVyEAEIaWT9AQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50UQEBKFQ6OkJhbGFuY2UACky0TW92ZSBzb21lIGFzc2V0cyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6YLSBgc291cmNlYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZC6ULSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgYHNvdXJjZWAncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRZAWBkZXN0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluTQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgYHNvdXJjZWAgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dNRiZWxvdyB0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGBkZXN0YDsgUG9zdC1leGlzdGVuY2Ugb2YgYHNvdXJjZWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZhxgZGVzdGAuGGZyZWV6ZQgBCGlk/QEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgALMFUBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgZnJvbSBhbiBhY2NvdW50IGB3aG9gLiBgd2hvYE0BbXVzdCBhbHJlYWR5IGV4aXN0IGFzIGFuIGVudHJ5IGluIGBBY2NvdW50YHMgb2YgdGhlIGFzc2V0LiBJZiB5b3Ugd2FudCB0byBmcmVlemUgYW70YWNjb3VudCB0aGF0IGRvZXMgbm90IGhhdmUgYW4gZW50cnksIHVzZSBgdG91Y2hfb3RoZXJgIGZpcnN0LgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uiC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAQdGhhdwgBCGlk/QEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAMKOhBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4ukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuZnJvemVuLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYDBmcmVlemVfYXNzZXQEAQhpZP0BAUxUOjpBc3NldElkUGFyYW1ldGVyAA0k8ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGNsYXNzLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgKHRoYXdfYXNzZXQEAQhpZP0BAUxUOjpBc3NldElkUGFyYW1ldGVyAA4kxEFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBIdHJhbnNmZXJfb3duZXJzaGlwCAEIaWT9AQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADyh0Q2hhbmdlIHRoZSBPd25lciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC4AVEVtaXRzIGBPd25lckNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAgc2V0X3RlYW0QAQhpZP0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+ABAwxENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAQhpZP0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAARQHhTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4A2EZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlEBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBNZXRhZGF0YURlcG9zaXRQZXJCeXRlICogKG5hbWUubGVuICsgc3ltYm9sLmxlbilgIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhBAEIaWT9AQFMVDo6QXNzZXRJZFBhcmFtZXRlcgASLIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCkQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBhc3NldCBvd25lci4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9zZXRfbWV0YWRhdGEUAQhpZP0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plblkBARBib29sABM4uEZvcmNlIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQgdG8gc29tZSB2YWx1ZS4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBoQW55IGRlcG9zaXQgaXMgbGVmdCBhbG9uZS4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgBRAVdlaWdodDogYE8oTiArIFMpYCB3aGVyZSBOIGFuZCBTIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIGFuZCBzeW1ib2wgcmVzcGVjdGl2ZWx5LlBmb3JjZV9jbGVhcl9tZXRhZGF0YQQBCGlk/QEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAFCyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBgQW55IGRlcG9zaXQgaXMgcmV0dXJuZWQuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2VfYXNzZXRfc3RhdHVzIAEIaWT9AQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZVEBAShUOjpCYWxhbmNlAAE0aXNfc3VmZmljaWVudFkBARBib29sAAEkaXNfZnJvemVuWQEBEGJvb2wAFViYQWx0ZXIgdGhlIGF0dHJpYnV0ZXMgb2YgYSBnaXZlbiBhc3NldC4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQupC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLlEBLSBgaXNfc3VmZmljaWVudGA6IFdoZXRoZXIgYSBub24temVybyBiYWxhbmNlIG9mIHRoaXMgYXNzZXQgaXMgZGVwb3NpdCBvZiBzdWZmaWNpZW50TQF2YWx1ZSB0byBhY2NvdW50IGZvciB0aGUgc3RhdGUgYmxvYXQgYXNzb2NpYXRlZCB3aXRoIGl0cyBiYWxhbmNlIHN0b3JhZ2UuIElmIHNldCB0b1UBYHRydWVgLCB0aGVuIG5vbi16ZXJvIGJhbGFuY2VzIG1heSBiZSBzdG9yZWQgd2l0aG91dCBhIGBjb25zdW1lcmAgcmVmZXJlbmNlIChhbmQgdGh1c00BYW4gRUQgaW4gdGhlIEJhbGFuY2VzIHBhbGxldCBvciB3aGF0ZXZlciBlbHNlIGlzIHVzZWQgdG8gY29udHJvbCB1c2VyLWFjY291bnQgc3RhdGUgZ3Jvd3RoKS49AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhpcyBhc3NldCBjbGFzcyBpcyBmcm96ZW4gZXhjZXB0IGZvciBwZXJtaXNzaW9uZWQvYWRtaW40aW5zdHJ1Y3Rpb25zLgDoRW1pdHMgYEFzc2V0U3RhdHVzQ2hhbmdlZGAgd2l0aCB0aGUgaWRlbnRpdHkgb2YgdGhlIGFzc2V0LgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlcgwBCGlk/QEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50UQEBKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlk/QEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABc0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJldHdlZW4gc2lnbmVyIGFuZCxgZGVsZWdhdGVgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgVGZvcmNlX2NhbmNlbF9hcHByb3ZhbAwBCGlk/QEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAYNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBGb3JjZU9yaWdpbiBvciBTaWduZWQgb3JpZ2luIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgQWRtaW5oYWNjb3VudCBvZiB0aGUgYXNzZXQgYGlkYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYER0cmFuc2Zlcl9hcHByb3ZlZBABCGlk/QEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb24AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFEBAShUOjpCYWxhbmNlABlITQFUcmFuc2ZlciBzb21lIGFzc2V0IGJhbGFuY2UgZnJvbSBhIHByZXZpb3VzbHkgZGVsZWdhdGVkIGFjY291bnQgdG8gc29tZSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBieSB0aGUgYG93bmVyYCB0byB0aGUcc2lnbmVyLgBZAUlmIHRoZSBlbnRpcmUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2ZlciBpcyB0cmFuc2ZlcnJlZCwgdGhlbiBhbnkgZGVwb3NpdCBwcmV2aW91c2x5tHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBpcyB1bnJlc2VydmVkLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuYQEtIGBvd25lcmA6IFRoZSBhY2NvdW50IHdoaWNoIHByZXZpb3VzbHkgYXBwcm92ZWQgZm9yIGEgdHJhbnNmZXIgb2YgYXQgbGVhc3QgYGFtb3VudGAgYW5kvGZyb20gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugd2lsbCBiZSB3aXRoZHJhd24uYQEtIGBkZXN0aW5hdGlvbmA6IFRoZSBhY2NvdW50IHRvIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIG9mIGBhbW91bnRgIHdpbGwgYmUgdHJhbnNmZXJyZWQutC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXRzIHRvIHRyYW5zZmVyLgCcRW1pdHMgYFRyYW5zZmVycmVkQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYBR0b3VjaAQBCGlk/QEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAGiTAQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIG5vbi1wcm92aWRlciBhc3NldHMuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi4JAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4YcmVmdW5kCAEIaWT9AQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABKGFsbG93X2J1cm5ZAQEQYm9vbAAbNFkBUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGFuIGFzc2V0IGFjY291bnQgb3IgYSBjb25zdW1lciByZWZlcmVuY2UgKGlmIGFueSkgb2YgYW4gYWNjb3VudC4AaFRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQuAD0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHdoaWNoIHRoZSBjYWxsZXIgd291bGQgbGlrZSB0aGUgZGVwb3NpdCwgIHJlZnVuZGVkLl0BLSBgYWxsb3dfYnVybmA6IElmIGB0cnVlYCB0aGVuIGFzc2V0cyBtYXkgYmUgZGVzdHJveWVkIGluIG9yZGVyIHRvIGNvbXBsZXRlIHRoZSByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuPHNldF9taW5fYmFsYW5jZQgBCGlk/QEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZP0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHSyIQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIGB3aG9gLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uYQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZCwgdGhlIGFzc2V0IHN0YXR1cyBtdXN0KCAgYmUgbGl2ZS6MLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuMHJlZnVuZF9vdGhlcggBCGlk/QEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAeNF0BUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGEgdGFyZ2V0IGFzc2V0IGFjY291bnQuIFVzZWZ1bCBpZiB5b3UgYXJlIHRoZSBkZXBvc2l0b3IuAF0BVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgZWl0aGVyIHRoZSBhY2NvdW50IG93bmVyLCBkZXBvc2l0b3IsIG9yIGFzc2V0IGBBZG1pbmAuIEluYQFvcmRlciB0byBidXJuIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGUgYXNzZXQsIHRoZSBjYWxsZXIgbXVzdCBiZSB0aGUgYWNjb3VudCBhbmQgc2hvdWxkNHVzZSBgcmVmdW5kYC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQufC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4UYmxvY2sIAQhpZP0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWT9AQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGtlZXBfYWxpdmVZAQEQYm9vbAAgQB0BVHJhbnNmZXIgdGhlIGVudGlyZSB0cmFuc2ZlcmFibGUgYmFsYW5jZSBmcm9tIHRoZSBjYWxsZXIgYXNzZXQgYWNjb3VudC4AWQFOT1RFOiBUaGlzIGZ1bmN0aW9uIG9ubHkgYXR0ZW1wdHMgdG8gdHJhbnNmZXIgX3RyYW5zZmVyYWJsZV8gYmFsYW5jZXMuIFRoaXMgbWVhbnMgdGhhdD0BYW55IGhlbGQsIGZyb3plbiwgb3IgbWluaW11bSBiYWxhbmNlICh3aGVuIGBrZWVwX2FsaXZlYCBpcyBgdHJ1ZWApLCB3aWxsIG5vdCBiZV0BdHJhbnNmZXJyZWQgYnkgdGhpcyBmdW5jdGlvbi4gVG8gZW5zdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXN1bHRzIGluIGEga2lsbGVkIGFjY291bnQsRQF5b3UgbWlnaHQgbmVlZCB0byBwcmVwYXJlIHRoZSBhY2NvdW50IGJ5IHJlbW92aW5nIGFueSByZWZlcmVuY2UgY291bnRlcnMsIHN0b3JhZ2VAZGVwb3NpdHMsIGV0Yy4uLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LqAtIGBkZXN0YDogVGhlIHJlY2lwaWVudCBvZiB0aGUgdHJhbnNmZXIuWQEtIGBrZWVwX2FsaXZlYDogQSBib29sZWFuIHRvIGRldGVybWluZSBpZiB0aGUgYHRyYW5zZmVyX2FsbGAgb3BlcmF0aW9uIHNob3VsZCBzZW5kIGFsbE0BICBvZiB0aGUgZnVuZHMgdGhlIGFzc2V0IGFjY291bnQgaGFzLCBjYXVzaW5nIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCB0byBiZSBraWxsZWRFASAgKGZhbHNlKSwgb3IgdHJhbnNmZXIgZXZlcnl0aGluZyBleGNlcHQgYXQgbGVhc3QgdGhlIG1pbmltdW0gYmFsYW5jZSwgd2hpY2ggd2lsbOggIGd1YXJhbnRlZSB0byBrZWVwIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuMHNldF9yZXNlcnZlcwgBCGlk/QEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASByZXNlcnZlc60EAchCb3VuZGVkVmVjPFQ6OlJlc2VydmVEYXRhLCBDb25zdFUzMjxNQVhfUkVTRVJWRVM+PgAhJMRTZXRzIHRoZSB0cnVzdGVkIHJlc2VydmUgaW5mb3JtYXRpb24gb2YgYW4gYXNzZXQuAFUBT3JpZ2luIG11c3QgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLiBUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCUBYENyZWF0ZU9yaWdpbmAgb3IgYmUgdGhlIHNpZ25lZCBgb3duZXJgIGNvbmZpZ3VyZWQgZHVyaW5nIGFzc2V0IGNyZWF0aW9uLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQu8C0gYHJlc2VydmVzYDogVGhlIGZ1bGwgbGlzdCBvZiB0cnVzdGVkIHJlc2VydmVzIGluZm9ybWF0aW9uLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMurQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGxBARTAAAEALUEARhWZWM8VD4AALEEDDRhc3NldHNfY29tbW9uYGxvY2FsX2FuZF9mb3JlaWduX2Fzc2V0c1xGb3JlaWduQXNzZXRSZXNlcnZlRGF0YQAACAEccmVzZXJ2Zf0BASBMb2NhdGlvbgABMHRlbGVwb3J0YWJsZVkBARBib29sAAC1BAAAArEEALkEDDRwYWxsZXRfYXNzZXRzGHBhbGxldBBDYWxsCARUAARJAAGIGGNyZWF0ZQwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlAABM6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50WQEBEGJvb2wAASxtaW5fYmFsYW5jZVEBAShUOjpCYWxhbmNlAAFM+Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uALRUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AWQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXIgcGVybWlzc2lvbnMlAW92ZXIgdGhpcyBhc3NldCwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWA0c3RhcnRfZGVzdHJveQQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgACMNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlmuGFuIGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS5AZGVzdHJveV9hY2NvdW50cwQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABSjEQ29tcGxldGUgZGVzdHJveWluZyBhc3NldCBhbmQgdW5yZXNlcnZlIGN1cnJlbmN5LgBVAWBmaW5pc2hfZGVzdHJveWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGVZAWFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLiBBbGwgYWNjb3VudHMgb3IgYXBwcm92YWxzIHNob3VsZCBiZSBkZXN0cm95ZWQgYmVmb3JlFGhhbmQuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A4EVhY2ggc3VjY2Vzc2Z1bCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZGAgZXZlbnQuEG1pbnQMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50UQEBKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFEBAShUOjpCYWxhbmNlAAc8RQFSZWR1Y2UgdGhlIGJhbGFuY2Ugb2YgYHdob2AgYnkgYXMgbXVjaCBhcyBwb3NzaWJsZSB1cCB0byBgYW1vdW50YCBhc3NldHMgb2YgYGlkYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBNYW5hZ2VyIG9mIHRoZSBhc3NldCBgaWRgLgDQQmFpbHMgd2l0aCBgTm9BY2NvdW50YCBpZiB0aGUgYHdob2AgaXMgYWxyZWFkeSBkZWFkLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBidXJuZWQuoC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQgZnJvbS4pAS0gYGFtb3VudGA6IFRoZSBtYXhpbXVtIGFtb3VudCBieSB3aGljaCBgd2hvYCdzIGJhbGFuY2Ugc2hvdWxkIGJlIHJlZHVjZWQuAFEBRW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuIElmIHRoaXMgdGFrZXMgdGhlIGJhbGFuY2UgdG8gYmVsb3cgdGhlOQFtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCBidXJuZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgCQFNb2RlczogUG9zdC1leGlzdGVuY2Ugb2YgYHdob2A7IFByZSAmIHBvc3QgWm9tYmllLXN0YXR1cyBvZiBgd2hvYC4gdHJhbnNmZXIMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFEBAShUOjpCYWxhbmNlAAhI0E1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLkx0cmFuc2Zlcl9rZWVwX2FsaXZlDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRRAQEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50UQEBKFQ6OkJhbGFuY2UACky0TW92ZSBzb21lIGFzc2V0cyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6YLSBgc291cmNlYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZC6ULSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgYHNvdXJjZWAncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRZAWBkZXN0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluTQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgYHNvdXJjZWAgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dNRiZWxvdyB0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGBkZXN0YDsgUG9zdC1leGlzdGVuY2Ugb2YgYHNvdXJjZWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZhxgZGVzdGAuGGZyZWV6ZQgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAswVQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCBmcm9tIGFuIGFjY291bnQgYHdob2AuIGB3aG9gTQFtdXN0IGFscmVhZHkgZXhpc3QgYXMgYW4gZW50cnkgaW4gYEFjY291bnRgcyBvZiB0aGUgYXNzZXQuIElmIHlvdSB3YW50IHRvIGZyZWV6ZSBhbvRhY2NvdW50IHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSwgdXNlIGB0b3VjaF9vdGhlcmAgZmlyc3QuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6ILSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjoQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmZyb3plbi4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWAwZnJlZXplX2Fzc2V0BAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAA0k8ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGNsYXNzLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgKHRoYXdfYXNzZXQEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADiTEQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA8odENoYW5nZSB0aGUgT3duZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+ABAwxENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4ABFAeFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDYRnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6UQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUgKiAobmFtZS5sZW4gKyBzeW1ib2wubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAEiyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4ApEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgYXNzZXQgb3duZXIuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2Vfc2V0X21ldGFkYXRhFAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plblkBARBib29sABM4uEZvcmNlIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQgdG8gc29tZSB2YWx1ZS4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBoQW55IGRlcG9zaXQgaXMgbGVmdCBhbG9uZS4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgBRAVdlaWdodDogYE8oTiArIFMpYCB3aGVyZSBOIGFuZCBTIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIGFuZCBzeW1ib2wgcmVzcGVjdGl2ZWx5LlBmb3JjZV9jbGVhcl9tZXRhZGF0YQQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VRAQEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnRZAQEQYm9vbAABJGlzX2Zyb3plblkBARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50UQEBKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb24AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFEBAShUOjpCYWxhbmNlABlITQFUcmFuc2ZlciBzb21lIGFzc2V0IGJhbGFuY2UgZnJvbSBhIHByZXZpb3VzbHkgZGVsZWdhdGVkIGFjY291bnQgdG8gc29tZSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBieSB0aGUgYG93bmVyYCB0byB0aGUcc2lnbmVyLgBZAUlmIHRoZSBlbnRpcmUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2ZlciBpcyB0cmFuc2ZlcnJlZCwgdGhlbiBhbnkgZGVwb3NpdCBwcmV2aW91c2x5tHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBpcyB1bnJlc2VydmVkLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuYQEtIGBvd25lcmA6IFRoZSBhY2NvdW50IHdoaWNoIHByZXZpb3VzbHkgYXBwcm92ZWQgZm9yIGEgdHJhbnNmZXIgb2YgYXQgbGVhc3QgYGFtb3VudGAgYW5kvGZyb20gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugd2lsbCBiZSB3aXRoZHJhd24uYQEtIGBkZXN0aW5hdGlvbmA6IFRoZSBhY2NvdW50IHRvIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIG9mIGBhbW91bnRgIHdpbGwgYmUgdHJhbnNmZXJyZWQutC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXRzIHRvIHRyYW5zZmVyLgCcRW1pdHMgYFRyYW5zZmVycmVkQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYBR0b3VjaAQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAaJMBDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3Igbm9uLXByb3ZpZGVyIGFzc2V0cy4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhhyZWZ1bmQIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAShhbGxvd19idXJuWQEBEGJvb2wAGzRZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdLIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi5hAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLCB0aGUgYXNzZXQgc3RhdHVzIG11c3QoICBiZSBsaXZlLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHjRdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZVkBARBib29sACBAHQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhc3NldCBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0PQFhbnkgaGVsZCwgZnJvemVuLCBvciBtaW5pbXVtIGJhbGFuY2UgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQuoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYXNzZXQgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IHRvIGJlIGtpbGxlZEUBICAoZmFsc2UpLCBvciB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgbWluaW11bSBiYWxhbmNlLCB3aGljaCB3aWxs6CAgZ3VhcmFudGVlIHRvIGtlZXAgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IGFsaXZlICh0cnVlKS4wc2V0X3Jlc2VydmVzCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEgcmVzZXJ2ZXMpBAHIQm91bmRlZFZlYzxUOjpSZXNlcnZlRGF0YSwgQ29uc3RVMzI8TUFYX1JFU0VSVkVTPj4AISTEU2V0cyB0aGUgdHJ1c3RlZCByZXNlcnZlIGluZm9ybWF0aW9uIG9mIGFuIGFzc2V0LgBVAU9yaWdpbiBtdXN0IGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4gVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQlAWBDcmVhdGVPcmlnaW5gIG9yIGJlIHRoZSBzaWduZWQgYG93bmVyYCBjb25maWd1cmVkIGR1cmluZyBhc3NldCBjcmVhdGlvbi4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LvAtIGByZXNlcnZlc2A6IFRoZSBmdWxsIGxpc3Qgb2YgdHJ1c3RlZCByZXNlcnZlcyBpbmZvcm1hdGlvbi4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLr0EDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhhwYWxsZXQQQ2FsbAQEVAABGCxjcmVhdGVfcG9vbAgBGGFzc2V0Mf0BAURCb3g8VDo6QXNzZXRLaW5kPgABGGFzc2V0Mv0BAURCb3g8VDo6QXNzZXRLaW5kPgAAEBkBQ3JlYXRlcyBhbiBlbXB0eSBsaXF1aWRpdHkgcG9vbCBhbmQgYW4gYXNzb2NpYXRlZCBuZXcgYGxwX3Rva2VuYCBhc3NldAEBKHRoZSBpZCBvZiB3aGljaCBpcyByZXR1cm5lZCBpbiB0aGUgYEV2ZW50OjpQb29sQ3JlYXRlZGAgZXZlbnQpLgARAU9uY2UgYSBwb29sIGlzIGNyZWF0ZWQsIHNvbWVvbmUgbWF5IFtgUGFsbGV0OjphZGRfbGlxdWlkaXR5YF0gdG8gaXQuNGFkZF9saXF1aWRpdHkcARhhc3NldDH9AQFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDL9AQFEQm94PFQ6OkFzc2V0S2luZD4AATxhbW91bnQxX2Rlc2lyZWRVAQEoVDo6QmFsYW5jZQABPGFtb3VudDJfZGVzaXJlZFUBAShUOjpCYWxhbmNlAAEsYW1vdW50MV9taW5VAQEoVDo6QmFsYW5jZQABLGFtb3VudDJfbWluVQEBKFQ6OkJhbGFuY2UAARxtaW50X3RvBAEwVDo6QWNjb3VudElkAAE45FByb3ZpZGUgbGlxdWlkaXR5IGludG8gdGhlIHBvb2wgb2YgYGFzc2V0MWAgYW5kIGBhc3NldDJgLg0BTk9URTogYW4gb3B0aW1hbCBhbW91bnQgb2YgYXNzZXQxIGFuZCBhc3NldDIgd2lsbCBiZSBjYWxjdWxhdGVkIGFuZCEBbWlnaHQgYmUgZGlmZmVyZW50IHRoYW4gdGhlIHByb3ZpZGVkIGBhbW91bnQxX2Rlc2lyZWRgL2BhbW91bnQyX2Rlc2lyZWRg/HRodXMgeW91IHNob3VsZCBwcm92aWRlIHRoZSBtaW4gYW1vdW50IHlvdSdyZSBoYXBweSB0byBwcm92aWRlLshQYXJhbXMgYGFtb3VudDFfbWluYC9gYW1vdW50Ml9taW5gIHJlcHJlc2VudCB0aGF0LkkBYG1pbnRfdG9gIHdpbGwgYmUgc2VudCB0aGUgbGlxdWlkaXR5IHRva2VucyB0aGF0IHJlcHJlc2VudCB0aGlzIHNoYXJlIG9mIHRoZSBwb29sLgBdAU5PVEU6IHdoZW4gZW5jb3VudGVyaW5nIGFuIGluY29ycmVjdCBleGNoYW5nZSByYXRlIGFuZCBub24td2l0aGRyYXdhYmxlIHBvb2wgbGlxdWlkaXR5LNxiYXRjaCBhbiBhdG9taWMgY2FsbCB3aXRoIFtgUGFsbGV0OjphZGRfbGlxdWlkaXR5YF0gYW5kUQFbYFBhbGxldDo6c3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdIG9yIFtgUGFsbGV0Ojpzd2FwX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zYF0lAWNhbGxzIHRvIHJlbmRlciB0aGUgbGlxdWlkaXR5IHdpdGhkcmF3YWJsZSBhbmQgcmVjdGlmeSB0aGUgZXhjaGFuZ2UgcmF0ZS4A2E9uY2UgbGlxdWlkaXR5IGlzIGFkZGVkLCBzb21lb25lIG1heSBzdWNjZXNzZnVsbHkgY2FsbKRbYFBhbGxldDo6c3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdLkByZW1vdmVfbGlxdWlkaXR5GAEYYXNzZXQx/QEBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQy/QEBREJveDxUOjpBc3NldEtpbmQ+AAE0bHBfdG9rZW5fYnVyblUBAShUOjpCYWxhbmNlAAFMYW1vdW50MV9taW5fcmVjZWl2ZVUBAShUOjpCYWxhbmNlAAFMYW1vdW50Ml9taW5fcmVjZWl2ZVUBAShUOjpCYWxhbmNlAAEsd2l0aGRyYXdfdG8EATBUOjpBY2NvdW50SWQAAgxNAUFsbG93cyB5b3UgdG8gcmVtb3ZlIGxpcXVpZGl0eSBieSBwcm92aWRpbmcgdGhlIGBscF90b2tlbl9idXJuYCB0b2tlbnMgdGhhdCB3aWxsIGJlUQFidXJuZWQgaW4gdGhlIHByb2Nlc3MuIFdpdGggdGhlIHVzYWdlIG9mIGBhbW91bnQxX21pbl9yZWNlaXZlYC9gYW1vdW50Ml9taW5fcmVjZWl2ZWA1AWl0J3MgcG9zc2libGUgdG8gY29udHJvbCB0aGUgbWluIGFtb3VudCBvZiByZXR1cm5lZCB0b2tlbnMgeW91J3JlIGhhcHB5IHdpdGgucHN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnMUARBwYXRowQQBWFZlYzxCb3g8VDo6QXNzZXRLaW5kPj4AASRhbW91bnRfaW5VAQEoVDo6QmFsYW5jZQABOGFtb3VudF9vdXRfbWluVQEBKFQ6OkJhbGFuY2UAARxzZW5kX3RvBAEwVDo6QWNjb3VudElkAAEoa2VlcF9hbGl2ZVkBARBib29sAAMYwFN3YXAgdGhlIGV4YWN0IGFtb3VudCBvZiBgYXNzZXQxYCBpbnRvIGBhc3NldDJgLi0BYGFtb3VudF9vdXRfbWluYCBwYXJhbSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG1pbiBhbW91bnQgb2YgdGhlIGBhc3NldDJgYHlvdSdyZSBoYXBweSB0byByZWNlaXZlLgBZAVtgQXNzZXRDb252ZXJzaW9uQXBpOjpxdW90ZV9wcmljZV9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdIHJ1bnRpbWUgY2FsbCBjYW4gYmUgY2FsbGVkMGZvciBhIHF1b3RlLnBzd2FwX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zFAEQcGF0aMEEAVhWZWM8Qm94PFQ6OkFzc2V0S2luZD4+AAEoYW1vdW50X291dFUBAShUOjpCYWxhbmNlAAE0YW1vdW50X2luX21heFUBAShUOjpCYWxhbmNlAAEcc2VuZF90bwQBMFQ6OkFjY291bnRJZAABKGtlZXBfYWxpdmVZAQEQYm9vbAAEGAEBU3dhcCBhbnkgYW1vdW50IG9mIGBhc3NldDFgIHRvIGdldCB0aGUgZXhhY3QgYW1vdW50IG9mIGBhc3NldDJgLhkBYGFtb3VudF9pbl9tYXhgIHBhcmFtIGFsbG93cyB0byBzcGVjaWZ5IHRoZSBtYXggYW1vdW50IG9mIHRoZSBgYXNzZXQxYGB5b3UncmUgaGFwcHkgdG8gcHJvdmlkZS4AWQFbYEFzc2V0Q29udmVyc2lvbkFwaTo6cXVvdGVfcHJpY2VfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnNgXSBydW50aW1lIGNhbGwgY2FuIGJlIGNhbGxlZDBmb3IgYSBxdW90ZS4UdG91Y2gIARhhc3NldDH9AQFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDL9AQFEQm94PFQ6OkFzc2V0S2luZD4ABSxNAVRvdWNoIGFuIGV4aXN0aW5nIHBvb2wgdG8gZnVsZmlsbCBwcmVyZXF1aXNpdGVzIGJlZm9yZSBwcm92aWRpbmcgbGlxdWlkaXR5LCBzdWNoIGFzSQFlbnN1cmluZyB0aGF0IHRoZSBwb29sJ3MgYWNjb3VudHMgYXJlIGluIHBsYWNlLiBJdCBpcyB0eXBpY2FsbHkgdXNlZnVsIHdoZW4gYSBwb29sVQFjcmVhdG9yIHJlbW92ZXMgdGhlIHBvb2wncyBhY2NvdW50cyBhbmQgZG9lcyBub3QgcHJvdmlkZSBhIGxpcXVpZGl0eS4gVGhpcyBhY3Rpb24gbWF5VQFpbnZvbHZlIGhvbGRpbmcgYXNzZXRzIGZyb20gdGhlIGNhbGxlciBhcyBhIGRlcG9zaXQgZm9yIGNyZWF0aW5nIHRoZSBwb29sJ3MgYWNjb3VudHMuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgApAS0gYGFzc2V0MWA6IFRoZSBhc3NldCBJRCBvZiBhbiBleGlzdGluZyBwb29sIHdpdGggYSBwYWlyIChhc3NldDEsIGFzc2V0MikuKQEtIGBhc3NldDJgOiBUaGUgYXNzZXQgSUQgb2YgYW4gZXhpc3RpbmcgcG9vbCB3aXRoIGEgcGFpciAoYXNzZXQxLCBhc3NldDIpLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4EcFBhbGxldCdzIGNhbGxhYmxlIGZ1bmN0aW9ucy7BBAAAAv0BAMUEDDxwYWxsZXRfdHJlYXN1cnkYcGFsbGV0EENhbGwIBFQABEkAARgsc3BlbmRfbG9jYWwIARhhbW91bnRRAQE8QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADRLhQcm9wb3NlIGFuZCBhcHByb3ZlIGEgc3BlbmQgb2YgdHJlYXN1cnkgZnVuZHMuAEgjIyBEaXNwYXRjaCBPcmlnaW4ARQFNdXN0IGJlIFtgQ29uZmlnOjpTcGVuZE9yaWdpbmBdIHdpdGggdGhlIGBTdWNjZXNzYCB2YWx1ZSBiZWluZyBhdCBsZWFzdCBgYW1vdW50YC4ALCMjIyBEZXRhaWxzRQFOT1RFOiBGb3IgcmVjb3JkLWtlZXBpbmcgcHVycG9zZXMsIHRoZSBwcm9wb3NlciBpcyBkZWVtZWQgdG8gYmUgZXF1aXZhbGVudCB0byB0aGUwYmVuZWZpY2lhcnkuADgjIyMgUGFyYW1ldGVyc0EBLSBgYW1vdW50YDogVGhlIGFtb3VudCB0byBiZSB0cmFuc2ZlcnJlZCBmcm9tIHRoZSB0cmVhc3VyeSB0byB0aGUgYGJlbmVmaWNpYXJ5YC7oLSBgYmVuZWZpY2lhcnlgOiBUaGUgZGVzdGluYXRpb24gYWNjb3VudCBmb3IgdGhlIHRyYW5zZmVyLgAkIyMgRXZlbnRzALRFbWl0cyBbYEV2ZW50OjpTcGVuZEFwcHJvdmVkYF0gaWYgc3VjY2Vzc2Z1bC48cmVtb3ZlX2FwcHJvdmFsBAEscHJvcG9zYWxfaWRgATRQcm9wb3NhbEluZGV4AARULQFGb3JjZSBhIHByZXZpb3VzbHkgYXBwcm92ZWQgcHJvcG9zYWwgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBhcHByb3ZhbCBxdWV1ZS4ASCMjIERpc3BhdGNoIE9yaWdpbgCETXVzdCBiZSBbYENvbmZpZzo6UmVqZWN0T3JpZ2luYF0uACgjIyBEZXRhaWxzAMBUaGUgb3JpZ2luYWwgZGVwb3NpdCB3aWxsIG5vIGxvbmdlciBiZSByZXR1cm5lZC4AOCMjIyBQYXJhbWV0ZXJzoC0gYHByb3Bvc2FsX2lkYDogVGhlIGluZGV4IG9mIGEgcHJvcG9zYWwAOCMjIyBDb21wbGV4aXR5rC0gTyhBKSB3aGVyZSBgQWAgaXMgdGhlIG51bWJlciBvZiBhcHByb3ZhbHMAKCMjIyBFcnJvcnNFAS0gW2BFcnJvcjo6UHJvcG9zYWxOb3RBcHByb3ZlZGBdOiBUaGUgYHByb3Bvc2FsX2lkYCBzdXBwbGllZCB3YXMgbm90IGZvdW5kIGluIHRoZVEBICBhcHByb3ZhbCBxdWV1ZSwgaS5lLiwgdGhlIHByb3Bvc2FsIGhhcyBub3QgYmVlbiBhcHByb3ZlZC4gVGhpcyBjb3VsZCBhbHNvIG1lYW4gdGhlWQEgIHByb3Bvc2FsIGRvZXMgbm90IGV4aXN0IGFsdG9nZXRoZXIsIHRodXMgdGhlcmUgaXMgbm8gd2F5IGl0IHdvdWxkIGhhdmUgYmVlbiBhcHByb3ZlZFQgIGluIHRoZSBmaXJzdCBwbGFjZS4Uc3BlbmQQAShhc3NldF9raW5kyQQBREJveDxUOjpBc3NldEtpbmQ+AAEYYW1vdW50UQEBUEFzc2V0QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnnNBAF4Qm94PEJlbmVmaWNpYXJ5TG9va3VwT2Y8VCwgST4+AAEodmFsaWRfZnJvbeABcE9wdGlvbjxCbG9ja051bWJlckZvcjxULCBJPj4ABWi4UHJvcG9zZSBhbmQgYXBwcm92ZSBhIHNwZW5kIG9mIHRyZWFzdXJ5IGZ1bmRzLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAB0BTXVzdCBiZSBbYENvbmZpZzo6U3BlbmRPcmlnaW5gXSB3aXRoIHRoZSBgU3VjY2Vzc2AgdmFsdWUgYmVpbmcgYXQgbGVhc3RVAWBhbW91bnRgIG9mIGBhc3NldF9raW5kYCBpbiB0aGUgbmF0aXZlIGFzc2V0LiBUaGUgYW1vdW50IG9mIGBhc3NldF9raW5kYCBpcyBjb252ZXJ0ZWTUZm9yIGFzc2VydGlvbiB1c2luZyB0aGUgW2BDb25maWc6OkJhbGFuY2VDb252ZXJ0ZXJgXS4AKCMjIERldGFpbHMASQFDcmVhdGUgYW4gYXBwcm92ZWQgc3BlbmQgZm9yIHRyYW5zZmVycmluZyBhIHNwZWNpZmljIGBhbW91bnRgIG9mIGBhc3NldF9raW5kYCB0byBhYQFkZXNpZ25hdGVkIGJlbmVmaWNpYXJ5LiBUaGUgc3BlbmQgbXVzdCBiZSBjbGFpbWVkIHVzaW5nIHRoZSBgcGF5b3V0YCBkaXNwYXRjaGFibGUgd2l0aGludHRoZSBbYENvbmZpZzo6UGF5b3V0UGVyaW9kYF0uADgjIyMgUGFyYW1ldGVycxUBLSBgYXNzZXRfa2luZGA6IEFuIGluZGljYXRvciBvZiB0aGUgc3BlY2lmaWMgYXNzZXQgY2xhc3MgdG8gYmUgc3BlbnQuQQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IHRvIGJlIHRyYW5zZmVycmVkIGZyb20gdGhlIHRyZWFzdXJ5IHRvIHRoZSBgYmVuZWZpY2lhcnlgLrgtIGBiZW5lZmljaWFyeWA6IFRoZSBiZW5lZmljaWFyeSBvZiB0aGUgc3BlbmQuVQEtIGB2YWxpZF9mcm9tYDogVGhlIGJsb2NrIG51bWJlciBmcm9tIHdoaWNoIHRoZSBzcGVuZCBjYW4gYmUgY2xhaW1lZC4gSXQgY2FuIHJlZmVyIHRvGQEgIHRoZSBwYXN0IGlmIHRoZSByZXN1bHRpbmcgc3BlbmQgaGFzIG5vdCB5ZXQgZXhwaXJlZCBhY2NvcmRpbmcgdG8gdGhlRQEgIFtgQ29uZmlnOjpQYXlvdXRQZXJpb2RgXS4gSWYgYE5vbmVgLCB0aGUgc3BlbmQgY2FuIGJlIGNsYWltZWQgaW1tZWRpYXRlbHkgYWZ0ZXIsICBhcHByb3ZhbC4AJCMjIEV2ZW50cwDIRW1pdHMgW2BFdmVudDo6QXNzZXRTcGVuZEFwcHJvdmVkYF0gaWYgc3VjY2Vzc2Z1bC4YcGF5b3V0BAEUaW5kZXg4AShTcGVuZEluZGV4AAZMOENsYWltIGEgc3BlbmQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AOE11c3QgYmUgc2lnbmVkACgjIyBEZXRhaWxzAFUBU3BlbmRzIG11c3QgYmUgY2xhaW1lZCB3aXRoaW4gc29tZSB0ZW1wb3JhbCBib3VuZHMuIEEgc3BlbmQgbWF5IGJlIGNsYWltZWQgd2l0aGluIG9uZdRbYENvbmZpZzo6UGF5b3V0UGVyaW9kYF0gZnJvbSB0aGUgYHZhbGlkX2Zyb21gIGJsb2NrLlUBSW4gY2FzZSBvZiBhIHBheW91dCBmYWlsdXJlLCB0aGUgc3BlbmQgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZSBgY2hlY2tfc3RhdHVzYNxkaXNwYXRjaGFibGUgYmVmb3JlIHJldHJ5aW5nIHdpdGggdGhlIGN1cnJlbnQgZnVuY3Rpb24uADgjIyMgUGFyYW1ldGVyc2wtIGBpbmRleGA6IFRoZSBzcGVuZCBpbmRleC4AJCMjIEV2ZW50cwCQRW1pdHMgW2BFdmVudDo6UGFpZGBdIGlmIHN1Y2Nlc3NmdWwuMGNoZWNrX3N0YXR1cwQBFGluZGV4OAEoU3BlbmRJbmRleAAHTCkBQ2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgc3BlbmQgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBzdG9yYWdlIGlmIHByb2Nlc3NlZC4ASCMjIERpc3BhdGNoIE9yaWdpbgA8TXVzdCBiZSBzaWduZWQuACgjIyBEZXRhaWxzAAEBVGhlIHN0YXR1cyBjaGVjayBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgcmV0cnlpbmcgYSBmYWlsZWQgcGF5b3V0LkkBSWYgYSBzcGVuZCBoYXMgZWl0aGVyIHN1Y2NlZWRlZCBvciBleHBpcmVkLCBpdCBpcyByZW1vdmVkIGZyb20gdGhlIHN0b3JhZ2UgYnkgdGhpc+xmdW5jdGlvbi4gSW4gc3VjaCBpbnN0YW5jZXMsIHRyYW5zYWN0aW9uIGZlZXMgYXJlIHJlZnVuZGVkLgA4IyMjIFBhcmFtZXRlcnNsLSBgaW5kZXhgOiBUaGUgc3BlbmQgaW5kZXguACQjIyBFdmVudHMA+EVtaXRzIFtgRXZlbnQ6OlBheW1lbnRGYWlsZWRgXSBpZiB0aGUgc3BlbmQgcGF5b3V0IGhhcyBmYWlsZWQuAQFFbWl0cyBbYEV2ZW50OjpTcGVuZFByb2Nlc3NlZGBdIGlmIHRoZSBzcGVuZCBwYXlvdXQgaGFzIHN1Y2NlZWQuKHZvaWRfc3BlbmQEARRpbmRleDgBKFNwZW5kSW5kZXgACEB8Vm9pZCBwcmV2aW91c2x5IGFwcHJvdmVkIHNwZW5kLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAIRNdXN0IGJlIFtgQ29uZmlnOjpSZWplY3RPcmlnaW5gXS4AKCMjIERldGFpbHMAHQFBIHNwZW5kIHZvaWQgaXMgb25seSBwb3NzaWJsZSBpZiB0aGUgcGF5b3V0IGhhcyBub3QgYmVlbiBhdHRlbXB0ZWQgeWV0LgA4IyMjIFBhcmFtZXRlcnNsLSBgaW5kZXhgOiBUaGUgc3BlbmQgaW5kZXguACQjIyBFdmVudHMAwEVtaXRzIFtgRXZlbnQ6OkFzc2V0U3BlbmRWb2lkZWRgXSBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7JBAxccG9sa2Fkb3RfcnVudGltZV9jb21tb24UaW1wbHNcVmVyc2lvbmVkTG9jYXRhYmxlQXNzZXQAAQwIVjMIASBsb2NhdGlvbq0BAUR4Y206OnYzOjpMb2NhdGlvbgABIGFzc2V0X2lkTQIBQHhjbTo6djM6OkFzc2V0SWQAAwAIVjQIASBsb2NhdGlvbskBAUR4Y206OnY0OjpMb2NhdGlvbgABIGFzc2V0X2lkwQIBQHhjbTo6djQ6OkFzc2V0SWQABAAIVjUIASBsb2NhdGlvbv0BAUR4Y206OnY1OjpMb2NhdGlvbgABIGFzc2V0X2lkDQMBQHhjbTo6djU6OkFzc2V0SWQABQAAzQQMRHBhcmFjaGFpbnNfY29tbW9uDHBheWRWZXJzaW9uZWRMb2NhdGFibGVBY2NvdW50AAEICFY0CAEgbG9jYXRpb27JAQFEeGNtOjp2NDo6TG9jYXRpb24AAShhY2NvdW50X2lkyQEBRHhjbTo6djQ6OkxvY2F0aW9uAAQACFY1CAEgbG9jYXRpb279AQFEeGNtOjp2NTo6TG9jYXRpb24AAShhY2NvdW50X2lk/QEBRHhjbTo6djU6OkxvY2F0aW9uAAUAANEEDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcYcGFsbGV0EENhbGwIBFQABEkAARgQdm90ZQgBKHBvbGxfaW5kZXhgAURQb2xsSW5kZXhPZjxULCBJPgABEHZvdGXVBAFwQWNjb3VudFZvdGU8QmFsYW5jZU9mPFQsIEk+PgAAJBkBVm90ZSBpbiBhIHBvbGwuIElmIGB2b3RlLmlzX2F5ZSgpYCwgdGhlIHZvdGUgaXMgdG8gZW5hY3QgdGhlIHByb3Bvc2FsO7hvdGhlcndpc2UgaXQgaXMgYSB2b3RlIHRvIGtlZXAgdGhlIHN0YXR1cyBxdW8uAMhUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgDILSBgcG9sbF9pbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgcG9sbCB0byB2b3RlIGZvci6ELSBgdm90ZWA6IFRoZSB2b3RlIGNvbmZpZ3VyYXRpb24uABUBV2VpZ2h0OiBgTyhSKWAgd2hlcmUgUiBpcyB0aGUgbnVtYmVyIG9mIHBvbGxzIHRoZSB2b3RlciBoYXMgdm90ZWQgb24uIGRlbGVnYXRlEAEUY2xhc3PRAwE0Q2xhc3NPZjxULCBJPgABCHRvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShjb252aWN0aW9u3QQBKENvbnZpY3Rpb24AARxiYWxhbmNlVQEBPEJhbGFuY2VPZjxULCBJPgABXE0BRGVsZWdhdGUgdGhlIHZvdGluZyBwb3dlciAod2l0aCBzb21lIGdpdmVuIGNvbnZpY3Rpb24pIG9mIHRoZSBzZW5kaW5nIGFjY291bnQgZm9yIGFocGFydGljdWxhciBjbGFzcyBvZiBwb2xscy4AVQFUaGUgYmFsYW5jZSBkZWxlZ2F0ZWQgaXMgbG9ja2VkIGZvciBhcyBsb25nIGFzIGl0J3MgZGVsZWdhdGVkLCBhbmQgdGhlcmVhZnRlciBmb3IgdGhlyHRpbWUgYXBwcm9wcmlhdGUgZm9yIHRoZSBjb252aWN0aW9uJ3MgbG9jayBwZXJpb2QuAF0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXywgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBlaXRoZXI6dCAgLSBiZSBkZWxlZ2F0aW5nIGFscmVhZHk7IG9yRQEgIC0gaGF2ZSBubyB2b3RpbmcgYWN0aXZpdHkgKGlmIHRoZXJlIGlzLCB0aGVuIGl0IHdpbGwgbmVlZCB0byBiZSByZW1vdmVkIHRocm91Z2hMICAgIGByZW1vdmVfdm90ZWApLgBFAS0gYHRvYDogVGhlIGFjY291bnQgd2hvc2Ugdm90aW5nIHRoZSBgdGFyZ2V0YCBhY2NvdW50J3Mgdm90aW5nIHBvd2VyIHdpbGwgZm9sbG93Ll0BLSBgY2xhc3NgOiBUaGUgY2xhc3Mgb2YgcG9sbHMgdG8gZGVsZWdhdGUuIFRvIGRlbGVnYXRlIG11bHRpcGxlIGNsYXNzZXMsIG11bHRpcGxlIGNhbGxzgCAgdG8gdGhpcyBmdW5jdGlvbiBhcmUgcmVxdWlyZWQuVQEtIGBjb252aWN0aW9uYDogVGhlIGNvbnZpY3Rpb24gdGhhdCB3aWxsIGJlIGF0dGFjaGVkIHRvIHRoZSBkZWxlZ2F0ZWQgdm90ZXMuIFdoZW4gdGhlQQEgIGFjY291bnQgaXMgdW5kZWxlZ2F0ZWQsIHRoZSBmdW5kcyB3aWxsIGJlIGxvY2tlZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgcGVyaW9kLmEBLSBgYmFsYW5jZWA6IFRoZSBhbW91bnQgb2YgdGhlIGFjY291bnQncyBiYWxhbmNlIHRvIGJlIHVzZWQgaW4gZGVsZWdhdGluZy4gVGhpcyBtdXN0IG5vdLQgIGJlIG1vcmUgdGhhbiB0aGUgYWNjb3VudCdzIGN1cnJlbnQgYmFsYW5jZS4ASEVtaXRzIGBEZWxlZ2F0ZWRgLgAlAVdlaWdodDogYE8oUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGUgdm90ZXIgZGVsZWdhdGluZyB0byBoYXNNASAgdm90ZWQgb24uIFdlaWdodCBpcyBpbml0aWFsbHkgY2hhcmdlZCBhcyBpZiBtYXhpbXVtIHZvdGVzLCBidXQgaXMgcmVmdW5kZWQgbGF0ZXIuKHVuZGVsZWdhdGUEARRjbGFzc9EDATRDbGFzc09mPFQsIEk+AAI4TQFVbmRlbGVnYXRlIHRoZSB2b3RpbmcgcG93ZXIgb2YgdGhlIHNlbmRpbmcgYWNjb3VudCBmb3IgYSBwYXJ0aWN1bGFyIGNsYXNzIG9mIHBvbGxzLgBdAVRva2VucyBtYXkgYmUgdW5sb2NrZWQgZm9sbG93aW5nIG9uY2UgYW4gYW1vdW50IG9mIHRpbWUgY29uc2lzdGVudCB3aXRoIHRoZSBsb2NrIHBlcmlvZAkBb2YgdGhlIGNvbnZpY3Rpb24gd2l0aCB3aGljaCB0aGUgZGVsZWdhdGlvbiB3YXMgaXNzdWVkIGhhcyBwYXNzZWQuAEUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlVGN1cnJlbnRseSBkZWxlZ2F0aW5nLgDwLSBgY2xhc3NgOiBUaGUgY2xhc3Mgb2YgcG9sbHMgdG8gcmVtb3ZlIHRoZSBkZWxlZ2F0aW9uIGZyb20uAFBFbWl0cyBgVW5kZWxlZ2F0ZWRgLgAlAVdlaWdodDogYE8oUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGUgdm90ZXIgZGVsZWdhdGluZyB0byBoYXNNASAgdm90ZWQgb24uIFdlaWdodCBpcyBpbml0aWFsbHkgY2hhcmdlZCBhcyBpZiBtYXhpbXVtIHZvdGVzLCBidXQgaXMgcmVmdW5kZWQgbGF0ZXIuGHVubG9jawgBFGNsYXNz0QMBNENsYXNzT2Y8VCwgST4AARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADJF0BUmVtb3ZlIHRoZSBsb2NrIGNhdXNlZCBieSBwcmlvciB2b3RpbmcvZGVsZWdhdGluZyB3aGljaCBoYXMgZXhwaXJlZCB3aXRoaW4gYSBwYXJ0aWN1bGFyGGNsYXNzLgDIVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AoC0gYGNsYXNzYDogVGhlIGNsYXNzIG9mIHBvbGxzIHRvIHVubG9jay64LSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gcmVtb3ZlIHRoZSBsb2NrIG9uLgC8V2VpZ2h0OiBgTyhSKWAgd2l0aCBSIG51bWJlciBvZiB2b3RlIG9mIHRhcmdldC4scmVtb3ZlX3ZvdGUIARRjbGFzc+EEAVRPcHRpb248Q2xhc3NPZjxULCBJPj4AARRpbmRleDgBRFBvbGxJbmRleE9mPFQsIEk+AAR0ZFJlbW92ZSBhIHZvdGUgZm9yIGEgcG9sbC4ADElmOnAtIHRoZSBwb2xsIHdhcyBjYW5jZWxsZWQsIG9yZC0gdGhlIHBvbGwgaXMgb25nb2luZywgb3J4LSB0aGUgcG9sbCBoYXMgZW5kZWQgc3VjaCB0aGF0/CAgLSB0aGUgdm90ZSBvZiB0aGUgYWNjb3VudCB3YXMgaW4gb3Bwb3NpdGlvbiB0byB0aGUgcmVzdWx0OyBvctQgIC0gdGhlcmUgd2FzIG5vIGNvbnZpY3Rpb24gdG8gdGhlIGFjY291bnQncyB2b3RlOyBvcoQgIC0gdGhlIGFjY291bnQgbWFkZSBhIHNwbGl0IHZvdGVdAS4uLnRoZW4gdGhlIHZvdGUgaXMgcmVtb3ZlZCBjbGVhbmx5IGFuZCBhIGZvbGxvd2luZyBjYWxsIHRvIGB1bmxvY2tgIG1heSByZXN1bHQgaW4gbW9yZVhmdW5kcyBiZWluZyBhdmFpbGFibGUuAJBJZiwgaG93ZXZlciwgdGhlIHBvbGwgaGFzIGVuZGVkIGFuZDrsLSBpdCBmaW5pc2hlZCBjb3JyZXNwb25kaW5nIHRvIHRoZSB2b3RlIG9mIHRoZSBhY2NvdW50LCBhbmTcLSB0aGUgYWNjb3VudCBtYWRlIGEgc3RhbmRhcmQgdm90ZSB3aXRoIGNvbnZpY3Rpb24sIGFuZLwtIHRoZSBsb2NrIHBlcmlvZCBvZiB0aGUgY29udmljdGlvbiBpcyBub3Qgb3ZlclkBLi4udGhlbiB0aGUgbG9jayB3aWxsIGJlIGFnZ3JlZ2F0ZWQgaW50byB0aGUgb3ZlcmFsbCBhY2NvdW50J3MgbG9jaywgd2hpY2ggbWF5IGludm9sdmVZASpvdmVybG9ja2luZyogKHdoZXJlIHRoZSB0d28gbG9ja3MgYXJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgbG9jayB0aGF0IGlzIHRoZSBtYXhpbXVt5G9mIGJvdGggdGhlIGFtb3VudCBsb2NrZWQgYW5kIHRoZSB0aW1lIGlzIGl0IGxvY2tlZCBmb3IpLgBJAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8sIGFuZCB0aGUgc2lnbmVyIG11c3QgaGF2ZSBhIHZvdGVwcmVnaXN0ZXJlZCBmb3IgcG9sbCBgaW5kZXhgLgDcLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgcG9sbCBvZiB0aGUgdm90ZSB0byBiZSByZW1vdmVkLlUBLSBgY2xhc3NgOiBPcHRpb25hbCBwYXJhbWV0ZXIsIGlmIGdpdmVuIGl0IGluZGljYXRlcyB0aGUgY2xhc3Mgb2YgdGhlIHBvbGwuIEZvciBwb2xsc/AgIHdoaWNoIGhhdmUgZmluaXNoZWQgb3IgYXJlIGNhbmNlbGxlZCwgdGhpcyBtdXN0IGJlIGBTb21lYC4ARQFXZWlnaHQ6IGBPKFIgKyBsb2cgUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGF0IGB0YXJnZXRgIGhhcyB2b3RlZCBvbi7YICBXZWlnaHQgaXMgY2FsY3VsYXRlZCBmb3IgdGhlIG1heGltdW0gbnVtYmVyIG9mIHZvdGUuRHJlbW92ZV9vdGhlcl92b3RlDAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRjbGFzc9EDATRDbGFzc09mPFQsIEk+AAEUaW5kZXg4AURQb2xsSW5kZXhPZjxULCBJPgAFQGRSZW1vdmUgYSB2b3RlIGZvciBhIHBvbGwuAE0BSWYgdGhlIGB0YXJnZXRgIGlzIGVxdWFsIHRvIHRoZSBzaWduZXIsIHRoZW4gdGhpcyBmdW5jdGlvbiBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8tAWByZW1vdmVfdm90ZWAuIElmIG5vdCBlcXVhbCB0byB0aGUgc2lnbmVyLCB0aGVuIHRoZSB2b3RlIG11c3QgaGF2ZSBleHBpcmVkLCUBZWl0aGVyIGJlY2F1c2UgdGhlIHBvbGwgd2FzIGNhbmNlbGxlZCwgYmVjYXVzZSB0aGUgdm90ZXIgbG9zdCB0aGUgcG9sbCBvcphiZWNhdXNlIHRoZSBjb252aWN0aW9uIHBlcmlvZCBpcyBvdmVyLgDIVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AYQEtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCBvZiB0aGUgdm90ZSB0byBiZSByZW1vdmVkOyB0aGlzIGFjY291bnQgbXVzdCBoYXZlIHZvdGVkIGZvciBwb2xsKCAgYGluZGV4YC7cLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgcG9sbCBvZiB0aGUgdm90ZSB0byBiZSByZW1vdmVkLoQtIGBjbGFzc2A6IFRoZSBjbGFzcyBvZiB0aGUgcG9sbC4ARQFXZWlnaHQ6IGBPKFIgKyBsb2cgUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGF0IGB0YXJnZXRgIGhhcyB2b3RlZCBvbi7YICBXZWlnaHQgaXMgY2FsY3VsYXRlZCBmb3IgdGhlIG1heGltdW0gbnVtYmVyIG9mIHZvdGUuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLtUEDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZSxBY2NvdW50Vm90ZQQcQmFsYW5jZQFVAQEMIFN0YW5kYXJkCAEQdm90ZdkEARBWb3RlAAEcYmFsYW5jZVUBARxCYWxhbmNlAAAAFFNwbGl0CAEMYXllVQEBHEJhbGFuY2UAAQxuYXlVAQEcQmFsYW5jZQABADBTcGxpdEFic3RhaW4MAQxheWVVAQEcQmFsYW5jZQABDG5heVUBARxCYWxhbmNlAAEcYWJzdGFpblUBARxCYWxhbmNlAAIAANkEDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZRBWb3RlAAAEAAwAAADdBAxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nKGNvbnZpY3Rpb24oQ29udmljdGlvbgABHBBOb25lAAAAIExvY2tlZDF4AAEAIExvY2tlZDJ4AAIAIExvY2tlZDN4AAMAIExvY2tlZDR4AAQAIExvY2tlZDV4AAUAIExvY2tlZDZ4AAYAAOEEBBhPcHRpb24EBFQB0QMBCBBOb25lAAAAEFNvbWUEANEDAAABAADlBAxAcGFsbGV0X3JlZmVyZW5kYRhwYWxsZXQQQ2FsbAgEVAAESQABJBhzdWJtaXQMATxwcm9wb3NhbF9vcmlnaW7VAwFcQm94PFBhbGxldHNPcmlnaW5PZjxUPj4AASBwcm9wb3NhbOkEAUxCb3VuZGVkQ2FsbE9mPFQsIEk+AAFAZW5hY3RtZW50X21vbWVudPEEAYhEaXNwYXRjaFRpbWU8QmxvY2tOdW1iZXJGb3I8VCwgST4+AAAksFByb3Bvc2UgYSByZWZlcmVuZHVtIG9uIGEgcHJpdmlsZWdlZCBhY3Rpb24uAFkBLSBgb3JpZ2luYDogbXVzdCBiZSBgU3VibWl0T3JpZ2luYCBhbmQgdGhlIGFjY291bnQgbXVzdCBoYXZlIGBTdWJtaXNzaW9uRGVwb3NpdGAgZnVuZHMwICBhdmFpbGFibGUuLQEtIGBwcm9wb3NhbF9vcmlnaW5gOiBUaGUgb3JpZ2luIGZyb20gd2hpY2ggdGhlIHByb3Bvc2FsIHNob3VsZCBiZSBleGVjdXRlZC5sLSBgcHJvcG9zYWxgOiBUaGUgcHJvcG9zYWwuFQEtIGBlbmFjdG1lbnRfbW9tZW50YDogVGhlIG1vbWVudCB0aGF0IHRoZSBwcm9wb3NhbCBzaG91bGQgYmUgZW5hY3RlZC4ASEVtaXRzIGBTdWJtaXR0ZWRgLlhwbGFjZV9kZWNpc2lvbl9kZXBvc2l0BAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgAASCsUG9zdCB0aGUgRGVjaXNpb24gRGVwb3NpdCBmb3IgYSByZWZlcmVuZHVtLgA5AS0gYG9yaWdpbmA6IG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBhY2NvdW50IG11c3QgaGF2ZSBmdW5kcyBhdmFpbGFibGUgZm9yIHRoZaAgIHJlZmVyZW5kdW0ncyB0cmFjaydzIERlY2lzaW9uIERlcG9zaXQuUQEtIGBpbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgc3VibWl0dGVkIHJlZmVyZW5kdW0gd2hvc2UgRGVjaXNpb24gRGVwb3NpdCBpcyB5ZXQgdG8gYmUkICBwb3N0ZWQuAHhFbWl0cyBgRGVjaXNpb25EZXBvc2l0UGxhY2VkYC5ccmVmdW5kX2RlY2lzaW9uX2RlcG9zaXQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAACHCkBUmVmdW5kIHRoZSBEZWNpc2lvbiBEZXBvc2l0IGZvciBhIGNsb3NlZCByZWZlcmVuZHVtIGJhY2sgdG8gdGhlIGRlcG9zaXRvci4AnC0gYG9yaWdpbmA6IG11c3QgYmUgYFNpZ25lZGAgb3IgYFJvb3RgLk0BLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgYSBjbG9zZWQgcmVmZXJlbmR1bSB3aG9zZSBEZWNpc2lvbiBEZXBvc2l0IGhhcyBub3QgeWV0IGJlZW4sICByZWZ1bmRlZC4AgEVtaXRzIGBEZWNpc2lvbkRlcG9zaXRSZWZ1bmRlZGAuGGNhbmNlbAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAMYdENhbmNlbCBhbiBvbmdvaW5nIHJlZmVyZW5kdW0uAJwtIGBvcmlnaW5gOiBtdXN0IGJlIHRoZSBgQ2FuY2VsT3JpZ2luYC7cLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIHJlZmVyZW5kdW0gdG8gYmUgY2FuY2VsbGVkLgBIRW1pdHMgYENhbmNlbGxlZGAuEGtpbGwEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAAEGNBDYW5jZWwgYW4gb25nb2luZyByZWZlcmVuZHVtIGFuZCBzbGFzaCB0aGUgZGVwb3NpdHMuAJQtIGBvcmlnaW5gOiBtdXN0IGJlIHRoZSBgS2lsbE9yaWdpbmAu3C0gYGluZGV4YDogVGhlIGluZGV4IG9mIHRoZSByZWZlcmVuZHVtIHRvIGJlIGNhbmNlbGxlZC4AkEVtaXRzIGBLaWxsZWRgIGFuZCBgRGVwb3NpdFNsYXNoZWRgLkBudWRnZV9yZWZlcmVuZHVtBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgABRAdAUFkdmFuY2UgYSByZWZlcmVuZHVtIG9udG8gaXRzIG5leHQgbG9naWNhbCBzdGF0ZS4gT25seSB1c2VkIGludGVybmFsbHkuAGwtIGBvcmlnaW5gOiBtdXN0IGJlIGBSb290YC6kLSBgaW5kZXhgOiB0aGUgcmVmZXJlbmR1bSB0byBiZSBhZHZhbmNlZC5Ib25lX2Zld2VyX2RlY2lkaW5nBAEUdHJhY2vRAwE8VHJhY2tJZE9mPFQsIEk+AAYkCQFBZHZhbmNlIGEgdHJhY2sgb250byBpdHMgbmV4dCBsb2dpY2FsIHN0YXRlLiBPbmx5IHVzZWQgaW50ZXJuYWxseS4AbC0gYG9yaWdpbmA6IG11c3QgYmUgYFJvb3RgLpAtIGB0cmFja2A6IHRoZSB0cmFjayB0byBiZSBhZHZhbmNlZC4AUQFBY3Rpb24gaXRlbSBmb3Igd2hlbiB0aGVyZSBpcyBub3cgb25lIGZld2VyIHJlZmVyZW5kdW0gaW4gdGhlIGRlY2lkaW5nIHBoYXNlIGFuZCB0aGUVAWBEZWNpZGluZ0NvdW50YCBpcyBub3QgeWV0IHVwZGF0ZWQuIFRoaXMgbWVhbnMgdGhhdCB3ZSBzaG91bGQgZWl0aGVyOiUBLSBiZWdpbiBkZWNpZGluZyBhbm90aGVyIHJlZmVyZW5kdW0gKGFuZCBsZWF2ZSBgRGVjaWRpbmdDb3VudGAgYWxvbmUpOyBvcnAtIGRlY3JlbWVudCBgRGVjaWRpbmdDb3VudGAuZHJlZnVuZF9zdWJtaXNzaW9uX2RlcG9zaXQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAAHHDEBUmVmdW5kIHRoZSBTdWJtaXNzaW9uIERlcG9zaXQgZm9yIGEgY2xvc2VkIHJlZmVyZW5kdW0gYmFjayB0byB0aGUgZGVwb3NpdG9yLgCcLSBgb3JpZ2luYDogbXVzdCBiZSBgU2lnbmVkYCBvciBgUm9vdGAuVQEtIGBpbmRleGA6IFRoZSBpbmRleCBvZiBhIGNsb3NlZCByZWZlcmVuZHVtIHdob3NlIFN1Ym1pc3Npb24gRGVwb3NpdCBoYXMgbm90IHlldCBiZWVuLCAgcmVmdW5kZWQuAIhFbWl0cyBgU3VibWlzc2lvbkRlcG9zaXRSZWZ1bmRlZGAuMHNldF9tZXRhZGF0YQgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAEobWF5YmVfaGFzaPUEATxPcHRpb248VDo6SGFzaD4ACByYU2V0IG9yIGNsZWFyIG1ldGFkYXRhIG9mIGEgcmVmZXJlbmR1bS4ALFBhcmFtZXRlcnM6RQEtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgIGJ5IGEgY3JlYXRvciBvZiBhIHJlZmVyZW5kdW0gb3IgYnkgYW55b25lIHRvIGNsZWFyIGGQICBtZXRhZGF0YSBvZiBhIGZpbmlzaGVkIHJlZmVyZW5kdW0uDQEtIGBpbmRleGA6ICBUaGUgaW5kZXggb2YgYSByZWZlcmVuZHVtIHRvIHNldCBvciBjbGVhciBtZXRhZGF0YSBmb3IuUQEtIGBtYXliZV9oYXNoYDogVGhlIGhhc2ggb2YgYW4gb24tY2hhaW4gc3RvcmVkIHByZWltYWdlLiBgTm9uZWAgdG8gY2xlYXIgYSBtZXRhZGF0YS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu6QQQNGZyYW1lX3N1cHBvcnQYdHJhaXRzJHByZWltYWdlcxxCb3VuZGVkCARUASAESAHtBAEMGExlZ2FjeQQBEGhhc2g8ASRIOjpPdXRwdXQAAAAYSW5saW5lBABBBAE0Qm91bmRlZElubGluZQABABhMb29rdXAIARBoYXNoPAEkSDo6T3V0cHV0AAEMbGVuOAEMdTMyAAIAAO0EDChzcF9ydW50aW1lGHRyYWl0cyxCbGFrZVR3bzI1NgAAAADxBBA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMgc2NoZWR1bGUwRGlzcGF0Y2hUaW1lBCxCbG9ja051bWJlcgE4AQgIQXQEADgBLEJsb2NrTnVtYmVyAAAAFEFmdGVyBAA4ASxCbG9ja051bWJlcgABAAD1BAQYT3B0aW9uBARUATwBCBBOb25lAAAAEFNvbWUEADwAAAEAAPkEDEBwYWxsZXRfd2hpdGVsaXN0GHBhbGxldBBDYWxsBARUAAEQOHdoaXRlbGlzdF9jYWxsBAEkY2FsbF9oYXNoPAEcVDo6SGFzaAAAAFxyZW1vdmVfd2hpdGVsaXN0ZWRfY2FsbAQBJGNhbGxfaGFzaDwBHFQ6Okhhc2gAAQBkZGlzcGF0Y2hfd2hpdGVsaXN0ZWRfY2FsbAwBJGNhbGxfaGFzaDwBHFQ6Okhhc2gAAUBjYWxsX2VuY29kZWRfbGVuOAEMdTMyAAFMY2FsbF93ZWlnaHRfd2l0bmVzcxEBARhXZWlnaHQAAgCcZGlzcGF0Y2hfd2hpdGVsaXN0ZWRfY2FsbF93aXRoX3ByZWltYWdlBAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAwAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu/QQMPHBhbGxldF9ib3VudGllcxhwYWxsZXQQQ2FsbAgEVAAESQABLDhwcm9wb3NlX2JvdW50eQgBFHZhbHVlUQEBPEJhbGFuY2VPZjxULCBJPgABLGRlc2NyaXB0aW9uGAEcVmVjPHU4PgAAMFRQcm9wb3NlIGEgbmV3IGJvdW50eS4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBRAVBheW1lbnQ6IGBUaXBSZXBvcnREZXBvc2l0QmFzZWAgd2lsbCBiZSByZXNlcnZlZCBmcm9tIHRoZSBvcmlnaW4gYWNjb3VudCwgYXMgd2VsbCBhc1EBYERhdGFEZXBvc2l0UGVyQnl0ZWAgZm9yIGVhY2ggYnl0ZSBpbiBgcmVhc29uYC4gSXQgd2lsbCBiZSB1bnJlc2VydmVkIHVwb24gYXBwcm92YWwsZG9yIHNsYXNoZWQgd2hlbiByZWplY3RlZC4A+C0gYGN1cmF0b3JgOiBUaGUgY3VyYXRvciBhY2NvdW50IHdob20gd2lsbCBtYW5hZ2UgdGhpcyBib3VudHkuZC0gYGZlZWA6IFRoZSBjdXJhdG9yIGZlZS4lAS0gYHZhbHVlYDogVGhlIHRvdGFsIHBheW1lbnQgYW1vdW50IG9mIHRoaXMgYm91bnR5LCBjdXJhdG9yIGZlZSBpbmNsdWRlZC7ALSBgZGVzY3JpcHRpb25gOiBUaGUgZGVzY3JpcHRpb24gb2YgdGhpcyBib3VudHkuOGFwcHJvdmVfYm91bnR5BAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARxdAUFwcHJvdmUgYSBib3VudHkgcHJvcG9zYWwuIEF0IGEgbGF0ZXIgdGltZSwgdGhlIGJvdW50eSB3aWxsIGJlIGZ1bmRlZCBhbmQgYmVjb21lIGFjdGl2ZahhbmQgdGhlIG9yaWdpbmFsIGRlcG9zaXQgd2lsbCBiZSByZXR1cm5lZC4ApE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIGBUOjpTcGVuZE9yaWdpbmAuADQjIyBDb21wbGV4aXR5HC0gTygxKS48cHJvcG9zZV9jdXJhdG9yDAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWVRAQE8QmFsYW5jZU9mPFQsIEk+AAIYlFByb3Bvc2UgYSBjdXJhdG9yIHRvIGEgZnVuZGVkIGJvdW50eS4ApE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIGBUOjpTcGVuZE9yaWdpbmAuADQjIyBDb21wbGV4aXR5HC0gTygxKS5AdW5hc3NpZ25fY3VyYXRvcgQBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AANEfFVuYXNzaWduIGN1cmF0b3IgZnJvbSBhIGJvdW50eS4AHQFUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgYSBzaWduZWQgb3JpZ2luLgA9AUlmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBgUmVqZWN0T3JpZ2luYCwgd2UgYXNzdW1lIHRoYXQgdGhlIGN1cmF0b3IgaXMxAW1hbGljaW91cyBvciBpbmFjdGl2ZS4gQXMgYSByZXN1bHQsIHdlIHdpbGwgc2xhc2ggdGhlIGN1cmF0b3Igd2hlbiBwb3NzaWJsZS4AYQFJZiB0aGUgb3JpZ2luIGlzIHRoZSBjdXJhdG9yLCB3ZSB0YWtlIHRoaXMgYXMgYSBzaWduIHRoZXkgYXJlIHVuYWJsZSB0byBkbyB0aGVpciBqb2IgYW5kXQF0aGV5IHdpbGxpbmdseSBnaXZlIHVwLiBXZSBjb3VsZCBzbGFzaCB0aGVtLCBidXQgZm9yIG5vdyB3ZSBhbGxvdyB0aGVtIHRvIHJlY292ZXIgdGhlaXI1AWRlcG9zaXQgYW5kIGV4aXQgd2l0aG91dCBpc3N1ZS4gKFdlIG1heSB3YW50IHRvIGNoYW5nZSB0aGlzIGlmIGl0IGlzIGFidXNlZC4pAF0BRmluYWxseSwgdGhlIG9yaWdpbiBjYW4gYmUgYW55b25lIGlmIGFuZCBvbmx5IGlmIHRoZSBjdXJhdG9yIGlzICJpbmFjdGl2ZSIuIFRoaXMgYWxsb3dzYQFhbnlvbmUgaW4gdGhlIGNvbW11bml0eSB0byBjYWxsIG91dCB0aGF0IGEgY3VyYXRvciBpcyBub3QgZG9pbmcgdGhlaXIgZHVlIGRpbGlnZW5jZSwgYW5kOQF3ZSBzaG91bGQgcGljayBhIG5ldyBjdXJhdG9yLiBJbiB0aGlzIGNhc2UgdGhlIGN1cmF0b3Igc2hvdWxkIGFsc28gYmUgc2xhc2hlZC4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjhhY2NlcHRfY3VyYXRvcgQBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AAQclEFjY2VwdCB0aGUgY3VyYXRvciByb2xlIGZvciBhIGJvdW50eS4pAUEgZGVwb3NpdCB3aWxsIGJlIHJlc2VydmVkIGZyb20gY3VyYXRvciBhbmQgcmVmdW5kIHVwb24gc3VjY2Vzc2Z1bCBwYXlvdXQuAJBNYXkgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgY3VyYXRvci4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjBhd2FyZF9ib3VudHkIASRib3VudHlfaWRgASxCb3VudHlJbmRleAABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABShZAUF3YXJkIGJvdW50eSB0byBhIGJlbmVmaWNpYXJ5IGFjY291bnQuIFRoZSBiZW5lZmljaWFyeSB3aWxsIGJlIGFibGUgdG8gY2xhaW0gdGhlIGZ1bmRzOGFmdGVyIGEgZGVsYXkuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGN1cmF0b3Igb2YgdGhpcyBib3VudHkuAIgtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gYXdhcmQuGQEtIGBiZW5lZmljaWFyeWA6IFRoZSBiZW5lZmljaWFyeSBhY2NvdW50IHdob20gd2lsbCByZWNlaXZlIHRoZSBwYXlvdXQuADQjIyBDb21wbGV4aXR5HC0gTygxKS4wY2xhaW1fYm91bnR5BAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgABiDsQ2xhaW0gdGhlIHBheW91dCBmcm9tIGFuIGF3YXJkZWQgYm91bnR5IGFmdGVyIHBheW91dCBkZWxheS4AJQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYmVuZWZpY2lhcnkgb2YgdGhpcyBib3VudHkuAIgtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gY2xhaW0uADQjIyBDb21wbGV4aXR5HC0gTygxKS4wY2xvc2VfYm91bnR5BAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAByQ5AUNhbmNlbCBhIHByb3Bvc2VkIG9yIGFjdGl2ZSBib3VudHkuIEFsbCB0aGUgZnVuZHMgd2lsbCBiZSBzZW50IHRvIHRyZWFzdXJ5IGFuZMx0aGUgY3VyYXRvciBkZXBvc2l0IHdpbGwgYmUgdW5yZXNlcnZlZCBpZiBwb3NzaWJsZS4AyE9ubHkgYFQ6OlJlamVjdE9yaWdpbmAgaXMgYWJsZSB0byBjYW5jZWwgYSBib3VudHkuAIwtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gY2FuY2VsLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuUGV4dGVuZF9ib3VudHlfZXhwaXJ5CAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARhyZW1hcmsYARxWZWM8dTg+AAgkrEV4dGVuZCB0aGUgZXhwaXJ5IHRpbWUgb2YgYW4gYWN0aXZlIGJvdW50eS4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgY3VyYXRvciBvZiB0aGlzIGJvdW50eS4AjC0gYGJvdW50eV9pZGA6IEJvdW50eSBJRCB0byBleHRlbmQujC0gYHJlbWFya2A6IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uADQjIyBDb21wbGV4aXR5HC0gTygxKS5sYXBwcm92ZV9ib3VudHlfd2l0aF9jdXJhdG9yDAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWVRAQE8QmFsYW5jZU9mPFQsIEk+AAks1EFwcHJvdmUgYm91bnRyeSBhbmQgcHJvcG9zZSBhIGN1cmF0b3Igc2ltdWx0YW5lb3VzbHkuVQFUaGlzIGNhbGwgaXMgYSBzaG9ydGN1dCB0byBjYWxsaW5nIGBhcHByb3ZlX2JvdW50eWAgYW5kIGBwcm9wb3NlX2N1cmF0b3JgIHNlcGFyYXRlbHkuAKRNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgVDo6U3BlbmRPcmlnaW5gLgCQLSBgYm91bnR5X2lkYDogQm91bnR5IElEIHRvIGFwcHJvdmUu+C0gYGN1cmF0b3JgOiBUaGUgY3VyYXRvciBhY2NvdW50IHdob20gd2lsbCBtYW5hZ2UgdGhpcyBib3VudHkuZC0gYGZlZWA6IFRoZSBjdXJhdG9yIGZlZS4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjBwb2tlX2RlcG9zaXQEASRib3VudHlfaWRgASxCb3VudHlJbmRleAAKPORQb2tlIHRoZSBkZXBvc2l0IHJlc2VydmVkIGZvciBjcmVhdGluZyBhIGJvdW50eSBwcm9wb3NhbC4A9FRoaXMgY2FuIGJlIHVzZWQgYnkgYWNjb3VudHMgdG8gdXBkYXRlIHRoZWlyIHJlc2VydmVkIGFtb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczr0LSBgYm91bnR5X2lkYDogVGhlIGJvdW50eSBpZCBmb3Igd2hpY2ggdG8gYWRqdXN0IHRoZSBkZXBvc2l0LgA5AUlmIHRoZSBkZXBvc2l0IGlzIHVwZGF0ZWQsIHRoZSBkaWZmZXJlbmNlIHdpbGwgYmUgcmVzZXJ2ZWQvdW5yZXNlcnZlZCBmcm9tIHRoZUxwcm9wb3NlcidzIGFjY291bnQuACkBVGhlIHRyYW5zYWN0aW9uIGlzIG1hZGUgZnJlZSBpZiB0aGUgZGVwb3NpdCBpcyB1cGRhdGVkIGFuZCBwYWlkIG90aGVyd2lzZS4AvEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHRoZSBkZXBvc2l0IGlzIHVwZGF0ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLgEFDFRwYWxsZXRfY2hpbGRfYm91bnRpZXMYcGFsbGV0EENhbGwEBFQAARxAYWRkX2NoaWxkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABFHZhbHVlUQEBMEJhbGFuY2VPZjxUPgABLGRlc2NyaXB0aW9uGAEcVmVjPHU4PgAATFxBZGQgYSBuZXcgY2hpbGQtYm91bnR5LgD8VGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGN1cmF0b3Igb2YgcGFyZW503GJvdW50eSBhbmQgdGhlIHBhcmVudCBib3VudHkgbXVzdCBiZSBpbiAiYWN0aXZlIiBzdGF0ZS4ABQFDaGlsZC1ib3VudHkgZ2V0cyBhZGRlZCBzdWNjZXNzZnVsbHkgJiBmdW5kIGdldHMgdHJhbnNmZXJyZWQgZnJvbQkBcGFyZW50IGJvdW50eSB0byBjaGlsZC1ib3VudHkgYWNjb3VudCwgaWYgcGFyZW50IGJvdW50eSBoYXMgZW5vdWdobGZ1bmRzLCBlbHNlIHRoZSBjYWxsIGZhaWxzLgANAVVwcGVyIGJvdW5kIHRvIG1heGltdW0gbnVtYmVyIG9mIGFjdGl2ZSAgY2hpbGQgYm91bnRpZXMgdGhhdCBjYW4gYmWoYWRkZWQgYXJlIG1hbmFnZWQgdmlhIHJ1bnRpbWUgdHJhaXQgY29uZmlnmFtgQ29uZmlnOjpNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50YF0uAAEBSWYgdGhlIGNhbGwgaXMgc3VjY2VzcywgdGhlIHN0YXR1cyBvZiBjaGlsZC1ib3VudHkgaXMgdXBkYXRlZCB0byAiQWRkZWQiLgBNAS0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5IGZvciB3aGljaCBjaGlsZC1ib3VudHkgaXMgYmVpbmcgYWRkZWQusC0gYHZhbHVlYDogVmFsdWUgZm9yIGV4ZWN1dGluZyB0aGUgcHJvcG9zYWwu3C0gYGRlc2NyaXB0aW9uYDogVGV4dCBkZXNjcmlwdGlvbiBmb3IgdGhlIGNoaWxkLWJvdW50eS48cHJvcG9zZV9jdXJhdG9yEAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWVRAQEwQmFsYW5jZU9mPFQ+AAE8oFByb3Bvc2UgY3VyYXRvciBmb3IgZnVuZGVkIGNoaWxkLWJvdW50eS4ADQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBjdXJhdG9yIG9mIHBhcmVudCBib3VudHkuABEBUGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2hpbGQtYm91bnR5IGNhbGwgdG8Ud29yay4ADQFDaGlsZC1ib3VudHkgbXVzdCBiZSBpbiAiQWRkZWQiIHN0YXRlLCBmb3IgcHJvY2Vzc2luZyB0aGUgY2FsbC4gQW5kBQFzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gIkN1cmF0b3JQcm9wb3NlZCIgb24gc3VjY2Vzc2Z1bEBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LrQtIGBjdXJhdG9yYDogQWRkcmVzcyBvZiBjaGlsZC1ib3VudHkgY3VyYXRvci7sLSBgZmVlYDogcGF5bWVudCBmZWUgdG8gY2hpbGQtYm91bnR5IGN1cmF0b3IgZm9yIGV4ZWN1dGlvbi44YWNjZXB0X2N1cmF0b3IIAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWRgASxCb3VudHlJbmRleAACTLRBY2NlcHQgdGhlIGN1cmF0b3Igcm9sZSBmb3IgdGhlIGNoaWxkLWJvdW50eS4A9FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBjdXJhdG9yIG9mIHRoaXM0Y2hpbGQtYm91bnR5LgDsQSBkZXBvc2l0IHdpbGwgYmUgcmVzZXJ2ZWQgZnJvbSB0aGUgY3VyYXRvciBhbmQgcmVmdW5kIHVwb26Ic3VjY2Vzc2Z1bCBwYXlvdXQgb3IgY2FuY2VsbGF0aW9uLgD4RmVlIGZvciBjdXJhdG9yIGlzIGRlZHVjdGVkIGZyb20gY3VyYXRvciBmZWUgb2YgcGFyZW50IGJvdW50eS4AEQFQYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0bxR3b3JrLgANAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluICJDdXJhdG9yUHJvcG9zZWQiIHN0YXRlLCBmb3IgcHJvY2Vzc2luZyB0aGUJAWNhbGwuIEFuZCBzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gIkFjdGl2ZSIgb24gc3VjY2Vzc2Z1bEBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LkB1bmFzc2lnbl9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAA4iUVW5hc3NpZ24gY3VyYXRvciBmcm9tIGEgY2hpbGQtYm91bnR5LgAJAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBjYW4gYmUgZWl0aGVyIGBSZWplY3RPcmlnaW5gLCBvctx0aGUgY3VyYXRvciBvZiB0aGUgcGFyZW50IGJvdW50eSwgb3IgYW55IHNpZ25lZCBvcmlnaW4uAPhGb3IgdGhlIG9yaWdpbiBvdGhlciB0aGFuIFQ6OlJlamVjdE9yaWdpbiBhbmQgdGhlIGNoaWxkLWJvdW50eQEBY3VyYXRvciwgcGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2FsbCB0bwkBd29yay4gV2UgYWxsb3cgY2hpbGQtYm91bnR5IGN1cmF0b3IgYW5kIFQ6OlJlamVjdE9yaWdpbiB0byBleGVjdXRlyHRoaXMgY2FsbCBpcnJlc3BlY3RpdmUgb2YgdGhlIHBhcmVudCBib3VudHkgc3RhdGUuANxJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgb3IgdGhlBQFwYXJlbnQgYm91bnR5IGN1cmF0b3IsIHdlIGFzc3VtZSB0aGF0IHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciBpcw0BbWFsaWNpb3VzIG9yIGluYWN0aXZlLiBBcyBhIHJlc3VsdCwgY2hpbGQtYm91bnR5IGN1cmF0b3IgZGVwb3NpdCBpcyBzbGFzaGVkLgAFAUlmIHRoZSBvcmlnaW4gaXMgdGhlIGNoaWxkLWJvdW50eSBjdXJhdG9yLCB3ZSB0YWtlIHRoaXMgYXMgYSBzaWduCQF0aGF0IHRoZXkgYXJlIHVuYWJsZSB0byBkbyB0aGVpciBqb2IsIGFuZCBhcmUgd2lsbGluZ2x5IGdpdmluZyB1cC4JAVdlIGNvdWxkIHNsYXNoIHRoZSBkZXBvc2l0LCBidXQgZm9yIG5vdyB3ZSBhbGxvdyB0aGVtIHRvIHVucmVzZXJ2ZREBdGhlaXIgZGVwb3NpdCBhbmQgZXhpdCB3aXRob3V0IGlzc3VlLiAoV2UgbWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMgaWY4aXQgaXMgYWJ1c2VkLikABQFGaW5hbGx5LCB0aGUgb3JpZ2luIGNhbiBiZSBhbnlvbmUgaWZmIHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciBpcwkBImluYWN0aXZlIi4gRXhwaXJ5IHVwZGF0ZSBkdWUgb2YgcGFyZW50IGJvdW50eSBpcyB1c2VkIHRvIGVzdGltYXRlnGluYWN0aXZlIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBjdXJhdG9yLgANAVRoaXMgYWxsb3dzIGFueW9uZSBpbiB0aGUgY29tbXVuaXR5IHRvIGNhbGwgb3V0IHRoYXQgYSBjaGlsZC1ib3VudHkJAWN1cmF0b3IgaXMgbm90IGRvaW5nIHRoZWlyIGR1ZSBkaWxpZ2VuY2UsIGFuZCB3ZSBzaG91bGQgcGljayBhIG5ld/hvbmUuIEluIHRoaXMgY2FzZSB0aGUgY2hpbGQtYm91bnR5IGN1cmF0b3IgZGVwb3NpdCBpcyBzbGFzaGVkLgABAVN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBtb3ZlZCB0byBBZGRlZCBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNhbGwsY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuSGF3YXJkX2NoaWxkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGABLEJvdW50eUluZGV4AAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAERJBBd2FyZCBjaGlsZC1ib3VudHkgdG8gYSBiZW5lZmljaWFyeS4A+FRoZSBiZW5lZmljaWFyeSB3aWxsIGJlIGFibGUgdG8gY2xhaW0gdGhlIGZ1bmRzIGFmdGVyIGEgZGVsYXkuAPxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgcGFyZW50IGN1cmF0b3Igb3J0Y3VyYXRvciBvZiB0aGlzIGNoaWxkLWJvdW50eS4AEQFQYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0bxR3b3JrLgAJAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhlIGNhbGwuIEFuZBEBc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIG1vdmVkIHRvICJQZW5kaW5nUGF5b3V0IiBvbiBzdWNjZXNzZnVsIGNhbGwsY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkulC0gYGJlbmVmaWNpYXJ5YDogQmVuZWZpY2lhcnkgYWNjb3VudC5IY2xhaW1fY2hpbGRfYm91bnR5CAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgABUAFAUNsYWltIHRoZSBwYXlvdXQgZnJvbSBhbiBhd2FyZGVkIGNoaWxkLWJvdW50eSBhZnRlciBwYXlvdXQgZGVsYXkuAOxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbWF5IGJlIGFueSBzaWduZWQgb3JpZ2luLgAFAUNhbGwgd29ya3MgaW5kZXBlbmRlbnQgb2YgcGFyZW50IGJvdW50eSBzdGF0ZSwgTm8gbmVlZCBmb3IgcGFyZW50dGJvdW50eSB0byBiZSBpbiBhY3RpdmUgc3RhdGUuABEBVGhlIEJlbmVmaWNpYXJ5IGlzIHBhaWQgb3V0IHdpdGggYWdyZWVkIGJvdW50eSB2YWx1ZS4gQ3VyYXRvciBmZWUgaXOUcGFpZCAmIGN1cmF0b3IgZGVwb3NpdCBpcyB1bnJlc2VydmVkLgAFAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluICJQZW5kaW5nUGF5b3V0IiBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhl/GNhbGwuIEFuZCBpbnN0YW5jZSBvZiBjaGlsZC1ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGF0ZSBvbmxzdWNjZXNzZnVsIGNhbGwgY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuSGNsb3NlX2NoaWxkX2JvdW50eQgBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGABLEJvdW50eUluZGV4AAZYEQFDYW5jZWwgYSBwcm9wb3NlZCBvciBhY3RpdmUgY2hpbGQtYm91bnR5LiBDaGlsZC1ib3VudHkgYWNjb3VudCBmdW5kcwkBYXJlIHRyYW5zZmVycmVkIHRvIHBhcmVudCBib3VudHkgYWNjb3VudC4gVGhlIGNoaWxkLWJvdW50eSBjdXJhdG9ymGRlcG9zaXQgbWF5IGJlIHVucmVzZXJ2ZWQgaWYgcG9zc2libGUuAAkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgZWl0aGVyIHBhcmVudCBjdXJhdG9yIG9ySGBUOjpSZWplY3RPcmlnaW5gLgDwSWYgdGhlIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBgQWN0aXZlYCwgY3VyYXRvciBkZXBvc2l0IGlzLHVucmVzZXJ2ZWQuAPRJZiB0aGUgc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIGBQZW5kaW5nUGF5b3V0YCwgY2FsbCBmYWlscyAmeHJldHVybnMgYFBlbmRpbmdQYXlvdXRgIGVycm9yLgANAUZvciB0aGUgb3JpZ2luIG90aGVyIHRoYW4gVDo6UmVqZWN0T3JpZ2luLCBwYXJlbnQgYm91bnR5IG11c3QgYmUgaW7wYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0byB3b3JrLiBGb3Igb3JpZ2lukFQ6OlJlamVjdE9yaWdpbiBleGVjdXRpb24gaXMgZm9yY2VkLgABAUluc3RhbmNlIG9mIGNoaWxkLWJvdW50eSBpcyByZW1vdmVkIGZyb20gdGhlIHN0YXRlIG9uIHN1Y2Nlc3NmdWxAY2FsbCBjb21wbGV0aW9uLgC0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkIGJvdW50eS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuBQUMRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBBDYWxsBARUAAEMGGNyZWF0ZQgBKGFzc2V0X2tpbmTJBAFEQm94PFQ6OkFzc2V0S2luZD4AARByYXRlCQUBJEZpeGVkVTEyOAAAEA0BSW5pdGlhbGl6ZSBhIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYdXBkYXRlCAEoYXNzZXRfa2luZMkEAURCb3g8VDo6QXNzZXRLaW5kPgABEHJhdGUJBQEkRml4ZWRVMTI4AAEQBQFVcGRhdGUgdGhlIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYcmVtb3ZlBAEoYXNzZXRfa2luZMkEAURCb3g8VDo6QXNzZXRLaW5kPgACECUBUmVtb3ZlIGFuIGV4aXN0aW5nIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuCQUMNHNwX2FyaXRobWV0aWMsZml4ZWRfcG9pbnQkRml4ZWRVMTI4AAAEAFUBARB1MTI4AAANBQxscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGHBhbGxldBBDYWxsCARUAARJAAEkLGZ1bmRfYm91bnR5EAEoYXNzZXRfa2luZMkEAURCb3g8VDo6QXNzZXRLaW5kPgABFHZhbHVlUQEBKFQ6OkJhbGFuY2UAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBtZXRhZGF0YTwBHFQ6Okhhc2gAAGgpAUZ1bmQgYSBuZXcgYm91bnR5IHdpdGggYSBwcm9wb3NlZCBjdXJhdG9yLCBpbml0aWF0aW5nIHRoZSBwYXltZW50IGZyb20gdGhluGZ1bmRpbmcgc291cmNlIHRvIHRoZSBib3VudHkgYWNjb3VudC9sb2NhdGlvbi4ASCMjIERpc3BhdGNoIE9yaWdpbgAdAU11c3QgYmUgW2BDb25maWc6OlNwZW5kT3JpZ2luYF0gd2l0aCB0aGUgYFN1Y2Nlc3NgIHZhbHVlIGJlaW5nIGF0IGxlYXN0QQF0aGUgYm91bnR5IHZhbHVlIGNvbnZlcnRlZCB0byBuYXRpdmUgYmFsYW5jZSB1c2luZyBbYENvbmZpZzo6QmFsYW5jZUNvbnZlcnRlcmBdLjUBVGhlIGNvbnZlcnRlZCBuYXRpdmUgYW1vdW50IGlzIHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBtYXhpbXVtIHNwZW5kYWJsZSBhbW91bnSQcmV0dXJuZWQgYnkgW2BDb25maWc6OlNwZW5kT3JpZ2luYF0uACgjIyBEZXRhaWxzACEBLSBUaGUgYFNwZW5kT3JpZ2luYCBtdXN0IGhhdmUgc3VmZmljaWVudCBwZXJtaXNzaW9ucyB0byBmdW5kIHRoZSBib3VudHkuWQEtIFRoZSBib3VudHkgYHZhbHVlYCAoaW4gYXNzZXQgYmFsYW5jZSkgaXMgY29udmVydGVkIHRvIG5hdGl2ZSBiYWxhbmNlIGZvciB2YWxpZGF0aW9uLikBLSBJbiBjYXNlIG9mIGEgZnVuZGluZyBmYWlsdXJlLCB0aGUgYm91bnR5IHN0YXR1cyBtdXN0IGJlIHVwZGF0ZWQgd2l0aCB0aGUBASAgYGNoZWNrX3N0YXR1c2AgY2FsbCBiZWZvcmUgcmV0cnlpbmcgd2l0aCBgcmV0cnlfcGF5bWVudGAgY2FsbC4AOCMjIyBQYXJhbWV0ZXJzGQEtIGBhc3NldF9raW5kYDogQW4gaW5kaWNhdG9yIG9mIHRoZSBzcGVjaWZpYyBhc3NldCBjbGFzcyB0byBiZSBmdW5kZWQuzC0gYHZhbHVlYDogVGhlIHRvdGFsIHBheW1lbnQgYW1vdW50IG9mIHRoaXMgYm91bnR5LpwtIGBjdXJhdG9yYDogQWRkcmVzcyBvZiBib3VudHkgY3VyYXRvci4tAS0gYG1ldGFkYXRhYDogVGhlIGhhc2ggb2YgYW4gb24tY2hhaW4gc3RvcmVkIHByZWltYWdlIHdpdGggYm91bnR5IG1ldGFkYXRhLgAkIyMgRXZlbnRzAAUBRW1pdHMgW2BFdmVudDo6Qm91bnR5Q3JlYXRlZGBdIGFuZCBbYEV2ZW50OjpQYWlkYF0gaWYgc3VjY2Vzc2Z1bC5EZnVuZF9jaGlsZF9ib3VudHkQAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARR2YWx1ZVEBAShUOjpCYWxhbmNlAAEgbWV0YWRhdGE8ARxUOjpIYXNoAAEcY3VyYXRvcjkEAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AAFgXQFGdW5kIGEgbmV3IGNoaWxkLWJvdW50eSB3aXRoIGEgcHJvcG9zZWQgY3VyYXRvciwgaW5pdGlhdGluZyB0aGUgcGF5bWVudCBmcm9tIHRoZSBwYXJlbnSwYm91bnR5IHRvIHRoZSBjaGlsZC1ib3VudHkgYWNjb3VudC9sb2NhdGlvbi4ASCMjIERpc3BhdGNoIE9yaWdpbgCUTXVzdCBiZSBzaWduZWQgYnkgdGhlIHBhcmVudCBjdXJhdG9yLgAoIyMgRGV0YWlscwBFAS0gSWYgYGN1cmF0b3JgIGlzIG5vdCBwcm92aWRlZCwgdGhlIGNoaWxkLWJvdW50eSB3aWxsIGRlZmF1bHQgdG8gdXNpbmcgdGhlIHBhcmVudDUBICBjdXJhdG9yLCBhbGxvd2luZyB0aGUgcGFyZW50IGN1cmF0b3IgdG8gaW1tZWRpYXRlbHkgY2FsbCBgY2hlY2tfc3RhdHVzYCBhbmSwICBgYXdhcmRfYm91bnR5YCB0byBwYXlvdXQgdGhlIGNoaWxkLWJvdW50eS5FAS0gSW4gY2FzZSBvZiBhIGZ1bmRpbmcgZmFpbHVyZSwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZQEBICBgY2hlY2tfc3RhdHVzYCBjYWxsIGJlZm9yZSByZXRyeWluZyB3aXRoIGByZXRyeV9wYXltZW50YCBjYWxsLgA4IyMjIFBhcmFtZXRlcnNNAS0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5IGZvciB3aGljaCBjaGlsZC1ib3VudHkgaXMgYmVpbmcgYWRkZWQuzC0gYHZhbHVlYDogVGhlIHBheW1lbnQgYW1vdW50IG9mIHRoaXMgY2hpbGQtYm91bnR5LkUBLSBgbWV0YWRhdGFgOiBUaGUgaGFzaCBvZiBhbiBvbi1jaGFpbiBzdG9yZWQgcHJlaW1hZ2Ugd2l0aCBjaGlsZC1ib3VudHkgbWV0YWRhdGEutC0gYGN1cmF0b3JgOiBBZGRyZXNzIG9mIGNoaWxkLWJvdW50eSBjdXJhdG9yLgAkIyMgRXZlbnRzABkBRW1pdHMgW2BFdmVudDo6Q2hpbGRCb3VudHlDcmVhdGVkYF0gYW5kIFtgRXZlbnQ6OlBhaWRgXSBpZiBzdWNjZXNzZnVsLjxwcm9wb3NlX2N1cmF0b3IMAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTgAUxPcHRpb248Qm91bnR5SW5kZXg+AAEcY3VyYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAJUMQFQcm9wb3NlIGEgbmV3IGN1cmF0b3IgZm9yIGEgY2hpbGQtL2JvdW50eSBhZnRlciB0aGUgcHJldmlvdXMgd2FzIHVuYXNzaWduZWQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AQQFNdXN0IGJlIHNpZ25lZCBieSBgVDo6U3BlbmRPcmlnaW5gIGZvciBhIGJvdW50eSwgb3IgYnkgdGhlIHBhcmVudCBib3VudHkgY3VyYXRvckxmb3IgYSBjaGlsZC1ib3VudHkuACgjIyBEZXRhaWxzAPQtIFRoZSBjaGlsZC0vYm91bnR5IG11c3QgYmUgaW4gdGhlIGBDdXJhdG9yVW5hc3NpZ25lZGAgc3RhdGUuRQEtIEZvciBhIGJvdW50eSwgdGhlIGBTcGVuZE9yaWdpbmAgbXVzdCBoYXZlIHN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gcHJvcG9zZSB0aGUoICBjdXJhdG9yLgA4IyMjIFBhcmFtZXRlcnOYLSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LswtIGBjdXJhdG9yYDogQWNjb3VudCB0byBiZSBwcm9wb3NlZCBhcyB0aGUgY3VyYXRvci4AJCMjIEV2ZW50cwC8RW1pdHMgW2BFdmVudDo6Q3VyYXRvclByb3Bvc2VkYF0gaWYgc3VjY2Vzc2Z1bC44YWNjZXB0X2N1cmF0b3IIAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTgAUxPcHRpb248Qm91bnR5SW5kZXg+AANMsEFjY2VwdCB0aGUgY3VyYXRvciByb2xlIGZvciBhIGNoaWxkLS9ib3VudHkuAEgjIyBEaXNwYXRjaCBPcmlnaW4AnE11c3QgYmUgc2lnbmVkIGJ5IHRoZSBwcm9wb3NlZCBjdXJhdG9yLgAoIyMgRGV0YWlscwDILSBUaGUgY2hpbGQtL2JvdW50eSBtdXN0IGJlIGluIHRoZSBgRnVuZGVkYCBzdGF0ZS7wLSBUaGUgY3VyYXRvciBtdXN0IGFjY2VwdCB0aGUgcm9sZSBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uSQEtIEEgZGVwb3NpdCB3aWxsIGJlIHJlc2VydmVkIGZyb20gdGhlIGN1cmF0b3IgYW5kIHJlZnVuZGVkIHVwb24gc3VjY2Vzc2Z1bCBwYXlvdXQuADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzAMhFbWl0cyBbYEV2ZW50OjpCb3VudHlCZWNhbWVBY3RpdmVgXSBpZiBzdWNjZXNzZnVsLkB1bmFzc2lnbl9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lk4AFMT3B0aW9uPEJvdW50eUluZGV4PgAEZJhVbmFzc2lnbiBjdXJhdG9yIGZyb20gYSBjaGlsZC0vYm91bnR5LgBIIyMgRGlzcGF0Y2ggT3JpZ2luAFEBVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIG9yIHRoZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IuACgjIyBEZXRhaWxzAGEBLSBJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAsIG9yIGJ5IHRoZSBwYXJlbnQgY3VyYXRvciBpbiB0aGUgY2FzZVkBICBvZiBhIGNoaWxkIGJvdW50eSwgd2UgYXNzdW1lIHRoYXQgdGhlIGN1cmF0b3IgaXMgbWFsaWNpb3VzIG9yIGluYWN0aXZlLiBBcyBhIHJlc3VsdCyoICB3ZSB3aWxsIHNsYXNoIHRoZSBjdXJhdG9yIHdoZW4gcG9zc2libGUuXQEtIElmIHRoZSBvcmlnaW4gaXMgdGhlIGNoaWxkLS9ib3VudHkgY3VyYXRvciwgd2UgdGFrZSB0aGlzIGFzIGEgc2lnbiB0aGV5IGFyZSB1bmFibGUgdG9RASAgZG8gdGhlaXIgam9iIGFuZCB0aGV5IHdpbGxpbmdseSBnaXZlIHVwLiBXZSBjb3VsZCBzbGFzaCB0aGVtLCBidXQgZm9yIG5vdyB3ZSBhbGxvd1kBICB0aGVtIHRvIHJlY292ZXIgdGhlaXIgZGVwb3NpdCBhbmQgZXhpdCB3aXRob3V0IGlzc3VlLiAoV2UgbWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMgaWZAICBpdCBpcyBhYnVzZWQpLj0BLSBJZiBzdWNjZXNzZnVsLCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgdXBkYXRlZCB0byBgQ3VyYXRvclVuYXNzaWduZWRgLiBUb0UBICByZWFjdGl2YXRlIHRoZSBib3VudHksIGEgbmV3IGN1cmF0b3IgbXVzdCBiZSBwcm9wb3NlZCBhbmQgbXVzdCBhY2NlcHQgdGhlIHJvbGUuADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzAMRFbWl0cyBbYEV2ZW50OjpDdXJhdG9yVW5hc3NpZ25lZGBdIGlmIHN1Y2Nlc3NmdWwuMGF3YXJkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOABTE9wdGlvbjxCb3VudHlJbmRleD4AASxiZW5lZmljaWFyec0EAWRCZW5lZmljaWFyeUxvb2t1cE9mPFQsIEk+AAVg7EF3YXJkcyB0aGUgY2hpbGQtL2JvdW50eSB0byBhIGJlbmVmaWNpYXJ5IGFjY291bnQvbG9jYXRpb24sHQFpbml0aWF0aW5nIHRoZSBwYXlvdXQgcGF5bWVudHMgdG8gYm90aCB0aGUgYmVuZWZpY2lhcnkgYW5kIHRoZSBjdXJhdG9yLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAFEBVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIG9yIHRoZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IuACgjIyBEZXRhaWxzAMgtIFRoZSBjaGlsZC0vYm91bnR5IG11c3QgYmUgaW4gdGhlIGBBY3RpdmVgIHN0YXRlLj0BLSBpZiBhd2FyZGluZyBhIHBhcmVudCBib3VudHkgaXQgbXVzdCBub3QgaGF2ZSBhY3RpdmUgb3IgZnVuZGVkIGNoaWxkIGJvdW50aWVzLlkBLSBJbml0aWF0ZXMgcGF5b3V0IHBheW1lbnQgZnJvbSB0aGUgY2hpbGQtL2JvdW50eSB0byB0aGUgYmVuZWZpY2lhcnkgYWNjb3VudC9sb2NhdGlvbi4lAS0gSWYgc3VjY2Vzc2Z1bCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgdXBkYXRlZCB0byBgUGF5b3V0QXR0ZW1wdGVkYC4xAS0gSW4gY2FzZSBvZiBhIHBheW91dCBmYWlsdXJlLCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgbXVzdCBiZSB1cGRhdGVkIHdpdGj4YGNoZWNrX3N0YXR1c2AgY2FsbCBiZWZvcmUgcmV0cnlpbmcgd2l0aCBgcmV0cnlfcGF5bWVudGAgY2FsbC4AOCMjIyBQYXJhbWV0ZXJztC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZC1ib3VudHkuCQEtIGBiZW5lZmljaWFyeWA6IEFjY291bnQvbG9jYXRpb24gdG8gYmUgYXdhcmRlZCB0aGUgY2hpbGQtL2JvdW50eS4AJCMjIEV2ZW50cwAFAUVtaXRzIFtgRXZlbnQ6OkJvdW50eUF3YXJkZWRgXSBhbmQgW2BFdmVudDo6UGFpZGBdIGlmIHN1Y2Nlc3NmdWwuMGNsb3NlX2JvdW50eQgBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOABTE9wdGlvbjxCb3VudHlJbmRleD4ABlxhAUNhbmNlbCBhbiBhY3RpdmUgY2hpbGQtL2JvdW50eS4gQSBwYXltZW50IHRvIHNlbmQgYWxsIHRoZSBmdW5kcyB0byB0aGUgZnVuZGluZyBzb3VyY2UgaXMwaW5pdGlhbGl6ZWQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AUQFUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgb3IgdGhlIHBhcmVudCBib3VudHkgY3VyYXRvci4AKCMjIERldGFpbHMAPQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IGlzIGluIHRoZSBgRnVuZGVkYCBzdGF0ZSwgYSByZWZ1bmQgcGF5bWVudCBpcyBpbml0aWF0ZWQuWQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IGlzIGluIHRoZSBgQWN0aXZlYCBzdGF0ZSwgYSByZWZ1bmQgcGF5bWVudCBpcyBpbml0aWF0ZWQgYW5kIHRoZREBICBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyB1cGRhdGVkIHdpdGggdGhlIGN1cmF0b3IgYWNjb3VudC9sb2NhdGlvbi5BAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgaXMgaW4gdGhlIGZ1bmRpbmcgb3IgcGF5b3V0IHBoYXNlLCBpdCBjYW5ub3QgYmUgY2FuY2VsZWQuQQEtIEluIGNhc2Ugb2YgYSByZWZ1bmQgZmFpbHVyZSwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZfhgY2hlY2tfc3RhdHVzYCBjYWxsIGJlZm9yZSByZXRyeWluZyB3aXRoIGByZXRyeV9wYXltZW50YCBjYWxsLgA4IyMjIFBhcmFtZXRlcnO0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkLWJvdW50eS4AJCMjIEV2ZW50cwAJAUVtaXRzIFtgRXZlbnQ6OkJvdW50eUNhbmNlbGVkYF0gYW5kIFtgRXZlbnQ6OlBhaWRgXSBpZiBzdWNjZXNzZnVsLjBjaGVja19zdGF0dXMIAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTgAUxPcHRpb248Qm91bnR5SW5kZXg+AAdk3ENoZWNrIGFuZCB1cGRhdGUgdGhlIHBheW1lbnQgc3RhdHVzIG9mIGEgY2hpbGQtL2JvdW50eS4ASCMjIERpc3BhdGNoIE9yaWdpbgA8TXVzdCBiZSBzaWduZWQuACgjIyBEZXRhaWxzAFUBLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYEZ1bmRpbmdBdHRlbXB0ZWRgLCBpdCBjaGVja3MgaWYgdGhlIGZ1bmRpbmcgcGF5bWVudA0BICBoYXMgc3VjY2VlZGVkLiBJZiBzdWNjZXNzZnVsLCB0aGUgYm91bnR5IHN0YXR1cyBiZWNvbWVzIGBGdW5kZWRgLl0BLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYFJlZnVuZEF0dGVtcHRlZGAsIGl0IGNoZWNrcyBpZiB0aGUgcmVmdW5kIHBheW1lbnQgaGFzGQEgIHN1Y2NlZWRlZC4gSWYgc3VjY2Vzc2Z1bCwgdGhlIGNoaWxkLS9ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHN0b3JhZ2UuXQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyBgUGF5b3V0QXR0ZW1wdGVkYCwgaXQgY2hlY2tzIGlmIHRoZSBwYXlvdXQgcGF5bWVudCBoYXMZASAgc3VjY2VlZGVkLiBJZiBzdWNjZXNzZnVsLCB0aGUgY2hpbGQtL2JvdW50eSBpcyByZW1vdmVkIGZyb20gc3RvcmFnZS4AOCMjIyBQYXJhbWV0ZXJztC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZC1ib3VudHkuACQjIyBFdmVudHMAXQFFbWl0cyBbYEV2ZW50OjpCb3VudHlCZWNhbWVBY3RpdmVgXSBpZiB0aGUgY2hpbGQvYm91bnR5IHN0YXR1cyB0cmFuc2l0aW9ucyB0byBgQWN0aXZlYC4lAUVtaXRzIFtgRXZlbnQ6OkJvdW50eVJlZnVuZFByb2Nlc3NlZGBdIGlmIHRoZSByZWZ1bmQgcGF5bWVudCBoYXMgc3VjY2VlZC4lAUVtaXRzIFtgRXZlbnQ6OkJvdW50eVBheW91dFByb2Nlc3NlZGBdIGlmIHRoZSBwYXlvdXQgcGF5bWVudCBoYXMgc3VjY2VlZC5VAUVtaXRzIFtgRXZlbnQ6OlBheW1lbnRGYWlsZWRgXSBpZiB0aGUgZnVuZGluZywgcmVmdW5kIG91ciBwYXltZW50IHBheW1lbnQgaGFzIGZhaWxlZC40cmV0cnlfcGF5bWVudAgBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOABTE9wdGlvbjxCb3VudHlJbmRleD4ACFi0UmV0cnkgdGhlIGZ1bmRpbmcsIHJlZnVuZCBvciBwYXlvdXQgcGF5bWVudHMuAEgjIyBEaXNwYXRjaCBPcmlnaW4APE11c3QgYmUgc2lnbmVkLgAoIyMgRGV0YWlscwBhAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBGdW5kaW5nQXR0ZW1wdGVkYCwgaXQgcmV0cmllcyB0aGUgZnVuZGluZyBwYXltZW50IGZyb23QICBmdW5kaW5nIHNvdXJjZSB0aGUgY2hpbGQtL2JvdW50eSBhY2NvdW50L2xvY2F0aW9uLlkBLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYFJlZnVuZEF0dGVtcHRlZGAsIGl0IHJldHJpZXMgdGhlIHJlZnVuZCBwYXltZW50IGZyb23sICB0aGUgY2hpbGQtL2JvdW50eSBhY2NvdW50L2xvY2F0aW9uIHRvIHRoZSBmdW5kaW5nIHNvdXJjZS5ZAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBQYXlvdXRBdHRlbXB0ZWRgLCBpdCByZXRyaWVzIHRoZSBwYXlvdXQgcGF5bWVudCBmcm9tJQEgIHRoZSBjaGlsZC0vYm91bnR5IGFjY291bnQvbG9jYXRpb24gdG8gdGhlIGJlbmVmaWNpYXJ5IGFjY291bnQvbG9jYXRpb24uADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzADUBRW1pdHMgW2BFdmVudDo6UGFpZGBdIGlmIHRoZSBmdW5kaW5nLCByZWZ1bmQgb3IgcGF5b3V0IHBheW1lbnQgaGFzIGluaXRpYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuEQUMKHBhbGxldF9kYXAYcGFsbGV0EENhbGwEBFQAAQRUc2V0X2J1ZGdldF9hbGxvY2F0aW9uBAE8bmV3X2FsbG9jYXRpb25zFQUBTEJ1ZGdldEFsbG9jYXRpb25NYXAAABB4U2V0IHRoZSBidWRnZXQgYWxsb2NhdGlvbiBtYXAuADkBRWFjaCBrZXkgbXVzdCBtYXRjaCBhIHJlZ2lzdGVyZWQgYEJ1ZGdldFJlY2lwaWVudGAuIFRoZSBzdW0gb2YgYWxsIHBlcmNlbnRhZ2VzJQFtdXN0IGJlIGV4YWN0bHkgMTAwJS4gUmVjaXBpZW50cyBub3QgaW5jbHVkZWQgaW4gdGhlIG1hcCByZWNlaXZlIG5vdGhpbmcuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLhUFDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfbWFwPEJvdW5kZWRCVHJlZU1hcAwESwHBAwRWARkFBFMAAAQAHQUBOEJUcmVlTWFwPEssIFY+AAAZBQw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcmJpbGwAAAQAOAEMdTMyAAAdBQQgQlRyZWVNYXAIBEsBwQMEVgEZBQAEACEFAAAAIQUAAAIlBQAlBQAABAjBAxkFACkFDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0EENhbGwEBFQAARhYY29udHJvbF9hdXRvX21pZ3JhdGlvbgQBMG1heWJlX2NvbmZpZy0FAVxPcHRpb248TWlncmF0aW9uTGltaXRzPgAADIBDb250cm9sIHRoZSBhdXRvbWF0aWMgbWlncmF0aW9uLgANAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgW2BDb25maWc6OkNvbnRyb2xPcmlnaW5gXS5AY29udGludWVfbWlncmF0ZQwBGGxpbWl0czEFATxNaWdyYXRpb25MaW1pdHMAATxyZWFsX3NpemVfdXBwZXI4AQx1MzIAATB3aXRuZXNzX3Rhc2s1BQFATWlncmF0aW9uVGFzazxUPgABVLhDb250aW51ZSB0aGUgbWlncmF0aW9uIGZvciB0aGUgZ2l2ZW4gYGxpbWl0c2AuAOxUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBjYW4gYmUgYW55IHNpZ25lZCBhY2NvdW50LgBdAVRoaXMgdHJhbnNhY3Rpb24gaGFzIE5PIE1PTkVUQVJZIElOQ0VOVElWRVMuIGNhbGxpbmcgaXQgd2lsbCBub3QgcmV3YXJkIGFueW9uZS4gQWxiZWl0LOxVcG9uIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uLCB0aGUgdHJhbnNhY3Rpb24gZmVlIGlzIHJldHVybmVkLgBBAVRoZSAocG90ZW50aWFsbHkgb3Zlci1lc3RpbWF0ZWQpIG9mIHRoZSBieXRlIGxlbmd0aCBvZiBhbGwgdGhlIGRhdGEgcmVhZCBtdXN0IGJlWQFwcm92aWRlZCBmb3IgdXAtZnJvbnQgZmVlLXBheW1lbnQgYW5kIHdlaWdoaW5nLiBJbiBlc3NlbmNlLCB0aGUgY2FsbGVyIGlzIGd1YXJhbnRlZWluZ0kBdGhhdCBleGVjdXRpbmcgdGhlIGN1cnJlbnQgYE1pZ3JhdGlvblRhc2tgIHdpdGggdGhlIGdpdmVuIGBsaW1pdHNgIHdpbGwgbm90IGV4Y2VlZJRgcmVhbF9zaXplX3VwcGVyYCBieXRlcyBvZiByZWFkIGRhdGEuAEUBVGhlIGB3aXRuZXNzX3Rhc2tgIGlzIG1lcmVseSBhIGhlbHBlciB0byBwcmV2ZW50IHRoZSBjYWxsZXIgZnJvbSBiZWluZyBzbGFzaGVkIG9yXQFnZW5lcmFsbHkgdHJpZ2dlciBhIG1pZ3JhdGlvbiB0aGF0IHRoZXkgZG8gbm90IGludGVuZC4gVGhpcyBwYXJhbWV0ZXIgaXMganVzdCBhIG1lc3NhZ2U9AWZyb20gY2FsbGVyLCBzYXlpbmcgdGhhdCB0aGV5IGJlbGlldmVkIGB3aXRuZXNzX3Rhc2tgIHdhcyB0aGUgbGFzdCBzdGF0ZSBvZiB0aGVZAW1pZ3JhdGlvbiwgYW5kIHRoZXkgb25seSB3aXNoIGZvciB0aGVpciB0cmFuc2FjdGlvbiB0byBkbyBhbnl0aGluZywgaWYgdGhpcyBhc3N1bXB0aW9uEQFob2xkcy4gSW4gY2FzZSBgd2l0bmVzc190YXNrYCBkb2VzIG5vdCBtYXRjaCwgdGhlIHRyYW5zYWN0aW9uIGZhaWxzLgA5AUJhc2VkIG9uIHRoZSBkb2N1bWVudGF0aW9uIG9mIFtgTWlncmF0aW9uVGFzazo6bWlncmF0ZV91bnRpbF9leGhhdXN0aW9uYF0sIHRoZU0BcmVjb21tZW5kZWQgd2F5IG9mIGRvaW5nIHRoaXMgaXMgdG8gcGFzcyBhIGBsaW1pdGAgdGhhdCBvbmx5IGJvdW5kcyBgY291bnRgLCBhcyB0aGWcYHNpemVgIGxpbWl0IGNhbiBhbHdheXMgYmUgb3ZlcndyaXR0ZW4uSG1pZ3JhdGVfY3VzdG9tX3RvcAgBEGtleXM0ATBWZWM8VmVjPHU4Pj4AATB3aXRuZXNzX3NpemU4AQx1MzIAAhAJAU1pZ3JhdGUgdGhlIGxpc3Qgb2YgdG9wIGtleXMgYnkgaXRlcmF0aW5nIGVhY2ggb2YgdGhlbSBvbmUgYnkgb25lLgBVAVRoaXMgZG9lcyBub3QgYWZmZWN0IHRoZSBnbG9iYWwgbWlncmF0aW9uIHByb2Nlc3MgdHJhY2tlciAoW2BNaWdyYXRpb25Qcm9jZXNzYF0pLCBhbmT8c2hvdWxkIG9ubHkgYmUgdXNlZCBpbiBjYXNlIGFueSBrZXlzIGFyZSBsZWZ0b3ZlciBkdWUgdG8gYSBidWcuUG1pZ3JhdGVfY3VzdG9tX2NoaWxkDAEQcm9vdBgBHFZlYzx1OD4AAShjaGlsZF9rZXlzNAEwVmVjPFZlYzx1OD4+AAEodG90YWxfc2l6ZTgBDHUzMgADGBEBTWlncmF0ZSB0aGUgbGlzdCBvZiBjaGlsZCBrZXlzIGJ5IGl0ZXJhdGluZyBlYWNoIG9mIHRoZW0gb25lIGJ5IG9uZS4ADQFBbGwgb2YgdGhlIGdpdmVuIGNoaWxkIGtleXMgbXVzdCBiZSBwcmVzZW50IHVuZGVyIG9uZSBgY2hpbGRfcm9vdGAuAFUBVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGdsb2JhbCBtaWdyYXRpb24gcHJvY2VzcyB0cmFja2VyIChbYE1pZ3JhdGlvblByb2Nlc3NgXSksIGFuZPxzaG91bGQgb25seSBiZSB1c2VkIGluIGNhc2UgYW55IGtleXMgYXJlIGxlZnRvdmVyIGR1ZSB0byBhIGJ1Zy5Uc2V0X3NpZ25lZF9tYXhfbGltaXRzBAEYbGltaXRzMQUBPE1pZ3JhdGlvbkxpbWl0cwAEBLhTZXQgdGhlIG1heGltdW0gbGltaXQgb2YgdGhlIHNpZ25lZCBtaWdyYXRpb24uSGZvcmNlX3NldF9wcm9ncmVzcwgBMHByb2dyZXNzX3RvcDkFATRQcm9ncmVzc09mPFQ+AAE4cHJvZ3Jlc3NfY2hpbGQ5BQE0UHJvZ3Jlc3NPZjxUPgAFJMhGb3JjZWZ1bGx5IHNldCB0aGUgcHJvZ3Jlc3MgdGhlIHJ1bm5pbmcgbWlncmF0aW9uLgBdAVRoaXMgaXMgb25seSB1c2VmdWwgaW4gb25lIGNhc2U6IHRoZSBuZXh0IGtleSB0byBtaWdyYXRlIGlzIHRvbyBiaWcgdG8gYmUgbWlncmF0ZWQgd2l0aFUBYSBzaWduZWQgYWNjb3VudCwgaW4gYSBwYXJhY2hhaW4gY29udGV4dCwgYW5kIHdlIHNpbXBseSB3YW50IHRvIHNraXAgaXQuIEEgcmVhc29uYWJsZWEBZXhhbXBsZSBvZiB0aGlzIHdvdWxkIGJlIGA6Y29kZTpgLCB3aGljaCBpcyBib3RoIHZlcnkgZXhwZW5zaXZlIHRvIG1pZ3JhdGUsIGFuZCBjb21tb25seaR1c2VkLCBzbyBwcm9iYWJseSBpdCBpcyBhbHJlYWR5IG1pZ3JhdGVkLgBdAUluIGNhc2UgeW91IG1lc3MgdGhpbmdzIHVwLCB5b3UgY2FuIGFsc28sIGluIHByaW5jaXBsZSwgdXNlIHRoaXMgdG8gcmVzZXQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4tBQQYT3B0aW9uBARUATEFAQgQTm9uZQAAABBTb21lBAAxBQAAAQAAMQUMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQ8TWlncmF0aW9uTGltaXRzAAAIARBzaXplOAEMdTMyAAEQaXRlbTgBDHUzMgAANQUMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQ0TWlncmF0aW9uVGFzawQEVAAAFAEwcHJvZ3Jlc3NfdG9wOQUBNFByb2dyZXNzT2Y8VD4AAThwcm9ncmVzc19jaGlsZDkFATRQcm9ncmVzc09mPFQ+AAEQc2l6ZTgBDHUzMgABJHRvcF9pdGVtczgBDHUzMgABLGNoaWxkX2l0ZW1zOAEMdTMyAAA5BQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldCBQcm9ncmVzcwQkTWF4S2V5TGVuAAEMHFRvU3RhcnQAAAAcTGFzdEtleQQAPQUBZEJvdW5kZWRWZWM8dTgsIE1heEtleUxlbj4AAQAgQ29tcGxldGUAAgAAPQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABBBQxccGFsbGV0X25vbWluYXRpb25fcG9vbHMYcGFsbGV0EENhbGwEBFQAAWgQam9pbggBGGFtb3VudFEBATBCYWxhbmNlT2Y8VD4AARxwb29sX2lkOAEYUG9vbElkAABARQFTdGFrZSBmdW5kcyB3aXRoIGEgcG9vbC4gVGhlIGFtb3VudCB0byBib25kIGlzIGRlbGVnYXRlZCAob3IgdHJhbnNmZXJyZWQgYmFzZWQgb25NAVtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGVgXSkgZnJvbSB0aGUgbWVtYmVyIHRvIHRoZSBwb29sIGFjY291bnQgYW5kIGltbWVkaWF0ZWx5aGluY3JlYXNlcyB0aGUgcG9vbCdzIGJvbmQuACkBVGhlIG1ldGhvZCBvZiB0cmFuc2ZlcnJpbmcgdGhlIGFtb3VudCB0byB0aGUgcG9vbCBhY2NvdW50IGlzIGRldGVybWluZWQgYnkBAVtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGVgXS4gSWYgdGhlIHBvb2wgaXMgY29uZmlndXJlZCB0byB1c2UxAVtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OkRlbGVnYXRlYF0sIHRoZSBmdW5kcyByZW1haW4gaW4gdGhlIGFjY291bnQgb2YxAXRoZSBgb3JpZ2luYCwgd2hpbGUgdGhlIHBvb2wgZ2FpbnMgdGhlIHJpZ2h0IHRvIHVzZSB0aGVzZSBmdW5kcyBmb3Igc3Rha2luZy4AGCMgTm90ZQDMKiBBbiBhY2NvdW50IGNhbiBvbmx5IGJlIGEgbWVtYmVyIG9mIGEgc2luZ2xlIHBvb2wu2CogQW4gYWNjb3VudCBjYW5ub3Qgam9pbiB0aGUgc2FtZSBwb29sIG11bHRpcGxlIHRpbWVzLkEBKiBUaGlzIGNhbGwgd2lsbCAqbm90KiBkdXN0IHRoZSBtZW1iZXIgYWNjb3VudCwgc28gdGhlIG1lbWJlciBtdXN0IGhhdmUgYXQgbGVhc3TIICBgZXhpc3RlbnRpYWwgZGVwb3NpdCArIGFtb3VudGAgaW4gdGhlaXIgYWNjb3VudC7QKiBPbmx5IGEgcG9vbCB3aXRoIFtgUG9vbFN0YXRlOjpPcGVuYF0gY2FuIGJlIGpvaW5lZChib25kX2V4dHJhBAEUZXh0cmFFBQFcQm9uZEV4dHJhPEJhbGFuY2VPZjxUPj4AARxFAUJvbmQgYGV4dHJhYCBtb3JlIGZ1bmRzIGZyb20gYG9yaWdpbmAgaW50byB0aGUgcG9vbCB0byB3aGljaCB0aGV5IGFscmVhZHkgYmVsb25nLgBJAUFkZGl0aW9uYWwgZnVuZHMgY2FuIGNvbWUgZnJvbSBlaXRoZXIgdGhlIGZyZWUgYmFsYW5jZSBvZiB0aGUgYWNjb3VudCwgb2YgZnJvbSB0aGWcYWNjdW11bGF0ZWQgcmV3YXJkcywgc2VlIFtgQm9uZEV4dHJhYF0uAD0BQm9uZGluZyBleHRyYSBmdW5kcyBpbXBsaWVzIGFuIGF1dG9tYXRpYyBwYXlvdXQgb2YgYWxsIHBlbmRpbmcgcmV3YXJkcyBhcyB3ZWxsLgkBU2VlIGBib25kX2V4dHJhX290aGVyYCB0byBib25kIHBlbmRpbmcgcmV3YXJkcyBvZiBgb3RoZXJgIG1lbWJlcnMuMGNsYWltX3BheW91dAACIFUBQSBib25kZWQgbWVtYmVyIGNhbiB1c2UgdGhpcyB0byBjbGFpbSB0aGVpciBwYXlvdXQgYmFzZWQgb24gdGhlIHJld2FyZHMgdGhhdCB0aGUgcG9vbGEBaGFzIGFjY3VtdWxhdGVkIHNpbmNlIHRoZWlyIGxhc3QgY2xhaW1lZCBwYXlvdXQgKE9SIHNpbmNlIGpvaW5pbmcgaWYgdGhpcyBpcyB0aGVpciBmaXJzdD0BdGltZSBjbGFpbWluZyByZXdhcmRzKS4gVGhlIHBheW91dCB3aWxsIGJlIHRyYW5zZmVycmVkIHRvIHRoZSBtZW1iZXIncyBhY2NvdW50LgBJAVRoZSBtZW1iZXIgd2lsbCBlYXJuIHJld2FyZHMgcHJvIHJhdGEgYmFzZWQgb24gdGhlIG1lbWJlcnMgc3Rha2UgdnMgdGhlIHN1bSBvZiB0aGXQbWVtYmVycyBpbiB0aGUgcG9vbHMgc3Rha2UuIFJld2FyZHMgZG8gbm90ICJleHBpcmUiLgBBAVNlZSBgY2xhaW1fcGF5b3V0X290aGVyYCB0byBjbGFpbSByZXdhcmRzIG9uIGJlaGFsZiBvZiBzb21lIGBvdGhlcmAgcG9vbCBtZW1iZXIuGHVuYm9uZAgBOG1lbWJlcl9hY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUB1bmJvbmRpbmdfcG9pbnRzUQEBMEJhbGFuY2VPZjxUPgADfEUBVW5ib25kIHVwIHRvIGB1bmJvbmRpbmdfcG9pbnRzYCBvZiB0aGUgYG1lbWJlcl9hY2NvdW50YCdzIGZ1bmRzIGZyb20gdGhlIHBvb2wuIEl0RQFpbXBsaWNpdGx5IGNvbGxlY3RzIHRoZSByZXdhcmRzIG9uZSBsYXN0IHRpbWUsIHNpbmNlIG5vdCBkb2luZyBzbyB3b3VsZCBtZWFuIHNvbWVscmV3YXJkcyB3b3VsZCBiZSBmb3JmZWl0ZWQuAE0BVW5kZXIgY2VydGFpbiBjb25kaXRpb25zLCB0aGlzIGNhbGwgY2FuIGJlIGRpc3BhdGNoZWQgcGVybWlzc2lvbmxlc3NseSAoaS5lLiBieSBhbnkkYWNjb3VudCkuAKwjIENvbmRpdGlvbnMgZm9yIGEgcGVybWlzc2lvbmxlc3MgZGlzcGF0Y2guAF0BKiBUaGUgcG9vbCBpcyBibG9ja2VkIGFuZCB0aGUgY2FsbGVyIGlzIGVpdGhlciB0aGUgcm9vdCBvciBib3VuY2VyLiBUaGlzIGlzIHJlZmVyZWVkIHRvMCAgYXMgYSBraWNrLvQqIFRoZSBwb29sIGlzIGRlc3Ryb3lpbmcgYW5kIHRoZSBtZW1iZXIgaXMgbm90IHRoZSBkZXBvc2l0b3IuVQEqIFRoZSBwb29sIGlzIGRlc3Ryb3lpbmcsIHRoZSBtZW1iZXIgaXMgdGhlIGRlcG9zaXRvciBhbmQgbm8gb3RoZXIgbWVtYmVycyBhcmUgaW4gdGhlHCAgcG9vbC4AEQEjIyBDb25kaXRpb25zIGZvciBwZXJtaXNzaW9uZWQgZGlzcGF0Y2ggKGkuZS4gdGhlIGNhbGxlciBpcyBhbHNvIHRoZUhgbWVtYmVyX2FjY291bnRgKToAiCogVGhlIGNhbGxlciBpcyBub3QgdGhlIGRlcG9zaXRvci5VASogVGhlIGNhbGxlciBpcyB0aGUgZGVwb3NpdG9yLCB0aGUgcG9vbCBpcyBkZXN0cm95aW5nIGFuZCBubyBvdGhlciBtZW1iZXJzIGFyZSBpbiB0aGUcICBwb29sLgAYIyBOb3RlAB0BSWYgdGhlcmUgYXJlIHRvbyBtYW55IHVubG9ja2luZyBjaHVua3MgdG8gdW5ib25kIHdpdGggdGhlIHBvb2wgYWNjb3VudCxRAVtgQ2FsbDo6cG9vbF93aXRoZHJhd191bmJvbmRlZGBdIGNhbiBiZSBjYWxsZWQgdG8gdHJ5IGFuZCBtaW5pbWl6ZSB1bmxvY2tpbmcgY2h1bmtzLlkBVGhlIFtgU3Rha2luZ0ludGVyZmFjZTo6dW5ib25kYF0gd2lsbCBpbXBsaWNpdGx5IGNhbGwgW2BDYWxsOjpwb29sX3dpdGhkcmF3X3VuYm9uZGVkYF1VAXRvIHRyeSB0byBmcmVlIGNodW5rcyBpZiBuZWNlc3NhcnkgKGllLiBpZiB1bmJvdW5kIHdhcyBjYWxsZWQgYW5kIG5vIHVubG9ja2luZyBjaHVua3NhAWFyZSBhdmFpbGFibGUpLiBIb3dldmVyLCBpdCBtYXkgbm90IGJlIHBvc3NpYmxlIHRvIHJlbGVhc2UgdGhlIGN1cnJlbnQgdW5sb2NraW5nIGNodW5rcyxdAWluIHdoaWNoIGNhc2UsIHRoZSByZXN1bHQgb2YgdGhpcyBjYWxsIHdpbGwgbGlrZWx5IGJlIHRoZSBgTm9Nb3JlQ2h1bmtzYCBlcnJvciBmcm9tIHRoZTxzdGFraW5nIHN5c3RlbS5YcG9vbF93aXRoZHJhd191bmJvbmRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAAUhudW1fc2xhc2hpbmdfc3BhbnM4AQx1MzIABBhVAUNhbGwgYHdpdGhkcmF3X3VuYm9uZGVkYCBmb3IgdGhlIHBvb2xzIGFjY291bnQuIFRoaXMgY2FsbCBjYW4gYmUgbWFkZSBieSBhbnkgYWNjb3VudC4AQQFUaGlzIGlzIHVzZWZ1bCBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgdW5sb2NraW5nIGNodW5rcyB0byBjYWxsIGB1bmJvbmRgLCBhbmQgc29tZWEBY2FuIGJlIGNsZWFyZWQgYnkgd2l0aGRyYXdpbmcuIEluIHRoZSBjYXNlIHRoZXJlIGFyZSB0b28gbWFueSB1bmxvY2tpbmcgY2h1bmtzLCB0aGUgdXNlclEBd291bGQgcHJvYmFibHkgc2VlIGFuIGVycm9yIGxpa2UgYE5vTW9yZUNodW5rc2AgZW1pdHRlZCBmcm9tIHRoZSBzdGFraW5nIHN5c3RlbSB3aGVuXHRoZXkgYXR0ZW1wdCB0byB1bmJvbmQuRHdpdGhkcmF3X3VuYm9uZGVkCAE4bWVtYmVyX2FjY291bnQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABSG51bV9zbGFzaGluZ19zcGFuczgBDHUzMgAFWFUBV2l0aGRyYXcgdW5ib25kZWQgZnVuZHMgZnJvbSBgbWVtYmVyX2FjY291bnRgLiBJZiBubyBib25kZWQgZnVuZHMgY2FuIGJlIHVuYm9uZGVkLCBhbkhlcnJvciBpcyByZXR1cm5lZC4ATQFVbmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSRhY2NvdW50KS4AqCMgQ29uZGl0aW9ucyBmb3IgYSBwZXJtaXNzaW9ubGVzcyBkaXNwYXRjaAAJASogVGhlIHBvb2wgaXMgaW4gZGVzdHJveSBtb2RlIGFuZCB0aGUgdGFyZ2V0IGlzIG5vdCB0aGUgZGVwb3NpdG9yLjEBKiBUaGUgdGFyZ2V0IGlzIHRoZSBkZXBvc2l0b3IgYW5kIHRoZXkgYXJlIHRoZSBvbmx5IG1lbWJlciBpbiB0aGUgc3ViIHBvb2xzLg0BKiBUaGUgcG9vbCBpcyBibG9ja2VkIGFuZCB0aGUgY2FsbGVyIGlzIGVpdGhlciB0aGUgcm9vdCBvciBib3VuY2VyLgCYIyBDb25kaXRpb25zIGZvciBwZXJtaXNzaW9uZWQgZGlzcGF0Y2gA6CogVGhlIGNhbGxlciBpcyB0aGUgdGFyZ2V0IGFuZCB0aGV5IGFyZSBub3QgdGhlIGRlcG9zaXRvci4AGCMgTm90ZQD0LSBJZiB0aGUgdGFyZ2V0IGlzIHRoZSBkZXBvc2l0b3IsIHRoZSBwb29sIHdpbGwgYmUgZGVzdHJveWVkLmEBLSBJZiB0aGUgcG9vbCBoYXMgYW55IHBlbmRpbmcgc2xhc2gsIHdlIGFsc28gdHJ5IHRvIHNsYXNoIHRoZSBtZW1iZXIgYmVmb3JlIGxldHRpbmcgdGhlbV0Bd2l0aGRyYXcuIFRoaXMgY2FsY3VsYXRpb24gYWRkcyBzb21lIHdlaWdodCBvdmVyaGVhZCBhbmQgaXMgb25seSBkZWZlbnNpdmUuIEluIHJlYWxpdHksVQFwb29sIHNsYXNoZXMgbXVzdCBoYXZlIGJlZW4gYWxyZWFkeSBhcHBsaWVkIHZpYSBwZXJtaXNzaW9ubGVzcyBbYENhbGw6OmFwcGx5X3NsYXNoYF0uGGNyZWF0ZRABGGFtb3VudFEBATBCYWxhbmNlT2Y8VD4AARByb290AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRub21pbmF0b3IAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGJvdW5jZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAGRHRDcmVhdGUgYSBuZXcgZGVsZWdhdGlvbiBwb29sLgAsIyBBcmd1bWVudHMAVQEqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiBmdW5kcyB0byBkZWxlZ2F0ZSB0byB0aGUgcG9vbC4gVGhpcyBhbHNvIGFjdHMgb2YgYSBzb3J0IG9mTQEgIGRlcG9zaXQgc2luY2UgdGhlIHBvb2xzIGNyZWF0b3IgY2Fubm90IGZ1bGx5IHVuYm9uZCBmdW5kcyB1bnRpbCB0aGUgcG9vbCBpcyBiZWluZzAgIGRlc3Ryb3llZC5RASogYGluZGV4YCAtIEEgZGlzYW1iaWd1YXRpb24gaW5kZXggZm9yIGNyZWF0aW5nIHRoZSBhY2NvdW50LiBMaWtlbHkgb25seSB1c2VmdWwgd2hlbsAgIGNyZWF0aW5nIG11bHRpcGxlIHBvb2xzIGluIHRoZSBzYW1lIGV4dHJpbnNpYy7UKiBgcm9vdGAgLSBUaGUgYWNjb3VudCB0byBzZXQgYXMgW2BQb29sUm9sZXM6OnJvb3RgXS4NASogYG5vbWluYXRvcmAgLSBUaGUgYWNjb3VudCB0byBzZXQgYXMgdGhlIFtgUG9vbFJvbGVzOjpub21pbmF0b3JgXS78KiBgYm91bmNlcmAgLSBUaGUgYWNjb3VudCB0byBzZXQgYXMgdGhlIFtgUG9vbFJvbGVzOjpib3VuY2VyYF0uABgjIE5vdGUAYQFJbiBhZGRpdGlvbiB0byBgYW1vdW50YCwgdGhlIGNhbGxlciB3aWxsIHRyYW5zZmVyIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0OyBzbyB0aGUgY2FsbGVyDQFuZWVkcyBhdCBoYXZlIGF0IGxlYXN0IGBhbW91bnQgKyBleGlzdGVudGlhbF9kZXBvc2l0YCB0cmFuc2ZlcmFibGUuTGNyZWF0ZV93aXRoX3Bvb2xfaWQUARhhbW91bnRRAQEwQmFsYW5jZU9mPFQ+AAEQcm9vdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkbm9taW5hdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxib3VuY2VyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxwb29sX2lkOAEYUG9vbElkAAcY7ENyZWF0ZSBhIG5ldyBkZWxlZ2F0aW9uIHBvb2wgd2l0aCBhIHByZXZpb3VzbHkgdXNlZCBwb29sIGlkACwjIEFyZ3VtZW50cwCYc2FtZSBhcyBgY3JlYXRlYCB3aXRoIHRoZSBpbmNsdXNpb24gb2Z4KiBgcG9vbF9pZGAgLSBgQSB2YWxpZCBQb29sSWQuIG5vbWluYXRlCAEccG9vbF9pZDgBGFBvb2xJZAABKHZhbGlkYXRvcnNdAQFEVmVjPFQ6OkFjY291bnRJZD4ACDB8Tm9taW5hdGUgb24gYmVoYWxmIG9mIHRoZSBwb29sLgBFAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgc2lnbmVkIGJ5IHRoZSBwb29sIG5vbWluYXRvciBvciB0aGUgcG9vbChyb290IHJvbGUuAEUBVGhpcyBkaXJlY3RseSBmb3J3YXJkcyB0aGUgY2FsbCB0byBhbiBpbXBsZW1lbnRhdGlvbiBvZiBgU3Rha2luZ0ludGVyZmFjZWAgKGUuZy4sRQFgcGFsbGV0LXN0YWtpbmdgKSB0aHJvdWdoIFtgQ29uZmlnOjpTdGFrZUFkYXB0ZXJgXSwgb24gYmVoYWxmIG9mIHRoZSBib25kZWQgcG9vbC4AGCMgTm90ZQBZAUluIGFkZGl0aW9uIHRvIGEgYHJvb3RgIG9yIGBub21pbmF0b3JgIHJvbGUgb2YgYG9yaWdpbmAsIHRoZSBwb29sJ3MgZGVwb3NpdG9yIG5lZWRzIHRvDQFoYXZlIGF0IGxlYXN0IGBkZXBvc2l0b3JfbWluX2JvbmRgIGluIHRoZSBwb29sIHRvIHN0YXJ0IG5vbWluYXRpbmcuJHNldF9zdGF0ZQgBHHBvb2xfaWQ4ARhQb29sSWQAARRzdGF0ZUkFASRQb29sU3RhdGUACSh0U2V0IGEgbmV3IHN0YXRlIGZvciB0aGUgcG9vbC4AVQFJZiBhIHBvb2wgaXMgYWxyZWFkeSBpbiB0aGUgYERlc3Ryb3lpbmdgIHN0YXRlLCB0aGVuIHVuZGVyIG5vIGNvbmRpdGlvbiBjYW4gaXRzIHN0YXRlNGNoYW5nZSBhZ2Fpbi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgZWl0aGVyOgDcMS4gc2lnbmVkIGJ5IHRoZSBib3VuY2VyLCBvciB0aGUgcm9vdCByb2xlIG9mIHRoZSBwb29sLF0BMi4gaWYgdGhlIHBvb2wgY29uZGl0aW9ucyB0byBiZSBvcGVuIGFyZSBOT1QgbWV0IChhcyBkZXNjcmliZWQgYnkgYG9rX3RvX2JlX29wZW5gKSwgYW5kOQEgICB0aGVuIHRoZSBzdGF0ZSBvZiB0aGUgcG9vbCBjYW4gYmUgcGVybWlzc2lvbmxlc3NseSBjaGFuZ2VkIHRvIGBEZXN0cm95aW5nYC4wc2V0X21ldGFkYXRhCAEccG9vbF9pZDgBGFBvb2xJZAABIG1ldGFkYXRhGAEcVmVjPHU4PgAKEIBTZXQgYSBuZXcgbWV0YWRhdGEgZm9yIHRoZSBwb29sLgBdAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgc2lnbmVkIGJ5IHRoZSBib3VuY2VyLCBvciB0aGUgcm9vdCByb2xlIG9mIHRoZRRwb29sLixzZXRfY29uZmlncxgBNG1pbl9qb2luX2JvbmRNBQFYQ29uZmlnT3A8QmFsYW5jZU9mPFQ+PgABPG1pbl9jcmVhdGVfYm9uZE0FAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAEkbWF4X3Bvb2xzUQUBNENvbmZpZ09wPHUzMj4AASxtYXhfbWVtYmVyc1EFATRDb25maWdPcDx1MzI+AAFQbWF4X21lbWJlcnNfcGVyX3Bvb2xRBQE0Q29uZmlnT3A8dTMyPgABVGdsb2JhbF9tYXhfY29tbWlzc2lvblUFAURDb25maWdPcDxQZXJiaWxsPgALLEEBVXBkYXRlIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgbm9taW5hdGlvbiBwb29scy4gVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmVgW2BDb25maWc6OkFkbWluT3JpZ2luYF0uACwjIEFyZ3VtZW50cwCgKiBgbWluX2pvaW5fYm9uZGAgLSBTZXQgW2BNaW5Kb2luQm9uZGBdLrAqIGBtaW5fY3JlYXRlX2JvbmRgIC0gU2V0IFtgTWluQ3JlYXRlQm9uZGBdLoQqIGBtYXhfcG9vbHNgIC0gU2V0IFtgTWF4UG9vbHNgXS6kKiBgbWF4X21lbWJlcnNgIC0gU2V0IFtgTWF4UG9vbE1lbWJlcnNgXS7kKiBgbWF4X21lbWJlcnNfcGVyX3Bvb2xgIC0gU2V0IFtgTWF4UG9vbE1lbWJlcnNQZXJQb29sYF0u4CogYGdsb2JhbF9tYXhfY29tbWlzc2lvbmAgLSBTZXQgW2BHbG9iYWxNYXhDb21taXNzaW9uYF0uMHVwZGF0ZV9yb2xlcxABHHBvb2xfaWQ4ARhQb29sSWQAASBuZXdfcm9vdFkFAVhDb25maWdPcDxUOjpBY2NvdW50SWQ+AAE0bmV3X25vbWluYXRvclkFAVhDb25maWdPcDxUOjpBY2NvdW50SWQ+AAEsbmV3X2JvdW5jZXJZBQFYQ29uZmlnT3A8VDo6QWNjb3VudElkPgAMHHRVcGRhdGUgdGhlIHJvbGVzIG9mIHRoZSBwb29sLgA9AVRoZSByb290IGlzIHRoZSBvbmx5IGVudGl0eSB0aGF0IGNhbiBjaGFuZ2UgYW55IG9mIHRoZSByb2xlcywgaW5jbHVkaW5nIGl0c2VsZiy4ZXhjbHVkaW5nIHRoZSBkZXBvc2l0b3IsIHdobyBjYW4gbmV2ZXIgY2hhbmdlLgBRAUl0IGVtaXRzIGFuIGV2ZW50LCBub3RpZnlpbmcgVUlzIG9mIHRoZSByb2xlIGNoYW5nZS4gVGhpcyBldmVudCBpcyBxdWl0ZSByZWxldmFudCB0bx0BbW9zdCBwb29sIG1lbWJlcnMgYW5kIHRoZXkgc2hvdWxkIGJlIGluZm9ybWVkIG9mIGNoYW5nZXMgdG8gcG9vbCByb2xlcy4UY2hpbGwEARxwb29sX2lkOAEYUG9vbElkAA1EcENoaWxsIG9uIGJlaGFsZiBvZiB0aGUgcG9vbC4AQQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBjYW4gYmUgc2lnbmVkIGJ5IHRoZSBwb29sIG5vbWluYXRvciBvciB0aGUgcG9vbKByb290IHJvbGUsIHNhbWUgYXMgW2BQYWxsZXQ6Om5vbWluYXRlYF0uAEUBVGhpcyBkaXJlY3RseSBmb3J3YXJkcyB0aGUgY2FsbCB0byBhbiBpbXBsZW1lbnRhdGlvbiBvZiBgU3Rha2luZ0ludGVyZmFjZWAgKGUuZy4sRQFgcGFsbGV0LXN0YWtpbmdgKSB0aHJvdWdoIFtgQ29uZmlnOjpTdGFrZUFkYXB0ZXJgXSwgb24gYmVoYWxmIG9mIHRoZSBib25kZWQgcG9vbC4ATQFVbmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSRhY2NvdW50KS4ArCMgQ29uZGl0aW9ucyBmb3IgYSBwZXJtaXNzaW9ubGVzcyBkaXNwYXRjaDpVASogV2hlbiBwb29sIGRlcG9zaXRvciBoYXMgbGVzcyB0aGFuIGBNaW5Ob21pbmF0b3JCb25kYCBzdGFrZWQsIG90aGVyd2lzZSBwb29sIG1lbWJlcnNcICBhcmUgdW5hYmxlIHRvIHVuYm9uZC4AnCMgQ29uZGl0aW9ucyBmb3IgcGVybWlzc2lvbmVkIGRpc3BhdGNoOrQqIFRoZSBjYWxsZXIgaXMgdGhlIHBvb2wncyBub21pbmF0b3Igb3Igcm9vdC5AYm9uZF9leHRyYV9vdGhlcggBGG1lbWJlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUZXh0cmFFBQFcQm9uZEV4dHJhPEJhbGFuY2VPZjxUPj4ADiRVAWBvcmlnaW5gIGJvbmRzIGZ1bmRzIGZyb20gYGV4dHJhYCBmb3Igc29tZSBwb29sIG1lbWJlciBgbWVtYmVyYCBpbnRvIHRoZWlyIHJlc3BlY3RpdmUYcG9vbHMuAEkBYG9yaWdpbmAgY2FuIGJvbmQgZXh0cmEgZnVuZHMgZnJvbSBmcmVlIGJhbGFuY2Ugb3IgcGVuZGluZyByZXdhcmRzIHdoZW4gYG9yaWdpbiA9PRxvdGhlcmAuAEUBSW4gdGhlIGNhc2Ugb2YgYG9yaWdpbiAhPSBvdGhlcmAsIGBvcmlnaW5gIGNhbiBvbmx5IGJvbmQgZXh0cmEgcGVuZGluZyByZXdhcmRzIG9mFQFgb3RoZXJgIG1lbWJlcnMgYXNzdW1pbmcgc2V0X2NsYWltX3Blcm1pc3Npb24gZm9yIHRoZSBnaXZlbiBtZW1iZXIgaXPAYFBlcm1pc3Npb25sZXNzQ29tcG91bmRgIG9yIGBQZXJtaXNzaW9ubGVzc0FsbGAuUHNldF9jbGFpbV9wZXJtaXNzaW9uBAEocGVybWlzc2lvbl0FATxDbGFpbVBlcm1pc3Npb24ADxxJAUFsbG93cyBhIHBvb2wgbWVtYmVyIHRvIHNldCBhIGNsYWltIHBlcm1pc3Npb24gdG8gYWxsb3cgb3IgZGlzYWxsb3cgcGVybWlzc2lvbmxlc3NgYm9uZGluZyBhbmQgd2l0aGRyYXdpbmcuACwjIEFyZ3VtZW50cwB4KiBgb3JpZ2luYCAtIE1lbWJlciBvZiBhIHBvb2wuuCogYHBlcm1pc3Npb25gIC0gVGhlIHBlcm1pc3Npb24gdG8gYmUgYXBwbGllZC5IY2xhaW1fcGF5b3V0X290aGVyBAEUb3RoZXIEATBUOjpBY2NvdW50SWQAEBABAWBvcmlnaW5gIGNhbiBjbGFpbSBwYXlvdXRzIG9uIHNvbWUgcG9vbCBtZW1iZXIgYG90aGVyYCdzIGJlaGFsZi4AVQFQb29sIG1lbWJlciBgb3RoZXJgIG11c3QgaGF2ZSBhIGBQZXJtaXNzaW9ubGVzc1dpdGhkcmF3YCBvciBgUGVybWlzc2lvbmxlc3NBbGxgIGNsYWltqHBlcm1pc3Npb24gZm9yIHRoaXMgY2FsbCB0byBiZSBzdWNjZXNzZnVsLjhzZXRfY29tbWlzc2lvbggBHHBvb2xfaWQ4ARhQb29sSWQAAThuZXdfY29tbWlzc2lvbmEFAXxPcHRpb248KFBlcmJpbGwsIFQ6OkFjY291bnRJZCk+ABEUdFNldCB0aGUgY29tbWlzc2lvbiBvZiBhIHBvb2wuVQFCb3RoIGEgY29tbWlzc2lvbiBwZXJjZW50YWdlIGFuZCBhIGNvbW1pc3Npb24gcGF5ZWUgbXVzdCBiZSBwcm92aWRlZCBpbiB0aGUgYGN1cnJlbnRgXQF0dXBsZS4gV2hlcmUgYSBgY3VycmVudGAgb2YgYE5vbmVgIGlzIHByb3ZpZGVkLCBhbnkgY3VycmVudCBjb21taXNzaW9uIHdpbGwgYmUgcmVtb3ZlZC4ATQEtIElmIGEgYE5vbmVgIGlzIHN1cHBsaWVkIHRvIGBuZXdfY29tbWlzc2lvbmAsIGV4aXN0aW5nIGNvbW1pc3Npb24gd2lsbCBiZSByZW1vdmVkLkhzZXRfY29tbWlzc2lvbl9tYXgIARxwb29sX2lkOAEYUG9vbElkAAE4bWF4X2NvbW1pc3Npb24ZBQEcUGVyYmlsbAASFJRTZXQgdGhlIG1heGltdW0gY29tbWlzc2lvbiBvZiBhIHBvb2wuADkBLSBJbml0aWFsIG1heCBjYW4gYmUgc2V0IHRvIGFueSBgUGVyYmlsbGAsIGFuZCBvbmx5IHNtYWxsZXIgdmFsdWVzIHRoZXJlYWZ0ZXIuNQEtIEN1cnJlbnQgY29tbWlzc2lvbiB3aWxsIGJlIGxvd2VyZWQgaW4gdGhlIGV2ZW50IGl0IGlzIGhpZ2hlciB0aGFuIGEgbmV3IG1heDQgIGNvbW1pc3Npb24uaHNldF9jb21taXNzaW9uX2NoYW5nZV9yYXRlCAEccG9vbF9pZDgBGFBvb2xJZAABLGNoYW5nZV9yYXRlaQUBnENvbW1pc3Npb25DaGFuZ2VSYXRlPEJsb2NrTnVtYmVyRm9yPFQ+PgATEKhTZXQgdGhlIGNvbW1pc3Npb24gY2hhbmdlIHJhdGUgZm9yIGEgcG9vbC4APQFJbml0aWFsIGNoYW5nZSByYXRlIGlzIG5vdCBib3VuZGVkLCB3aGVyZWFzIHN1YnNlcXVlbnQgdXBkYXRlcyBjYW4gb25seSBiZSBtb3JldHJlc3RyaWN0aXZlIHRoYW4gdGhlIGN1cnJlbnQuQGNsYWltX2NvbW1pc3Npb24EARxwb29sX2lkOAEYUG9vbElkABRAZENsYWltIHBlbmRpbmcgY29tbWlzc2lvbi4APQFUaGUgYHJvb3RgIHJvbGUgb2YgdGhlIHBvb2wgaXMgX2Fsd2F5c18gYWxsb3dlZCB0byBjbGFpbSB0aGUgcG9vbCdzIGNvbW1pc3Npb24uAFUBSWYgdGhlIHBvb2wgaGFzIHNldCBgQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvbjo6UGVybWlzc2lvbmxlc3NgLCB0aGVuIGFueSBhY2NvdW50IGNhbth0cmlnZ2VyIHRoZSBwcm9jZXNzIG9mIGNsYWltaW5nIHRoZSBwb29sJ3MgY29tbWlzc2lvbi4AQQFJZiB0aGUgcG9vbCBoYXMgc2V0IGl0cyBgQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvbmAgdG8gYEFjY291bnQoYWNjKWAsIHRoZW4gb25seSBhY2NvdW50czAqIGBhY2NgLCBhbmRkKiB0aGUgcG9vbCdzIHJvb3QgYWNjb3VudAC4bWF5IGNhbGwgdGhpcyBleHRyaW5zaWMgb24gYmVoYWxmIG9mIHRoZSBwb29sLgAtAVBlbmRpbmcgY29tbWlzc2lvbnMgYXJlIHBhaWQgb3V0IGFuZCBhZGRlZCB0byB0aGUgdG90YWwgY2xhaW1lZCBjb21taXNzaW9uLrhUaGUgdG90YWwgcGVuZGluZyBjb21taXNzaW9uIGlzIHJlc2V0IHRvIHplcm8uTGFkanVzdF9wb29sX2RlcG9zaXQEARxwb29sX2lkOAEYUG9vbElkABUc7FRvcCB1cCB0aGUgZGVmaWNpdCBvciB3aXRoZHJhdyB0aGUgZXhjZXNzIEVEIGZyb20gdGhlIHBvb2wuAFEBV2hlbiBhIHBvb2wgaXMgY3JlYXRlZCwgdGhlIHBvb2wgZGVwb3NpdG9yIHRyYW5zZmVycyBFRCB0byB0aGUgcmV3YXJkIGFjY291bnQgb2YgdGhlVQFwb29sLiBFRCBpcyBzdWJqZWN0IHRvIGNoYW5nZSBhbmQgb3ZlciB0aW1lLCB0aGUgZGVwb3NpdCBpbiB0aGUgcmV3YXJkIGFjY291bnQgbWF5IGJlUQFpbnN1ZmZpY2llbnQgdG8gY292ZXIgdGhlIEVEIGRlZmljaXQgb2YgdGhlIHBvb2wgb3IgdmljZS12ZXJzYSB3aGVyZSB0aGVyZSBpcyBleGNlc3MxAWRlcG9zaXQgdG8gdGhlIHBvb2wuIFRoaXMgY2FsbCBhbGxvd3MgYW55b25lIHRvIGFkanVzdCB0aGUgRUQgZGVwb3NpdCBvZiB0aGX0cG9vbCBieSBlaXRoZXIgdG9wcGluZyB1cCB0aGUgZGVmaWNpdCBvciBjbGFpbWluZyB0aGUgZXhjZXNzLnxzZXRfY29tbWlzc2lvbl9jbGFpbV9wZXJtaXNzaW9uCAEccG9vbF9pZDgBGFBvb2xJZAABKHBlcm1pc3Npb25tBQG8T3B0aW9uPENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb248VDo6QWNjb3VudElkPj4AFhDMU2V0IG9yIHJlbW92ZSBhIHBvb2wncyBjb21taXNzaW9uIGNsYWltIHBlcm1pc3Npb24uAGEBRGV0ZXJtaW5lcyB3aG8gY2FuIGNsYWltIHRoZSBwb29sJ3MgcGVuZGluZyBjb21taXNzaW9uLiBPbmx5IHRoZSBgUm9vdGAgcm9sZSBvZiB0aGUgcG9vbMhpcyBhYmxlIHRvIGNvbmZpZ3VyZSBjb21taXNzaW9uIGNsYWltIHBlcm1pc3Npb25zLixhcHBseV9zbGFzaAQBOG1lbWJlcl9hY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFySIQXBwbHkgYSBwZW5kaW5nIHNsYXNoIG9uIGEgbWVtYmVyLgAlAUZhaWxzIHVubGVzcyBbYGNyYXRlOjpwYWxsZXQ6OkNvbmZpZzo6U3Rha2VBZGFwdGVyYF0gaXMgb2Ygc3RyYXRlZ3kgdHlwZTqkW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXS4AXQFUaGUgcGVuZGluZyBzbGFzaCBhbW91bnQgb2YgdGhlIG1lbWJlciBtdXN0IGJlIGVxdWFsIG9yIG1vcmUgdGhhbiBgRXhpc3RlbnRpYWxEZXBvc2l0YC5RAVRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSBhY2NvdW50KS4gSWYgdGhlIGV4ZWN1dGlvbkkBaXMgc3VjY2Vzc2Z1bCwgZmVlIGlzIHJlZnVuZGVkIGFuZCBjYWxsZXIgbWF5IGJlIHJld2FyZGVkIHdpdGggYSBwYXJ0IG9mIHRoZSBzbGFzaA0BYmFzZWQgb24gdGhlIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBjb25maWd1cmF0aW9uLkhtaWdyYXRlX2RlbGVnYXRpb24EAThtZW1iZXJfYWNjb3VudAABUEFjY291bnRJZExvb2t1cE9mPFQ+ABgkHQFNaWdyYXRlcyBkZWxlZ2F0ZWQgZnVuZHMgZnJvbSB0aGUgcG9vbCBhY2NvdW50IHRvIHRoZSBgbWVtYmVyX2FjY291bnRgLgAlAUZhaWxzIHVubGVzcyBbYGNyYXRlOjpwYWxsZXQ6OkNvbmZpZzo6U3Rha2VBZGFwdGVyYF0gaXMgb2Ygc3RyYXRlZ3kgdHlwZTqkW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXS4AKQFUaGlzIGlzIGEgcGVybWlzc2lvbi1sZXNzIGNhbGwgYW5kIHJlZnVuZHMgYW55IGZlZSBpZiBjbGFpbSBpcyBzdWNjZXNzZnVsLgBdAUlmIHRoZSBwb29sIGhhcyBtaWdyYXRlZCB0byBkZWxlZ2F0aW9uIGJhc2VkIHN0YWtpbmcsIHRoZSBzdGFrZWQgdG9rZW5zIG9mIHBvb2wgbWVtYmVycykBY2FuIGJlIG1vdmVkIGFuZCBoZWxkIGluIHRoZWlyIG93biBhY2NvdW50LiBTZWUgW2BhZGFwdGVyOjpEZWxlZ2F0ZVN0YWtlYF14bWlncmF0ZV9wb29sX3RvX2RlbGVnYXRlX3N0YWtlBAEccG9vbF9pZDgBGFBvb2xJZAAZJPRNaWdyYXRlIHBvb2wgZnJvbSBbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpUcmFuc2ZlcmBdIHRvpFtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OkRlbGVnYXRlYF0uACUBRmFpbHMgdW5sZXNzIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBpcyBvZiBzdHJhdGVneSB0eXBlOqRbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpEZWxlZ2F0ZWBdLgBBAVRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5LCBhbmQgcmVmdW5kcyBhbnkgZmVlIGlmIHN1Y2Nlc3NmdWwuAEkBSWYgdGhlIHBvb2wgaGFzIGFscmVhZHkgbWlncmF0ZWQgdG8gZGVsZWdhdGlvbiBiYXNlZCBzdGFraW5nLCB0aGlzIGNhbGwgd2lsbCBmYWlsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5FBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMkQm9uZEV4dHJhBBxCYWxhbmNlAVUBAQgsRnJlZUJhbGFuY2UEAFUBARxCYWxhbmNlAAAAHFJld2FyZHMAAQAASQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzJFBvb2xTdGF0ZQABDBBPcGVuAAAAHEJsb2NrZWQAAQAoRGVzdHJveWluZwACAABNBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMgQ29uZmlnT3AEBFQBVQEBDBBOb29wAAAADFNldAQAVQEBBFQAAQAYUmVtb3ZlAAIAAFEFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBDb25maWdPcAQEVAE4AQwQTm9vcAAAAAxTZXQEADgBBFQAAQAYUmVtb3ZlAAIAAFUFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBDb25maWdPcAQEVAEZBQEMEE5vb3AAAAAMU2V0BAAZBQEEVAABABhSZW1vdmUAAgAAWQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIENvbmZpZ09wBARUAQQBDBBOb29wAAAADFNldAQABAEEVAABABhSZW1vdmUAAgAAXQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzPENsYWltUGVybWlzc2lvbgABEDBQZXJtaXNzaW9uZWQAAABYUGVybWlzc2lvbmxlc3NDb21wb3VuZAABAFhQZXJtaXNzaW9ubGVzc1dpdGhkcmF3AAIARFBlcm1pc3Npb25sZXNzQWxsAAMAAGEFBBhPcHRpb24EBFQBZQUBCBBOb25lAAAAEFNvbWUEAGUFAAABAABlBQAABAgZBQQAaQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzUENvbW1pc3Npb25DaGFuZ2VSYXRlBCxCbG9ja051bWJlcgE4AAgBMG1heF9pbmNyZWFzZRkFARxQZXJiaWxsAAEkbWluX2RlbGF5OAEsQmxvY2tOdW1iZXIAAG0FBBhPcHRpb24EBFQBcQUBCBBOb25lAAAAEFNvbWUEAHEFAAABAABxBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHNkQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvbgQkQWNjb3VudElkAQQBCDhQZXJtaXNzaW9ubGVzcwAAABxBY2NvdW50BAAEASRBY2NvdW50SWQAAQAAdQUMQHBhbGxldF9iYWdzX2xpc3QYcGFsbGV0EENhbGwIBFQABEkAAQwUcmViYWcEAShkaXNsb2NhdGVkAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAChZAURlY2xhcmUgdGhhdCBzb21lIGBkaXNsb2NhdGVkYCBhY2NvdW50IGhhcywgdGhyb3VnaCByZXdhcmRzIG9yIHBlbmFsdGllcywgc3VmZmljaWVudGx5UQFjaGFuZ2VkIGl0cyBzY29yZSB0aGF0IGl0IHNob3VsZCBwcm9wZXJseSBmYWxsIGludG8gYSBkaWZmZXJlbnQgYmFnIHRoYW4gaXRzIGN1cnJlbnQQb25lLgAdAUFueW9uZSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uIGFib3V0IGFueSBwb3RlbnRpYWxseSBkaXNsb2NhdGVkIGFjY291bnQuAEkBV2lsbCBhbHdheXMgdXBkYXRlIHRoZSBzdG9yZWQgc2NvcmUgb2YgYGRpc2xvY2F0ZWRgIHRvIHRoZSBjb3JyZWN0IHNjb3JlLCBiYXNlZCBvbkBgU2NvcmVQcm92aWRlcmAuANRJZiBgZGlzbG9jYXRlZGAgZG9lcyBub3QgZXhpc3RzLCBpdCByZXR1cm5zIGFuIGVycm9yLjxwdXRfaW5fZnJvbnRfb2YEARxsaWdodGVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASjQTW92ZSB0aGUgY2FsbGVyJ3MgSWQgZGlyZWN0bHkgaW4gZnJvbnQgb2YgYGxpZ2h0ZXJgLgBZAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIElkIG9mNQF0aGUgYWNjb3VudCBnb2luZyBpbiBmcm9udCBvZiBgbGlnaHRlcmAuIEZlZSBpcyBwYXllZCBieSB0aGUgb3JpZ2luIHVuZGVyIGFsbDhjaXJjdW1zdGFuY2VzLgA4T25seSB3b3JrcyBpZjoAlC0gYm90aCBub2RlcyBhcmUgd2l0aGluIHRoZSBzYW1lIGJhZyzQLSBhbmQgYG9yaWdpbmAgaGFzIGEgZ3JlYXRlciBgU2NvcmVgIHRoYW4gYGxpZ2h0ZXJgLlRwdXRfaW5fZnJvbnRfb2Zfb3RoZXIIARxoZWF2aWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxsaWdodGVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAgwRAVNhbWUgYXMgW2BQYWxsZXQ6OnB1dF9pbl9mcm9udF9vZmBdLCBidXQgaXQgY2FuIGJlIGNhbGxlZCBieSBhbnlvbmUuAMhGZWUgaXMgcGFpZCBieSB0aGUgb3JpZ2luIHVuZGVyIGFsbCBjaXJjdW1zdGFuY2VzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy55BQx4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50GHBhbGxldBBDYWxsBARUAAEQUHJlbGF5X3Nlc3Npb25fcmVwb3J0BAEYcmVwb3J0fQUBbFNlc3Npb25SZXBvcnQ8VDo6QWNjb3VudElkPgAABAUBQ2FsbGVkIHRvIGluZGljYXRlIHRoZSBzdGFydCBvZiBhIG5ldyBzZXNzaW9uIG9uIHRoZSByZWxheSBjaGFpbi5ccmVsYXlfbmV3X29mZmVuY2VfcGFnZWQEASBvZmZlbmNlc5EFAahWZWM8KFNlc3Npb25JbmRleCwgT2ZmZW5jZTxUOjpBY2NvdW50SWQ+KT4AAQAgc2V0X2tleXMMARBrZXlzGAEcVmVjPHU4PgABFHByb29mGAEcVmVjPHU4PgABlG1heF9kZWxpdmVyeV9hbmRfcmVtb3RlX2V4ZWN1dGlvbl9mZWVFBAFQT3B0aW9uPEJhbGFuY2VPZjxUPj4ACnxVAVNldCBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yLiBLZXlzIGFyZSB2YWxpZGF0ZWQgb24gQXNzZXRIdWIgYW5kIGZvcndhcmRlZCB0byBSQy4AVQFPbiB0aGUgZmlyc3QgY2FsbCwgYSBkZXBvc2l0IG9mIGBLZXlEZXBvc2l0YCBpcyBoZWxkIGZyb20gdGhlIHN0YXNoLiBTdWJzZXF1ZW50IGNhbGxz9GRvIG5vdCBjaGFyZ2UgYWdhaW4uIFRoZSBkZXBvc2l0IGlzIHJlbGVhc2VkIG9uIGBwdXJnZV9rZXlzYC4AbCoqVmFsaWRhdGlvbiBvbiBBc3NldEh1YjoqKk0BLSBLZXlzIGFyZSBkZWNvZGVkIGFzIGBUOjpSZWxheUNoYWluU2Vzc2lvbktleXNgIHRvIGVuc3VyZSB0aGV5IG1hdGNoIFJDJ3MgZXhwZWN0ZWQkICBmb3JtYXQuMQEtIE93bmVyc2hpcCBwcm9vZiBpcyB2YWxpZGF0ZWQgdXNpbmcgYE9wYXF1ZUtleXM6Om93bmVyc2hpcF9wcm9vZl9pc192YWxpZGAuAEEBSWYgdmFsaWRhdGlvbiBwYXNzZXMsIG9ubHkgdGhlIHZhbGlkYXRlZCBrZXlzIGFyZSBzZW50IHRvIFJDICh3aXRoIGVtcHR5IHByb29mKSyAc2luY2UgUkMgdHJ1c3RzIEFIJ3MgdmFsaWRhdGlvbi4AJCoqRmVlczoqKlUBVGhlIGFjdHVhbCBjb3N0IG9mIHRoaXMgY2FsbCBpcyBoaWdoZXIgdGhhbiB3aGF0IHRoZSB3ZWlnaHQtYmFzZWQgZmVlIGVzdGltYXRlIHNob3dzLlEBSW4gYWRkaXRpb24gdG8gdGhlIGxvY2FsIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUsIHRoZSBzdGFzaCBhY2NvdW50IGlzIGNoYXJnZWQgYW4gWENNSQFmZWUgKGRlbGl2ZXJ5ICsgUkMgZXhlY3V0aW9uIGNvc3QpIHZpYSBgWGNtRXhlY3V0b3I6OmNoYXJnZV9mZWVzYC4gVGhlIHJlbGF5IGNoYWluPQF1c2VzIGBVbnBhaWRFeGVjdXRpb25gLCBzbyB0aGUgZnVsbCByZW1vdGUgY29zdCBpcyBjaGFyZ2VkIHVwZnJvbnQgb24gQXNzZXRIdWIuAC0BV2hlbiBjYWxsZWQgdmlhIGEgc3Rha2luZyBwcm94eSwgdGhlIHByb3h5IHBheXMgdGhlIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUs2HdoaWxlIHRoZSBzdGFzaCAoZGVsZWdhdGluZyBhY2NvdW50KSBwYXlzIHRoZSBYQ00gZmVlLgBIKipNYXggRmVlIExpbWl0OioqRQFVc2VycyBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGBtYXhfZGVsaXZlcnlfYW5kX3JlbW90ZV9leGVjdXRpb25fZmVlYCB0byBsaW1pdCB0aGVdAWRlbGl2ZXJ5ICsgUkMgZXhlY3V0aW9uIGZlZS4gVGhpcyBkb2VzIG5vdCBpbmNsdWRlIHRoZSBsb2NhbCB0cmFuc2FjdGlvbiB3ZWlnaHQgZmVlLiBJZl0BdGhlIGZlZSBleGNlZWRzIHRoaXMgbGltaXQsIHRoZSBvcGVyYXRpb24gZmFpbHMgd2l0aCBgRmVlc0V4Y2VlZGVkTWF4YC4gUGFzcyBgTm9uZWAgZm9yTHVubGltaXRlZCAobm8gY2FwKS4AWQFOT1RFOiB1bmxpa2UgdGhlIGN1cnJlbnQgZmxvdyBmb3IgbmV3IHZhbGlkYXRvcnMgb24gUkMgKGJvbmQgLT4gc2V0X2tleXMgLT4gdmFsaWRhdGUpLFUBdXNlcnMgb24gQXNzZXQgSHViIE1VU1QgY2FsbCBib25kIGFuZCB2YWxpZGF0ZSBCRUZPUkUgY2FsbGluZyBzZXRfa2V5cy4gQXR0ZW1wdGluZyB0byUBc2V0IGtleXMgYmVmb3JlIGRlY2xhcmluZyBpbnRlbnQgdG8gdmFsaWRhdGUgd2lsbCBmYWlsIHdpdGggTm90VmFsaWRhdG9yLihwdXJnZV9rZXlzBAGUbWF4X2RlbGl2ZXJ5X2FuZF9yZW1vdGVfZXhlY3V0aW9uX2ZlZUUEAVBPcHRpb248QmFsYW5jZU9mPFQ+PgALaAEBUmVtb3ZlIHNlc3Npb24ga2V5cyBmb3IgYSB2YWxpZGF0b3IgYW5kIHJlbGVhc2UgdGhlIGtleSBkZXBvc2l0LgCoVGhpcyBwdXJnZXMgdGhlIGtleXMgZnJvbSB0aGUgUmVsYXkgQ2hhaW4uAEUBVW5saWtlIGBzZXRfa2V5c2AsIHRoaXMgZG9lcyBub3QgcmVxdWlyZSB0aGUgY2FsbGVyIHRvIGJlIGEgcmVnaXN0ZXJlZCB2YWxpZGF0b3IuSQFUaGlzIGlzIGludGVudGlvbmFsOiBhIHZhbGlkYXRvciB3aG8gaGFzIGNoaWxsZWQgKHN0b3BwZWQgdmFsaWRhdGluZykgc2hvdWxkIHN0aWxsOQFiZSBhYmxlIHRvIHB1cmdlIHRoZWlyIHNlc3Npb24ga2V5cy4gVGhpcyBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgb3JpZ2luYWzwYHBhbGxldC1zZXNzaW9uOjpwdXJnZV9rZXlzYCB3aGljaCBhbGxvd3MgYW55b25lIHRvIGNhbGwgaXQuADkBVGhlIFJlbGF5IENoYWluIHdpbGwgcmVqZWN0IHRoZSBjYWxsIHdpdGggYE5vS2V5c2AgZXJyb3IgaWYgdGhlIGFjY291bnQgaGFzIG5vJGtleXMgc2V0LgAkKipGZWVzOioqVQFUaGUgYWN0dWFsIGNvc3Qgb2YgdGhpcyBjYWxsIGlzIGhpZ2hlciB0aGFuIHdoYXQgdGhlIHdlaWdodC1iYXNlZCBmZWUgZXN0aW1hdGUgc2hvd3MuRQFJbiBhZGRpdGlvbiB0byB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gd2VpZ2h0IGZlZSwgdGhlIGNhbGxlciBpcyBjaGFyZ2VkIGFuIFhDTSBmZWVNAShkZWxpdmVyeSArIFJDIGV4ZWN1dGlvbiBjb3N0KSB2aWEgYFhjbUV4ZWN1dG9yOjpjaGFyZ2VfZmVlc2AuIFRoZSByZWxheSBjaGFpbiB1c2VzKQFgVW5wYWlkRXhlY3V0aW9uYCwgc28gdGhlIGZ1bGwgcmVtb3RlIGNvc3QgaXMgY2hhcmdlZCB1cGZyb250IG9uIEFzc2V0SHViLgAtAVdoZW4gY2FsbGVkIHZpYSBhIHN0YWtpbmcgcHJveHksIHRoZSBwcm94eSBwYXlzIHRoZSB0cmFuc2FjdGlvbiB3ZWlnaHQgZmVlLLh3aGlsZSB0aGUgZGVsZWdhdGluZyBhY2NvdW50IHBheXMgdGhlIFhDTSBmZWUuAEgqKk1heCBGZWUgTGltaXQ6KipFAVVzZXJzIGNhbiBvcHRpb25hbGx5IHNwZWNpZnkgYG1heF9kZWxpdmVyeV9hbmRfcmVtb3RlX2V4ZWN1dGlvbl9mZWVgIHRvIGxpbWl0IHRoZV0BZGVsaXZlcnkgKyBSQyBleGVjdXRpb24gZmVlLiBUaGlzIGRvZXMgbm90IGluY2x1ZGUgdGhlIGxvY2FsIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUuIElmXQF0aGUgZmVlIGV4Y2VlZHMgdGhpcyBsaW1pdCwgdGhlIG9wZXJhdGlvbiBmYWlscyB3aXRoIGBGZWVzRXhjZWVkZWRNYXhgLiBQYXNzIGBOb25lYCBmb3JMdW5saW1pdGVkIChubyBjYXApLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy59BQh4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50NFNlc3Npb25SZXBvcnQEJEFjY291bnRJZAEEABABJGVuZF9pbmRleDgBMFNlc3Npb25JbmRleAABQHZhbGlkYXRvcl9wb2ludHOBBQFUVmVjPChBY2NvdW50SWQsIHUzMik+AAFQYWN0aXZhdGlvbl90aW1lc3RhbXCJBQFIT3B0aW9uPCh1NjQsIHUzMik+AAEgbGVmdG92ZXJZAQEQYm9vbAAAgQUAAAKFBQCFBQAABAgEOACJBQQYT3B0aW9uBARUAY0FAQgQTm9uZQAAABBTb21lBACNBQAAAQAAjQUAAAQIKDgAkQUAAAKVBQCVBQAABAg4mQUAmQUIeHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudBxPZmZlbmNlBCRBY2NvdW50SWQBBAAMASBvZmZlbmRlcgQBJEFjY291bnRJZAABJHJlcG9ydGVyc10BAThWZWM8QWNjb3VudElkPgABOHNsYXNoX2ZyYWN0aW9uGQUBHFBlcmJpbGwAAJ0FDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYcGFsbGV0EENhbGwEBFQAAQgYbWFuYWdlBAEIb3ChBQFMTWFuYWdlck9wZXJhdGlvbjxUPgAAFExNYW5hZ2UgdGhpcyBwYWxsZXQuAOhUaGUgb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFtgQ29uZmlnOjpNYW5hZ2VyT3JpZ2luYF0uAAkBU2VlIFtgTWFuYWdlck9wZXJhdGlvbmBdIGZvciB2YXJpb3VzIG9wZXJhdGlvbnMgdGhhdCBhcmUgcG9zc2libGUuFGFkbWluBAEIb3CpBQFEQWRtaW5PcGVyYXRpb248VD4AAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuoQUIkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9ja0BNYW5hZ2VyT3BlcmF0aW9uBARUAAEMQEZvcmNlUm90YXRlUm91bmQAAAA0Rm9yY2VTZXRQaGFzZQQApQUBIFBoYXNlPFQ+AAEAREVtZXJnZW5jeUZhbGxiYWNrAAIAAKUFDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sUdHlwZXMUUGhhc2UEBFQAASAMT2ZmAAAAGFNpZ25lZAQAOAFEQmxvY2tOdW1iZXJGb3I8VD4AAQBAU2lnbmVkVmFsaWRhdGlvbgQAOAFEQmxvY2tOdW1iZXJGb3I8VD4AAgAgVW5zaWduZWQEADgBREJsb2NrTnVtYmVyRm9yPFQ+AAMAIFNuYXBzaG90BAA4ASRQYWdlSW5kZXgABAAQRG9uZQAFABhFeHBvcnQEADgBJFBhZ2VJbmRleAAGACRFbWVyZ2VuY3kABwAAqQUIkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jazhBZG1pbk9wZXJhdGlvbgQEVAABCFBFbWVyZ2VuY3lTZXRTb2x1dGlvbggArQUBhEJveDxCb3VuZGVkU3VwcG9ydHNPZjxQYWxsZXQ8VD4+PgAAzQUBNEVsZWN0aW9uU2NvcmUAAABQU2V0TWluVW50cnVzdGVkU2NvcmUEAM0FATRFbGVjdGlvblNjb3JlAAEAAK0FCHxmcmFtZV9lbGVjdGlvbl9wcm92aWRlcl9zdXBwb3J0PEJvdW5kZWRTdXBwb3J0cwwkQWNjb3VudElkAQQYQk91dGVyABhCSW5uZXIAAAQAsQUBCQFCb3VuZGVkVmVjPChBY2NvdW50SWQsIEJvdW5kZWRTdXBwb3J0PEFjY291bnRJZCwgQklubmVyPiksIEJPdXRlcj4AALEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBtQUEUwAABADJBQEYVmVjPFQ+AAC1BQAABAgEuQUAuQUIfGZyYW1lX2VsZWN0aW9uX3Byb3ZpZGVyX3N1cHBvcnQ4Qm91bmRlZFN1cHBvcnQIJEFjY291bnRJZAEEFEJvdW5kAAAIARR0b3RhbFUBATxFeHRlbmRlZEJhbGFuY2UAARh2b3RlcnO9BQG8Qm91bmRlZFZlYzwoQWNjb3VudElkLCBFeHRlbmRlZEJhbGFuY2UpLCBCb3VuZD4AAL0FDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBwQUEUwAABADFBQEYVmVjPFQ+AADBBQAABAgEVQEAxQUAAALBBQDJBQAAArUFAM0FCERzcF9ucG9zX2VsZWN0aW9uczRFbGVjdGlvblNjb3JlAAAMATRtaW5pbWFsX3N0YWtlVQEBPEV4dGVuZGVkQmFsYW5jZQABJHN1bV9zdGFrZVUBATxFeHRlbmRlZEJhbGFuY2UAAURzdW1fc3Rha2Vfc3F1YXJlZFUBATxFeHRlbmRlZEJhbGFuY2UAANEFFJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sgdmVyaWZpZXIUaW1wbHMYcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu1QUQkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB1bnNpZ25lZBhwYWxsZXQQQ2FsbAQEVAABBDxzdWJtaXRfdW5zaWduZWQEAThwYWdlZF9zb2x1dGlvbtkFAZRCb3g8UGFnZWRSYXdTb2x1dGlvbjxUOjpNaW5lckNvbmZpZz4+AAA8cFN1Ym1pdCBhbiB1bnNpZ25lZCBzb2x1dGlvbi4AVQFUaGlzIHdvcmtzIHZlcnkgbXVjaCBsaWtlIGFuIGluaGVyZW50LCBhcyBvbmx5IHRoZSB2YWxpZGF0b3JzIGFyZSBwZXJtaXR0ZWQgdG8gc3VibWl0WQFhbnl0aGluZy4gQnkgZGVmYXVsdCB2YWxpZGF0b3JzIHdpbGwgY29tcHV0ZSB0aGlzIGNhbGwgaW4gdGhlaXIgYG9mZmNoYWluX3dvcmtlcmAgaG9va2xhbmQgdHJ5IGFuZCBzdWJtaXQgaXQgYmFjay4ARQFUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHNpZ25lZCBwYWdlIHN1Ym1pc3Npb24gbWFpbmx5IGluIHRoYXQgdGhlIHNvbHV0aW9uIHBhZ2UgaXNQdmVyaWZpZWQgb24gdGhlIGZseS4APQFUaGUgYHBhZ2VkX3NvbHV0aW9uYCBtYXkgY29udGFpbiBhdCBtb3N0IFtgQ29uZmlnOjpNaW5lclBhZ2VzYF0gcGFnZXMuIFRoZXkgYXJlDQFpbnRlcnByZXRlZCBhcyBtc3AgLT4gbHNwLCBhcyBwZXIgW2BjcmF0ZTo6UGFsbGV0Ojptc3BfcmFuZ2VfZm9yYF0uAF0BRm9yIGV4YW1wbGUsIGlmIGBQYWdlcyA9IDRgLCBhbmQgYE1pbmVyUGFnZXMgPSAyYCwgb3VyIGZ1bGwgc25hcHNob3QgcmFuZ2Ugd291bGQgYmUgWzAsVQExLCAyLCAzXSwgd2l0aCAzIGJlaW5nIG1zcC4gQnV0LCBpbiB0aGlzIGNhc2UsIHRoZW4gdGhlIGBwYWdlZF9yYXdfc29sdXRpb24ucGFnZXNgIGlz3GV4cGVjdGVkIHRvIGNvcnJlc3BvbmQgdG8gYFtzbmFwc2hvdCgyKSwgc25hcHNob3QoMyldYC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu2QUMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxR0eXBlc0BQYWdlZFJhd1NvbHV0aW9uBARUAAAMAThzb2x1dGlvbl9wYWdlc90FAUhWZWM8U29sdXRpb25PZjxUPj4AARRzY29yZc0FATRFbGVjdGlvblNjb3JlAAEUcm91bmQ4AQx1MzIAAN0FAAAC4QUA4QUMcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUcc3Rha2luZ1ROcG9zQ29tcGFjdFNvbHV0aW9uMTYAAEABGHZvdGVzMeUFAAABGHZvdGVzMvEFAAABGHZvdGVzMwUGAAABGHZvdGVzNBEGAAABGHZvdGVzNR0GAAABGHZvdGVzNikGAAABGHZvdGVzNzUGAAABGHZvdGVzOEEGAAABGHZvdGVzOU0GAAABHHZvdGVzMTBZBgAAARx2b3RlczExZQYAAAEcdm90ZXMxMnEGAAABHHZvdGVzMTN9BgAAARx2b3RlczE0iQYAAAEcdm90ZXMxNZUGAAABHHZvdGVzMTahBgAAAOUFAAAC6QUA6QUAAAQIYO0FAO0FAAAG0QMA8QUAAAL1BQD1BQAABAxg+QXtBQD5BQAABAjtBf0FAP0FAAAGAQYAAQYMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxhQZXJVMTYAAAQA0QMBDHUxNgAABQYAAAIJBgAJBgAABAxgDQbtBQANBgAAAwIAAAD5BQARBgAAAhUGABUGAAAEDGAZBu0FABkGAAADAwAAAPkFAB0GAAACIQYAIQYAAAQMYCUG7QUAJQYAAAMEAAAA+QUAKQYAAAItBgAtBgAABAxgMQbtBQAxBgAAAwUAAAD5BQA1BgAAAjkGADkGAAAEDGA9Bu0FAD0GAAADBgAAAPkFAEEGAAACRQYARQYAAAQMYEkG7QUASQYAAAMHAAAA+QUATQYAAAJRBgBRBgAABAxgVQbtBQBVBgAAAwgAAAD5BQBZBgAAAl0GAF0GAAAEDGBhBu0FAGEGAAADCQAAAPkFAGUGAAACaQYAaQYAAAQMYG0G7QUAbQYAAAMKAAAA+QUAcQYAAAJ1BgB1BgAABAxgeQbtBQB5BgAAAwsAAAD5BQB9BgAAAoEGAIEGAAAEDGCFBu0FAIUGAAADDAAAAPkFAIkGAAACjQYAjQYAAAQMYJEG7QUAkQYAAAMNAAAA+QUAlQYAAAKZBgCZBgAABAxgnQbtBQCdBgAAAw4AAAD5BQChBgAAAqUGAKUGAAAEDGCpBu0FAKkGAAADDwAAAPkFAK0GEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkGHBhbGxldBBDYWxsBARUAAEUIHJlZ2lzdGVyBAE0Y2xhaW1lZF9zY29yZc0FATRFbGVjdGlvblNjb3JlAAAExFJlZ2lzdGVyIG9uZXNlbGYgZm9yIGFuIHVwY29taW5nIHNpZ25lZCBlbGVjdGlvbi4sc3VibWl0X3BhZ2UIARBwYWdlOAEkUGFnZUluZGV4AAE4bWF5YmVfc29sdXRpb26xBgGcT3B0aW9uPEJveDxTb2x1dGlvbk9mPFQ6Ok1pbmVyQ29uZmlnPj4+AAEgjFN1Ym1pdCBhIHNpbmdsZSBwYWdlIG9mIGEgc29sdXRpb24uALBNdXN0IGFsd2F5cyBjb21lIGFmdGVyIFtgUGFsbGV0OjpyZWdpc3RlcmBdLgDgYG1heWJlX3NvbHV0aW9uYCBjYW4gYmUgc2V0IHRvIGBOb25lYCB0byBlcmFzZSB0aGUgcGFnZS4ANQFDb2xsZWN0cyBkZXBvc2l0cyBmcm9tIHRoZSBzaWduZWQgb3JpZ2luIGJhc2VkIG9uIFtgQ29uZmlnOjpEZXBvc2l0QmFzZWBdIGFuZGxbYENvbmZpZzo6RGVwb3NpdFBlclBhZ2VgXS4QYmFpbAACFFRSZXRyYWN0IGEgc3VibWlzc2lvbi4ATQFBIHBvcnRpb24gb2YgdGhlIGRlcG9zaXQgbWF5IGJlIHJldHVybmVkLCBiYXNlZCBvbiB0aGUgW2BDb25maWc6OkVqZWN0R3JhY2VSYXRpb2BdLgDEVGhpcyB3aWxsIGZ1bGx5IHJlbW92ZSB0aGUgc29sdXRpb24gZnJvbSBzdG9yYWdlLlBjbGVhcl9vbGRfcm91bmRfZGF0YQgBFHJvdW5kOAEMdTMyAAE0d2l0bmVzc19wYWdlczgBDHUzMgADGMBDbGVhciB0aGUgZGF0YSBvZiBhIHN1Ym1pdHRlciBmb3JtIGFuIG9sZCByb3VuZC4AMQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIHNpZ25lZCwgYW5kIHRoZSBvcmlnaW5hbCBzdWJtaXR0ZXIuAF0BVGhpcyBjYW4gb25seSBiZSBjYWxsZWQgZm9yIHN1Ym1pc3Npb25zIHRoYXQgZW5kIHVwIGJlaW5nIGRpc2NhcmRlZCwgYXMgaW4gdGhleSBhcmUgbm90xHByb2Nlc3NlZCBhbmQgdGhleSBlbmQgdXAgbGluZ2VyaW5nIGluIHRoZSBxdWV1ZS5Ec2V0X2ludnVsbmVyYWJsZXMEAQxpbnZdAQFEVmVjPFQ6OkFjY291bnRJZD4ABAxoU2V0IHRoZSBpbnZ1bG5lcmFibGUgbGlzdC4AEQFEaXNwYXRjaCBvcmlnaW4gbXVzdCB0aGUgdGhlIHNhbWUgYXMgW2BjcmF0ZTo6Q29uZmlnOjpBZG1pbk9yaWdpbmBdLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6xBgQYT3B0aW9uBARUAeEFAQgQTm9uZQAAABBTb21lBADhBQAAAQAAtQYQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQQQ2FsbAQEVAABiBBib25kCAEUdmFsdWVRAQEwQmFsYW5jZU9mPFQ+AAEUcGF5ZWW5BgF8UmV3YXJkRGVzdGluYXRpb248VDo6QWNjb3VudElkPgAAMGEBVGFrZSB0aGUgb3JpZ2luIGFjY291bnQgYXMgYSBzdGFzaCBhbmQgbG9jayB1cCBgdmFsdWVgIG9mIGl0cyBiYWxhbmNlLiBgY29udHJvbGxlcmAgd2lsbIBiZSB0aGUgYWNjb3VudCB0aGF0IGNvbnRyb2xzIGl0LgAtAWB2YWx1ZWAgbXVzdCBiZSBtb3JlIHRoYW4gdGhlIGBtaW5pbXVtX2JhbGFuY2VgIHNwZWNpZmllZCBieSBgVDo6Q3VycmVuY3lgLgAhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBzdGFzaCBhY2NvdW50LgA8RW1pdHMgYEJvbmRlZGAuAE0BTk9URTogVHdvIG9mIHRoZSBzdG9yYWdlIHdyaXRlcyAoYFNlbGY6OmJvbmRlZGAsIGBTZWxmOjpwYXllZWApIGFyZSBfbmV2ZXJfIGNsZWFuZWRZAXVubGVzcyB0aGUgYG9yaWdpbmAgZmFsbHMgYmVsb3cgX2V4aXN0ZW50aWFsIGRlcG9zaXRfIChvciBlcXVhbCB0byAwKSBhbmQgZ2V0cyByZW1vdmVkIGFzIGR1c3QuKGJvbmRfZXh0cmEEAThtYXhfYWRkaXRpb25hbFEBATBCYWxhbmNlT2Y8VD4AAShhAUFkZCBzb21lIGV4dHJhIGFtb3VudCB0aGF0IGhhdmUgYXBwZWFyZWQgaW4gdGhlIHN0YXNoIGBmcmVlX2JhbGFuY2VgIGludG8gdGhlIGJhbGFuY2UgdXAwZm9yIHN0YWtpbmcuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIHN0YXNoLCBub3QgdGhlIGNvbnRyb2xsZXIuAE0BVXNlIHRoaXMgaWYgdGhlcmUgYXJlIGFkZGl0aW9uYWwgZnVuZHMgaW4geW91ciBzdGFzaCBhY2NvdW50IHRoYXQgeW91IHdpc2ggdG8gYm9uZC5VAVVubGlrZSBbYGJvbmRgXShTZWxmOjpib25kKSBvciBbYHVuYm9uZGBdKFNlbGY6OnVuYm9uZCkgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBpbXBvc2W8YW55IGxpbWl0YXRpb24gb24gdGhlIGFtb3VudCB0aGF0IGNhbiBiZSBhZGRlZC4APEVtaXRzIGBCb25kZWRgLhh1bmJvbmQEARR2YWx1ZVEBATBCYWxhbmNlT2Y8VD4AAkxRAVNjaGVkdWxlIGEgcG9ydGlvbiBvZiB0aGUgc3Rhc2ggdG8gYmUgdW5sb2NrZWQgcmVhZHkgZm9yIHRyYW5zZmVyIG91dCBhZnRlciB0aGUgYm9uZPxwZXJpb2QgZW5kcy4gSWYgdGhpcyBsZWF2ZXMgYW4gYW1vdW50IGFjdGl2ZWx5IGJvbmRlZCBsZXNzIHRoYW4hAVtgYXNzZXQ6OmV4aXN0ZW50aWFsX2RlcG9zaXRgXSwgdGhlbiBpdCBpcyBpbmNyZWFzZWQgdG8gdGhlIGZ1bGwgYW1vdW50LgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgBFAU9uY2UgdGhlIHVubG9jayBwZXJpb2QgaXMgZG9uZSwgeW91IGNhbiBjYWxsIGB3aXRoZHJhd191bmJvbmRlZGAgdG8gYWN0dWFsbHkgbW92Zbx0aGUgZnVuZHMgb3V0IG9mIG1hbmFnZW1lbnQgcmVhZHkgZm9yIHRyYW5zZmVyLgAxAU5vIG1vcmUgdGhhbiBhIGxpbWl0ZWQgbnVtYmVyIG9mIHVubG9ja2luZyBjaHVua3MgKHNlZSBgTWF4VW5sb2NraW5nQ2h1bmtzYClBAWNhbiBjby1leGlzdHMgYXQgdGhlIHNhbWUgdGltZS4gSWYgdGhlcmUgYXJlIG5vIHVubG9ja2luZyBjaHVua3Mgc2xvdHMgYXZhaWxhYmxlRQFbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0gaXMgY2FsbGVkIHRvIHJlbW92ZSBzb21lIG9mIHRoZSBjaHVua3MgKGlmIHBvc3NpYmxlKS4AOQFJZiBhIHVzZXIgZW5jb3VudGVycyB0aGUgYEluc3VmZmljaWVudEJvbmRgIGVycm9yIHdoZW4gY2FsbGluZyB0aGlzIGV4dHJpbnNpYywZAXRoZXkgc2hvdWxkIGNhbGwgYGNoaWxsYCBmaXJzdCBpbiBvcmRlciB0byBmcmVlIHVwIHRoZWlyIGJvbmRlZCBmdW5kcy4AREVtaXRzIGBVbmJvbmRlZGAuAJRTZWUgYWxzbyBbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0uRHdpdGhkcmF3X3VuYm9uZGVkBAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyAANMKQFSZW1vdmUgYW55IHN0YWtlIHRoYXQgaGFzIGJlZW4gZnVsbHkgdW5ib25kZWQgYW5kIGlzIHJlYWR5IGZvciB3aXRoZHJhd2FsLgBVAVN0YWtlIGlzIGNvbnNpZGVyZWQgZnVsbHkgdW5ib25kZWQgb25jZSBbYENvbmZpZzo6Qm9uZGluZ0R1cmF0aW9uYF0gaGFzIGVsYXBzZWQgc2luY2VdAXRoZSB1bmJvbmRpbmcgd2FzIGluaXRpYXRlZC4gSW4gcmFyZSBjYXNlc+KAlHN1Y2ggYXMgd2hlbiBvZmZlbmNlcyBmb3IgdGhlIHVuYm9uZGVkIGVyYVUBaGF2ZSBiZWVuIHJlcG9ydGVkIGJ1dCBub3QgeWV0IHByb2Nlc3NlZOKAlHdpdGhkcmF3YWwgaXMgcmVzdHJpY3RlZCB0byBlcmFzIGZvciB3aGljaIRhbGwgb2ZmZW5jZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZC4AJQFUaGUgdW5sb2NrZWQgc3Rha2Ugd2lsbCBiZSByZXR1cm5lZCBhcyBmcmVlIGJhbGFuY2UgaW4gdGhlIHN0YXNoIGFjY291bnQuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIuAEhFbWl0cyBgV2l0aGRyYXduYC4AaFNlZSBhbHNvIFtgQ2FsbDo6dW5ib25kYF0uADQjIyBQYXJhbWV0ZXJzAFkBLSBgbnVtX3NsYXNoaW5nX3NwYW5zYDogKipEZXByZWNhdGVkKiouIFJldGFpbmVkIG9ubHkgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHk7IHRoaXNoICBwYXJhbWV0ZXIgaGFzIG5vIGVmZmVjdC4gdmFsaWRhdGUEARRwcmVmc70GAThWYWxpZGF0b3JQcmVmcwAEFOREZWNsYXJlIHRoZSBkZXNpcmUgdG8gdmFsaWRhdGUgZm9yIHRoZSBvcmlnaW4gY29udHJvbGxlci4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLiBub21pbmF0ZQQBHHRhcmdldHPFBgFkVmVjPEFjY291bnRJZExvb2t1cE9mPFQ+PgAFFA0BRGVjbGFyZSB0aGUgZGVzaXJlIHRvIG5vbWluYXRlIGB0YXJnZXRzYCBmb3IgdGhlIG9yaWdpbiBjb250cm9sbGVyLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guFGNoaWxsAAYoxERlY2xhcmUgbm8gZGVzaXJlIHRvIGVpdGhlciB2YWxpZGF0ZSBvciBub21pbmF0ZS4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgA0IyMgQ29tcGxleGl0eeQtIEluZGVwZW5kZW50IG9mIHRoZSBhcmd1bWVudHMuIEluc2lnbmlmaWNhbnQgY29tcGxleGl0eS5QLSBDb250YWlucyBvbmUgcmVhZC7ELSBXcml0ZXMgYXJlIGxpbWl0ZWQgdG8gdGhlIGBvcmlnaW5gIGFjY291bnQga2V5LiRzZXRfcGF5ZWUEARRwYXllZbkGAXxSZXdhcmREZXN0aW5hdGlvbjxUOjpBY2NvdW50SWQ+AAcUtChSZS0pc2V0IHRoZSBwYXltZW50IHRhcmdldCBmb3IgYSBjb250cm9sbGVyLgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLjhzZXRfY29udHJvbGxlcgAIIEUBKFJlLSlzZXRzIHRoZSBjb250cm9sbGVyIG9mIGEgc3Rhc2ggdG8gdGhlIHN0YXNoIGl0c2VsZi4gVGhpcyBmdW5jdGlvbiBwcmV2aW91c2x5TQFhY2NlcHRlZCBhIGBjb250cm9sbGVyYCBhcmd1bWVudCB0byBzZXQgdGhlIGNvbnRyb2xsZXIgdG8gYW4gYWNjb3VudCBvdGhlciB0aGFuIHRoZVkBc3Rhc2ggaXRzZWxmLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIG5vdyBiZWVuIHJlbW92ZWQsIG5vdyBvbmx5IHNldHRpbmcgdGhlIGNvbnRyb2xsZXKMdG8gdGhlIHN0YXNoLCBpZiBpdCBpcyBub3QgYWxyZWFkeS4AUQFFZmZlY3RzIHdpbGwgYmUgZmVsdCBpbnN0YW50bHkgKGFzIHNvb24gYXMgdGhpcyBmdW5jdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5KS4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgc3Rhc2gsIG5vdCB0aGUgY29udHJvbGxlci5Mc2V0X3ZhbGlkYXRvcl9jb3VudAQBDG5ld2ABDHUzMgAJDJBTZXRzIHRoZSBpZGVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycy4AhFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBSb290LmBpbmNyZWFzZV92YWxpZGF0b3JfY291bnQEAShhZGRpdGlvbmFsYAEMdTMyAAoQ6EluY3JlbWVudHMgdGhlIGlkZWFsIG51bWJlciBvZiB2YWxpZGF0b3JzIHVwIHRvIG1heGltdW0gb2ZUYFQ6Ok1heFZhbGlkYXRvclNldGAuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC5Uc2NhbGVfdmFsaWRhdG9yX2NvdW50BAEYZmFjdG9yyQYBHFBlcmNlbnQACxARAVNjYWxlIHVwIHRoZSBpZGVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycyBieSBhIGZhY3RvciB1cCB0byBtYXhpbXVtIG9mVGBUOjpNYXhWYWxpZGF0b3JTZXRgLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuNGZvcmNlX25vX2VyYXMADCSsRm9yY2UgdGhlcmUgdG8gYmUgbm8gbmV3IGVyYXMgaW5kZWZpbml0ZWx5LgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuOQFUaHVzIHRoZSBlbGVjdGlvbiBwcm9jZXNzIG1heSBiZSBvbmdvaW5nIHdoZW4gdGhpcyBpcyBjYWxsZWQuIEluIHRoaXMgY2FzZSB0aGXcZWxlY3Rpb24gd2lsbCBjb250aW51ZSB1bnRpbCB0aGUgbmV4dCBlcmEgaXMgdHJpZ2dlcmVkLjRmb3JjZV9uZXdfZXJhAA0oSQFGb3JjZSB0aGVyZSB0byBiZSBhIG5ldyBlcmEgYXQgdGhlIGVuZCBvZiB0aGUgbmV4dCBzZXNzaW9uLiBBZnRlciB0aGlzLCBpdCB3aWxsIGJlnHJlc2V0IHRvIG5vcm1hbCAobm9uLWZvcmNlZCkgYmVoYXZpb3VyLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuSQFJZiB0aGlzIGlzIGNhbGxlZCBqdXN0IGJlZm9yZSBhIG5ldyBlcmEgaXMgdHJpZ2dlcmVkLCB0aGUgZWxlY3Rpb24gcHJvY2VzcyBtYXkgbm90jGhhdmUgZW5vdWdoIGJsb2NrcyB0byBnZXQgYSByZXN1bHQuNGZvcmNlX3Vuc3Rha2UIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABSG51bV9zbGFzaGluZ19zcGFuczgBDHUzMgAPIAkBRm9yY2UgYSBjdXJyZW50IHN0YWtlciB0byBiZWNvbWUgY29tcGxldGVseSB1bnN0YWtlZCwgaW1tZWRpYXRlbHkuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC40IyMgUGFyYW1ldGVycwCwLSBgc3Rhc2hgOiBUaGUgc3Rhc2ggYWNjb3VudCB0byBiZSB1bnN0YWtlZC49AS0gYG51bV9zbGFzaGluZ19zcGFuc2A6ICoqRGVwcmVjYXRlZCoqLiBUaGlzIHBhcmFtZXRlciBpcyByZXRhaW5lZCBmb3IgYmFja3dhcmSsY29tcGF0aWJpbGl0eS4gSXQgbm8gbG9uZ2VyIGhhcyBhbnkgZWZmZWN0LlBmb3JjZV9uZXdfZXJhX2Fsd2F5cwAQJAEBRm9yY2UgdGhlcmUgdG8gYmUgYSBuZXcgZXJhIGF0IHRoZSBlbmQgb2Ygc2Vzc2lvbnMgaW5kZWZpbml0ZWx5LgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuSQFJZiB0aGlzIGlzIGNhbGxlZCBqdXN0IGJlZm9yZSBhIG5ldyBlcmEgaXMgdHJpZ2dlcmVkLCB0aGUgZWxlY3Rpb24gcHJvY2VzcyBtYXkgbm90jGhhdmUgZW5vdWdoIGJsb2NrcyB0byBnZXQgYSByZXN1bHQuVGNhbmNlbF9kZWZlcnJlZF9zbGFzaAgBDGVyYTgBIEVyYUluZGV4AAFEdmFsaWRhdG9yX3NsYXNoZXPNBgFwVmVjPChUOjpBY2NvdW50SWQsIFBlcmJpbGwpPgARLAkBQ2FuY2VscyBzY2hlZHVsZWQgc2xhc2hlcyBmb3IgYSBnaXZlbiBlcmEgYmVmb3JlIHRoZXkgYXJlIGFwcGxpZWQuAGEBVGhpcyBmdW5jdGlvbiBhbGxvd3MgYFQ6OkFkbWluT3JpZ2luYCB0byBjYW5jZWwgcGVuZGluZyBzbGFzaGVzIGZvciBzcGVjaWZpZWQgdmFsaWRhdG9yc0kBaW4gYSBnaXZlbiBlcmEuIFRoZSBjYW5jZWxsZWQgc2xhc2hlcyBhcmUgc3RvcmVkIGFuZCB3aWxsIGJlIGNoZWNrZWQgd2hlbiBhcHBseWluZyBzbGFzaGVzLgA0IyMgUGFyYW1ldGVyc1UBLSBgZXJhYDogVGhlIHN0YWtpbmcgZXJhIGZvciB3aGljaCBzbGFzaGVzIHNob3VsZCBiZSBjYW5jZWxsZWQuIFRoaXMgaXMgdGhlIGVyYSB3aGVyZTUBICB0aGUgc2xhc2ggd291bGQgYmUgYXBwbGllZCwgbm90IHRoZSBlcmEgaW4gd2hpY2ggdGhlIG9mZmVuY2Ugd2FzIGNvbW1pdHRlZC5ZAS0gYHZhbGlkYXRvcl9zbGFzaGVzYDogQSBsaXN0IG9mIHZhbGlkYXRvciBzdGFzaCBhY2NvdW50cyBhbmQgdGhlaXIgc2xhc2ggZnJhY3Rpb25zIHRvPCAgYmUgY2FuY2VsbGVkLjhwYXlvdXRfc3Rha2VycwgBPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAABDGVyYTgBIEVyYUluZGV4ABI0GQFQYXkgb3V0IG5leHQgcGFnZSBvZiB0aGUgc3Rha2VycyBiZWhpbmQgYSB2YWxpZGF0b3IgZm9yIHRoZSBnaXZlbiBlcmEuAOgtIGB2YWxpZGF0b3Jfc3Rhc2hgIGlzIHRoZSBzdGFzaCBhY2NvdW50IG9mIHRoZSB2YWxpZGF0b3IuMQEtIGBlcmFgIG1heSBiZSBhbnkgZXJhIGJldHdlZW4gYFtjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGg7IGN1cnJlbnRfZXJhXWAuAFUBVGhlIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4gQW55IGFjY291bnQgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiwgZXZlbiBpZnRpdCBpcyBub3Qgb25lIG9mIHRoZSBzdGFrZXJzLgBJAVRoZSByZXdhcmQgcGF5b3V0IGNvdWxkIGJlIHBhZ2VkIGluIGNhc2UgdGhlcmUgYXJlIHRvbyBtYW55IG5vbWluYXRvcnMgYmFja2luZyB0aGVdAWB2YWxpZGF0b3Jfc3Rhc2hgLiBUaGlzIGNhbGwgd2lsbCBwYXlvdXQgdW5wYWlkIHBhZ2VzIGluIGFuIGFzY2VuZGluZyBvcmRlci4gVG8gY2xhaW0gYbRzcGVjaWZpYyBwYWdlLCB1c2UgYHBheW91dF9zdGFrZXJzX2J5X3BhZ2VgLmAA8ElmIGFsbCBwYWdlcyBhcmUgY2xhaW1lZCwgaXQgcmV0dXJucyBhbiBlcnJvciBgSW52YWxpZFBhZ2VgLhhyZWJvbmQEARR2YWx1ZVEBATBCYWxhbmNlT2Y8VD4AEwzcUmVib25kIGEgcG9ydGlvbiBvZiB0aGUgc3Rhc2ggc2NoZWR1bGVkIHRvIGJlIHVubG9ja2VkLgDUVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSB0aGUgY29udHJvbGxlci4ocmVhcF9zdGFzaAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyABRIXQFSZW1vdmUgYWxsIGRhdGEgc3RydWN0dXJlcyBjb25jZXJuaW5nIGEgc3Rha2VyL3N0YXNoIG9uY2UgaXQgaXMgYXQgYSBzdGF0ZSB3aGVyZSBpdCBjYW4FAWJlIGNvbnNpZGVyZWQgYGR1c3RgIGluIHRoZSBzdGFraW5nIHN5c3RlbS4gVGhlIHJlcXVpcmVtZW50cyBhcmU6AC0BMS4gdGhlIGB0b3RhbF9iYWxhbmNlYCBvZiB0aGUgc3Rhc2ggaXMgYmVsb3cgYG1pbl9jaGlsbGVkX2JvbmRgIG9yIGlzIHplcm8uOQEyLiBvciwgdGhlIGBsZWRnZXIudG90YWxgIG9mIHRoZSBzdGFzaCBpcyBiZWxvdyBgbWluX2NoaWxsZWRfYm9uZGAgb3IgaXMgemVyby4AVQFUaGUgZm9ybWVyIGNhbiBoYXBwZW4gaW4gY2FzZXMgbGlrZSBhIHNsYXNoOyB0aGUgbGF0dGVyIHdoZW4gYSBmdWxseSB1bmJvbmRlZCBhY2NvdW50CQFpcyBzdGlsbCByZWNlaXZpbmcgc3Rha2luZyByZXdhcmRzIGluIGBSZXdhcmREZXN0aW5hdGlvbjo6U3Rha2VkYC4AMQFJdCBjYW4gYmUgY2FsbGVkIGJ5IGFueW9uZSwgYXMgbG9uZyBhcyBgc3Rhc2hgIG1lZXRzIHRoZSBhYm92ZSByZXF1aXJlbWVudHMuANxSZWZ1bmRzIHRoZSB0cmFuc2FjdGlvbiBmZWVzIHVwb24gc3VjY2Vzc2Z1bCBleGVjdXRpb24uADQjIyBQYXJhbWV0ZXJzAKgtIGBzdGFzaGA6IFRoZSBzdGFzaCBhY2NvdW50IHRvIGJlIHJlYXBlZC49AS0gYG51bV9zbGFzaGluZ19zcGFuc2A6ICoqRGVwcmVjYXRlZCoqLiBUaGlzIHBhcmFtZXRlciBpcyByZXRhaW5lZCBmb3IgYmFja3dhcmSsY29tcGF0aWJpbGl0eS4gSXQgbm8gbG9uZ2VyIGhhcyBhbnkgZWZmZWN0LhBraWNrBAEMd2hvxQYBZFZlYzxBY2NvdW50SWRMb29rdXBPZjxUPj4AFSzgUmVtb3ZlIHRoZSBnaXZlbiBub21pbmF0aW9ucyBmcm9tIHRoZSBjYWxsaW5nIHZhbGlkYXRvci4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgBNAS0gYHdob2A6IEEgbGlzdCBvZiBub21pbmF0b3Igc3Rhc2ggYWNjb3VudHMgd2hvIGFyZSBub21pbmF0aW5nIHRoaXMgdmFsaWRhdG9yIHdoaWNowCAgc2hvdWxkIG5vIGxvbmdlciBiZSBub21pbmF0aW5nIHRoaXMgdmFsaWRhdG9yLgBVAU5vdGU6IE1ha2luZyB0aGlzIGNhbGwgb25seSBtYWtlcyBzZW5zZSBpZiB5b3UgZmlyc3Qgc2V0IHRoZSB2YWxpZGF0b3IgcHJlZmVyZW5jZXMgdG94YmxvY2sgYW55IGZ1cnRoZXIgbm9taW5hdGlvbnMuTHNldF9zdGFraW5nX2NvbmZpZ3MgAUhtaW5fbm9taW5hdG9yX2JvbmTVBgFYQ29uZmlnT3A8QmFsYW5jZU9mPFQ+PgABSG1pbl92YWxpZGF0b3JfYm9uZNUGAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFMbWF4X25vbWluYXRvcl9jb3VudNkGATRDb25maWdPcDx1MzI+AAFMbWF4X3ZhbGlkYXRvcl9jb3VudNkGATRDb25maWdPcDx1MzI+AAE8Y2hpbGxfdGhyZXNob2xk3QYBRENvbmZpZ09wPFBlcmNlbnQ+AAE4bWluX2NvbW1pc3Npb27hBgFEQ29uZmlnT3A8UGVyYmlsbD4AAUhtYXhfc3Rha2VkX3Jld2FyZHPdBgFEQ29uZmlnT3A8UGVyY2VudD4AAWBhcmVfbm9taW5hdG9yc19zbGFzaGFibGXlBgE4Q29uZmlnT3A8Ym9vbD4AFkSsVXBkYXRlIHRoZSB2YXJpb3VzIHN0YWtpbmcgY29uZmlndXJhdGlvbnMgLgAlASogYG1pbl9ub21pbmF0b3JfYm9uZGA6IFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIG5lZWRlZCB0byBiZSBhIG5vbWluYXRvci4lASogYG1pbl92YWxpZGF0b3JfYm9uZGA6IFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIG5lZWRlZCB0byBiZSBhIHZhbGlkYXRvci5VASogYG1heF9ub21pbmF0b3JfY291bnRgOiBUaGUgbWF4IG51bWJlciBvZiB1c2VycyB3aG8gY2FuIGJlIGEgbm9taW5hdG9yIGF0IG9uY2UuIFdoZW6YICBzZXQgdG8gYE5vbmVgLCBubyBsaW1pdCBpcyBlbmZvcmNlZC5VASogYG1heF92YWxpZGF0b3JfY291bnRgOiBUaGUgbWF4IG51bWJlciBvZiB1c2VycyB3aG8gY2FuIGJlIGEgdmFsaWRhdG9yIGF0IG9uY2UuIFdoZW6YICBzZXQgdG8gYE5vbmVgLCBubyBsaW1pdCBpcyBlbmZvcmNlZC5ZASogYGNoaWxsX3RocmVzaG9sZGA6IFRoZSByYXRpbyBvZiBgbWF4X25vbWluYXRvcl9jb3VudGAgb3IgYG1heF92YWxpZGF0b3JfY291bnRgIHdoaWNoGQEgIHNob3VsZCBiZSBmaWxsZWQgaW4gb3JkZXIgZm9yIHRoZSBgY2hpbGxfb3RoZXJgIHRyYW5zYWN0aW9uIHRvIHdvcmsuYQEqIGBtaW5fY29tbWlzc2lvbmA6IFRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgZWFjaCB2YWxpZGF0b3JzIG11c3QgbWFpbnRhaW4uVQEgIFRoaXMgaXMgY2hlY2tlZCBvbmx5IHVwb24gY2FsbGluZyBgdmFsaWRhdGVgLiBFeGlzdGluZyB2YWxpZGF0b3JzIGFyZSBub3QgYWZmZWN0ZWQuAMRSdW50aW1lT3JpZ2luIG11c3QgYmUgUm9vdCB0byBjYWxsIHRoaXMgZnVuY3Rpb24uADUBTk9URTogRXhpc3Rpbmcgbm9taW5hdG9ycyBhbmQgdmFsaWRhdG9ycyB3aWxsIG5vdCBiZSBhZmZlY3RlZCBieSB0aGlzIHVwZGF0ZS4RAXRvIGtpY2sgcGVvcGxlIHVuZGVyIHRoZSBuZXcgbGltaXRzLCBgY2hpbGxfb3RoZXJgIHNob3VsZCBiZSBjYWxsZWQuLGNoaWxsX290aGVyBAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAF2hBAURlY2xhcmUgYSBgY29udHJvbGxlcmAgdG8gc3RvcCBwYXJ0aWNpcGF0aW5nIGFzIGVpdGhlciBhIHZhbGlkYXRvciBvciBub21pbmF0b3IuANhFZmZlY3RzIHdpbGwgYmUgZmVsdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGVyYS4AQQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXywgYnV0IGNhbiBiZSBjYWxsZWQgYnkgYW55b25lLgBZAUlmIHRoZSBjYWxsZXIgaXMgdGhlIHNhbWUgYXMgdGhlIGNvbnRyb2xsZXIgYmVpbmcgdGFyZ2V0ZWQsIHRoZW4gbm8gZnVydGhlciBjaGVja3MgYXJl2GVuZm9yY2VkLCBhbmQgdGhpcyBmdW5jdGlvbiBiZWhhdmVzIGp1c3QgbGlrZSBgY2hpbGxgLgBdAUlmIHRoZSBjYWxsZXIgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGNvbnRyb2xsZXIgYmVpbmcgdGFyZ2V0ZWQsIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczBtdXN0IGJlIG1ldDoAHQEqIGBjb250cm9sbGVyYCBtdXN0IGJlbG9uZyB0byBhIG5vbWluYXRvciB3aG8gaGFzIGJlY29tZSBub24tZGVjb2RhYmxlLAAMT3I6AD0BKiBBIGBDaGlsbFRocmVzaG9sZGAgbXVzdCBiZSBzZXQgYW5kIGNoZWNrZWQgd2hpY2ggZGVmaW5lcyBob3cgY2xvc2UgdG8gdGhlIG1heFUBICBub21pbmF0b3JzIG9yIHZhbGlkYXRvcnMgd2UgbXVzdCByZWFjaCBiZWZvcmUgdXNlcnMgY2FuIHN0YXJ0IGNoaWxsaW5nIG9uZS1hbm90aGVyLlkBKiBBIGBNYXhOb21pbmF0b3JDb3VudGAgYW5kIGBNYXhWYWxpZGF0b3JDb3VudGAgbXVzdCBiZSBzZXQgd2hpY2ggaXMgdXNlZCB0byBkZXRlcm1pbmWQICBob3cgY2xvc2Ugd2UgYXJlIHRvIHRoZSB0aHJlc2hvbGQuXQEqIEEgYE1pbk5vbWluYXRvckJvbmRgIGFuZCBgTWluVmFsaWRhdG9yQm9uZGAgbXVzdCBiZSBzZXQgYW5kIGNoZWNrZWQsIHdoaWNoIGRldGVybWluZXNRASAgaWYgdGhpcyBpcyBhIHBlcnNvbiB0aGF0IHNob3VsZCBiZSBjaGlsbGVkIGJlY2F1c2UgdGhleSBoYXZlIG5vdCBtZXQgdGhlIHRocmVzaG9sZEAgIGJvbmQgcmVxdWlyZWQuAFUBVGhpcyBjYW4gYmUgaGVscGZ1bCBpZiBib25kIHJlcXVpcmVtZW50cyBhcmUgdXBkYXRlZCwgYW5kIHdlIG5lZWQgdG8gcmVtb3ZlIG9sZCB1c2Vyc5h3aG8gZG8gbm90IHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLmhmb3JjZV9hcHBseV9taW5fY29tbWlzc2lvbgQBPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAAYEDkBQ2xhbXBzIGEgdmFsaWRhdG9yJ3MgY29tbWlzc2lvbiB0byB0aGUgYFtNaW5Db21taXNzaW9uLCBNYXhDb21taXNzaW9uXWAgcmFuZ2UuADkBTmFtZWQgYGZvcmNlX2FwcGx5X21pbl9jb21taXNzaW9uYCBmb3IgbGVnYWN5IHJlYXNvbnMg4oCUIGl0IGFsc28gZW5mb3JjZXMgdGhljG1heGltdW0uIEFueSBhY2NvdW50IGNhbiBjYWxsIHRoaXMuSHNldF9taW5fY29tbWlzc2lvbgQBDG5ldxkFARxQZXJiaWxsABkQJQFTZXRzIHRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgZWFjaCB2YWxpZGF0b3JzIG11c3QgbWFpbnRhaW4uAFkBVGhpcyBjYWxsIGhhcyBsb3dlciBwcml2aWxlZ2UgcmVxdWlyZW1lbnRzIHRoYW4gYHNldF9zdGFraW5nX2NvbmZpZ2AgYW5kIGNhbiBiZSBjYWxsZWTMYnkgdGhlIGBUOjpBZG1pbk9yaWdpbmAuIFJvb3QgY2FuIGFsd2F5cyBjYWxsIHRoaXMuWHBheW91dF9zdGFrZXJzX2J5X3BhZ2UMATx2YWxpZGF0b3Jfc3Rhc2gEATBUOjpBY2NvdW50SWQAAQxlcmE4ASBFcmFJbmRleAABEHBhZ2U4ARBQYWdlABpUMQFQYXkgb3V0IGEgcGFnZSBvZiB0aGUgc3Rha2VycyBiZWhpbmQgYSB2YWxpZGF0b3IgZm9yIHRoZSBnaXZlbiBlcmEgYW5kIHBhZ2UuAOgtIGB2YWxpZGF0b3Jfc3Rhc2hgIGlzIHRoZSBzdGFzaCBhY2NvdW50IG9mIHRoZSB2YWxpZGF0b3IuMQEtIGBlcmFgIG1heSBiZSBhbnkgZXJhIGJldHdlZW4gYFtjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGg7IGN1cnJlbnRfZXJhXWAuMQEtIGBwYWdlYCBpcyB0aGUgcGFnZSBpbmRleCBvZiBub21pbmF0b3JzIHRvIHBheSBvdXQgd2l0aCB2YWx1ZSBiZXR3ZWVuIDAgYW5ksCAgYG51bV9ub21pbmF0b3JzIC8gVDo6TWF4RXhwb3N1cmVQYWdlU2l6ZWAuAFUBVGhlIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4gQW55IGFjY291bnQgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiwgZXZlbiBpZnRpdCBpcyBub3Qgb25lIG9mIHRoZSBzdGFrZXJzLgA9AUlmIGEgdmFsaWRhdG9yIGhhcyBtb3JlIHRoYW4gW2BDb25maWc6Ok1heEV4cG9zdXJlUGFnZVNpemVgXSBub21pbmF0b3JzIGJhY2tpbmcpAXRoZW0sIHRoZW4gdGhlIGxpc3Qgb2Ygbm9taW5hdG9ycyBpcyBwYWdlZCwgd2l0aCBlYWNoIHBhZ2UgYmVpbmcgY2FwcGVkIGF0VQFbYENvbmZpZzo6TWF4RXhwb3N1cmVQYWdlU2l6ZWBdLiBJZiBhIHZhbGlkYXRvciBoYXMgbW9yZSB0aGFuIG9uZSBwYWdlIG9mIG5vbWluYXRvcnMsSQF0aGUgY2FsbCBuZWVkcyB0byBiZSBtYWRlIGZvciBlYWNoIHBhZ2Ugc2VwYXJhdGVseSBpbiBvcmRlciBmb3IgYWxsIHRoZSBub21pbmF0b3JzVQFiYWNraW5nIGEgdmFsaWRhdG9yIHRvIHJlY2VpdmUgdGhlIHJld2FyZC4gVGhlIG5vbWluYXRvcnMgYXJlIG5vdCBzb3J0ZWQgYWNyb3NzIHBhZ2VzYQFhbmQgc28gaXQgc2hvdWxkIG5vdCBiZSBhc3N1bWVkIHRoZSBoaWdoZXN0IHN0YWtlciB3b3VsZCBiZSBvbiB0aGUgdG9wbW9zdCBwYWdlIGFuZCB2aWNlSQF2ZXJzYS4gSWYgcmV3YXJkcyBhcmUgbm90IGNsYWltZWQgaW4gW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMsIHRoZXkgYXJlIGxvc3QuAEkBVGhlIHZhbGlkYXRvcidzIG93biByZXdhcmQgKGNvbW1pc3Npb24gKyBvd24tc3Rha2Ugc2hhcmUpIGlzIHByb3JhdGVkIGFjcm9zcyBwYWdlc0kBcHJvcG9ydGlvbmFsIHRvIGVhY2ggcGFnZSdzIHN0YWtlLiBUaGUgZnVsbCB2YWxpZGF0b3IgcmV3YXJkIGlzIHRoZSBzdW0gYWNyb3NzIGFsbBhwYWdlcy4wdXBkYXRlX3BheWVlBAEoY29udHJvbGxlcgQBMFQ6OkFjY291bnRJZAAbGOBNaWdyYXRlcyBhbiBhY2NvdW50J3MgYFJld2FyZERlc3RpbmF0aW9uOjpDb250cm9sbGVyYCB0b6RgUmV3YXJkRGVzdGluYXRpb246OkFjY291bnQoY29udHJvbGxlcilgLgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgAxAVRoaXMgd2lsbCB3YWl2ZSB0aGUgdHJhbnNhY3Rpb24gZmVlIGlmIHRoZSBgcGF5ZWVgIGlzIHN1Y2Nlc3NmdWxseSBtaWdyYXRlZC5oZGVwcmVjYXRlX2NvbnRyb2xsZXJfYmF0Y2gEASxjb250cm9sbGVyc+kGAfRCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgVDo6TWF4Q29udHJvbGxlcnNJbkRlcHJlY2F0aW9uQmF0Y2g+ABwcXQFVcGRhdGVzIGEgYmF0Y2ggb2YgY29udHJvbGxlciBhY2NvdW50cyB0byB0aGVpciBjb3JyZXNwb25kaW5nIHN0YXNoIGFjY291bnQgaWYgdGhleSBhcmVhAW5vdCB0aGUgc2FtZS4gSWdub3JlcyBhbnkgY29udHJvbGxlciBhY2NvdW50cyB0aGF0IGRvIG5vdCBleGlzdCwgYW5kIGRvZXMgbm90IG9wZXJhdGUgaWa4dGhlIHN0YXNoIGFuZCBjb250cm9sbGVyIGFyZSBhbHJlYWR5IHRoZSBzYW1lLgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgC0VGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIGBUOjpBZG1pbk9yaWdpbmAuOHJlc3RvcmVfbGVkZ2VyEAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAAUBtYXliZV9jb250cm9sbGVyjQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEsbWF5YmVfdG90YWxFBAFQT3B0aW9uPEJhbGFuY2VPZjxUPj4AATxtYXliZV91bmxvY2tpbmftBgEVAU9wdGlvbjxCb3VuZGVkVmVjPFVubG9ja0NodW5rPEJhbGFuY2VPZjxUPj4sIFQ6OgpNYXhVbmxvY2tpbmdDaHVua3M+PgAdLAUBUmVzdG9yZXMgdGhlIHN0YXRlIG9mIGEgbGVkZ2VyIHdoaWNoIGlzIGluIGFuIGluY29uc2lzdGVudCBzdGF0ZS4A3FRoZSByZXF1aXJlbWVudHMgdG8gcmVzdG9yZSBhIGxlZGdlciBhcmUgdGhlIGZvbGxvd2luZzpkKiBUaGUgc3Rhc2ggaXMgYm9uZGVkOyBvcg0BKiBUaGUgc3Rhc2ggaXMgbm90IGJvbmRlZCBidXQgaXQgaGFzIGEgc3Rha2luZyBsb2NrIGxlZnQgYmVoaW5kOyBvciUBKiBJZiB0aGUgc3Rhc2ggaGFzIGFuIGFzc29jaWF0ZWQgbGVkZ2VyIGFuZCBpdHMgc3RhdGUgaXMgaW5jb25zaXN0ZW50OyBvch0BKiBJZiB0aGUgbGVkZ2VyIGlzIG5vdCBjb3JydXB0ZWQgKmJ1dCogaXRzIHN0YWtpbmcgbG9jayBpcyBvdXQgb2Ygc3luYy4AYQFUaGUgYG1heWJlXypgIGlucHV0IHBhcmFtZXRlcnMgd2lsbCBvdmVyd3JpdGUgdGhlIGNvcnJlc3BvbmRpbmcgZGF0YSBhbmQgbWV0YWRhdGEgb2YgdGhlWQFsZWRnZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdGFzaC4gSWYgdGhlIGlucHV0IHBhcmFtZXRlcnMgYXJlIG5vdCBzZXQsIHRoZSBsZWRnZXIgd2lsbJBiZSByZXNldCB2YWx1ZXMgZnJvbSBvbi1jaGFpbiBzdGF0ZS5AbWlncmF0ZV9jdXJyZW5jeQQBFHN0YXNoBAEwVDo6QWNjb3VudElkAB4c2E1pZ3JhdGVzIHBlcm1pc3Npb25sZXNzbHkgYSBzdGFzaCBmcm9tIGxvY2tzIHRvIGhvbGRzLgBJAVRoaXMgcmVtb3ZlcyB0aGUgb2xkIGxvY2sgb24gdGhlIHN0YWtlIGFuZCBjcmVhdGVzIGEgaG9sZCBvbiBpdCBhdG9taWNhbGx5LiBJZiBhbGxhAXN0YWtlIGNhbm5vdCBiZSBoZWxkLCB0aGUgYmVzdCBlZmZvcnQgaXMgbWFkZSB0byBob2xkIGFzIG11Y2ggYXMgcG9zc2libGUuIFRoZSByZW1haW5pbmeEc3Rha2UgaXMgcmVtb3ZlZCBmcm9tIHRoZSBsZWRnZXIuAMRUaGUgZmVlIGlzIHdhaXZlZCBpZiB0aGUgbWlncmF0aW9uIGlzIHN1Y2Nlc3NmdWwuLGFwcGx5X3NsYXNoCAEkc2xhc2hfZXJhOAEgRXJhSW5kZXgAASRzbGFzaF9rZXn9BgFwKFQ6OkFjY291bnRJZCwgUGVyYmlsbCwgdTMyKQAfhB0BTWFudWFsbHkgYW5kIHBlcm1pc3Npb25sZXNzbHkgYXBwbGllcyBhIGRlZmVycmVkIHNsYXNoIGZvciBhIGdpdmVuIGVyYS4AXQFOb3JtYWxseSwgc2xhc2hlcyBhcmUgYXV0b21hdGljYWxseSBhcHBsaWVkIHNob3J0bHkgYWZ0ZXIgdGhlIHN0YXJ0IG9mIHRoZSBgc2xhc2hfZXJhYC5ZAVRoZSBhdXRvbWF0aWMgYXBwbGljYXRpb24gb2Ygc2xhc2hlcyBpcyBoYW5kbGVkIGJ5IHRoZSBwYWxsZXQncyBpbnRlcm5hbCBsb2dpYywgYW5kIGl0zHRyaWVzIHRvIGFwcGx5IG9uZSBzbGFzaCBwYWdlIHBlciBibG9jayBvZiB0aGUgZXJhLlUBSWYgZm9yIHNvbWUgcmVhc29uLCBvbmUgZXJhIGlzIG5vdCBlbm91Z2ggZm9yIGFwcGx5aW5nIGFsbCBzbGFzaCBwYWdlcywgdGhlIHJlbWFpbmluZ9xzbGFzaGVzIG5lZWQgdG8gYmUgbWFudWFsbHkgKHBlcm1pc3Npb25sZXNzbHkpIGFwcGxpZWQuAEkBRm9yIGEgZ2l2ZW4gZXJhIHgsIGlmIGF0IGVyYSB4KzEsIHNsYXNoZXMgYXJlIHN0aWxsIHVuYXBwbGllZCwgYWxsIHdpdGhkcmF3YWxzIGdldCEBYmxvY2tlZCwgYW5kIHRoZXNlIG5lZWQgdG8gYmUgbWFudWFsbHkgYXBwbGllZCBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uTQFUaGlzIGZ1bmN0aW9uIGV4aXN0cyBhcyBhICoqZmFsbGJhY2sgbWVjaGFuaXNtKiogZm9yIHRoaXMgZXh0cmVtZSBzaXR1YXRpb24sIGJ1dCB3ZcxuZXZlciBleHBlY3QgdG8gZW5jb3VudGVyIHRoaXMgaW4gbm9ybWFsIHNjZW5hcmlvcy4AYQFUaGUgcGFyYW1ldGVycyBmb3IgdGhpcyBjYWxsIGNhbiBiZSBxdWVyaWVkIGJ5IGxvb2tpbmcgYXQgdGhlIGBVbmFwcGxpZWRTbGFzaGVzYCBzdG9yYWdljGZvciBlcmFzIG9sZGVyIHRoYW4gdGhlIGFjdGl2ZSBlcmEuADQjIyBQYXJhbWV0ZXJzLQEtIGBzbGFzaF9lcmFgOiBUaGUgc3Rha2luZyBlcmEgaW4gd2hpY2ggdGhlIHNsYXNoIHdhcyBvcmlnaW5hbGx5IHNjaGVkdWxlZC4lAS0gYHNsYXNoX2tleWA6IEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzbGFzaCwgcmVwcmVzZW50ZWQgYXMgYSB0dXBsZTr4ICAtIGBzdGFzaGA6IFRoZSBzdGFzaCBhY2NvdW50IG9mIHRoZSB2YWxpZGF0b3IgYmVpbmcgc2xhc2hlZC4FASAgLSBgc2xhc2hfZnJhY3Rpb25gOiBUaGUgZnJhY3Rpb24gb2YgdGhlIHN0YWtlIHRoYXQgd2FzIHNsYXNoZWQuBQEgIC0gYHBhZ2VfaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIGV4cG9zdXJlIHBhZ2UgYmVpbmcgcHJvY2Vzc2VkLgAsIyMgQmVoYXZpb3LoLSBUaGUgZnVuY3Rpb24gaXMgKipwZXJtaXNzaW9ubGVzcyoq4oCUYW55b25lIGNhbiBjYWxsIGl0LvAtIFRoZSBgc2xhc2hfZXJhYCAqKm11c3QgYmUgdGhlIGN1cnJlbnQgZXJhIG9yIGEgcGFzdCBlcmEqKi5sSWYgaXQgaXMgaW4gdGhlIGZ1dHVyZSwgdGhliCAgY2FsbCBmYWlscyB3aXRoIGBFcmFOb3RTdGFydGVkYC7kLSBUaGUgZmVlIGlzIHdhaXZlZCBpZiB0aGUgc2xhc2ggaXMgc3VjY2Vzc2Z1bGx5IGFwcGxpZWQuAFQjIyBGdXR1cmUgSW1wcm92ZW1lbnRhAS0gSW1wbGVtZW50IGFuICoqb2ZmLWNoYWluIHdvcmtlciAoT0NXKSB0YXNrKiogdG8gYXV0b21hdGljYWxseSBhcHBseSBzbGFzaGVzIHdoZW4gdGhlcmW4ICBpcyB1bnVzZWQgYmxvY2sgc3BhY2UsIGltcHJvdmluZyBlZmZpY2llbmN5LjhwcnVuZV9lcmFfc3RlcAQBDGVyYTgBIEVyYUluZGV4ACAsYQFQZXJmb3JtIG9uZSBzdGVwIG9mIGVyYSBwcnVuaW5nIHRvIHByZXZlbnQgUG9WIHNpemUgZXhoYXVzdGlvbiBmcm9tIHVuYm91bmRlZCBkZWxldGlvbnMuADEBVGhpcyBleHRyaW5zaWMgZW5hYmxlcyBwZXJtaXNzaW9ubGVzcyBsYXp5IHBydW5pbmcgb2YgZXJhIGRhdGEgYnkgcGVyZm9ybWluZy0BaW5jcmVtZW50YWwgZGVsZXRpb24gb2Ygc3RvcmFnZSBpdGVtcy4gRWFjaCBjYWxsIHByb2Nlc3NlcyBhIGxpbWl0ZWQgbnVtYmVyJQFvZiBpdGVtcyBiYXNlZCBvbiBhdmFpbGFibGUgYmxvY2sgd2VpZ2h0IHRvIGF2b2lkIGV4Y2VlZGluZyBibG9jayBsaW1pdHMuADUBUmV0dXJucyBgUGF5czo6Tm9gIHdoZW4gd29yayBpcyBwZXJmb3JtZWQgdG8gaW5jZW50aXZpemUgcmVndWxhciBtYWludGVuYW5jZS4FAUFueW9uZSBjYW4gY2FsbCB0aGlzIHRvIGhlbHAgbWFpbnRhaW4gdGhlIGNoYWluJ3Mgc3RvcmFnZSBoZWFsdGguAA0BVGhlIGVyYSBtdXN0IGJlIGVsaWdpYmxlIGZvciBwcnVuaW5nIChvbGRlciB0aGFuIEhpc3RvcnlEZXB0aCArIDEpLjkBQ2hlY2sgYEVyYVBydW5pbmdTdGF0ZWAgc3RvcmFnZSB0byBzZWUgaWYgYW4gZXJhIG5lZWRzIHBydW5pbmcgYmVmb3JlIGNhbGxpbmcuSHNldF9tYXhfY29tbWlzc2lvbgQBDG5ldxkFARxQZXJiaWxsACEM0FNldHMgdGhlIG1heGltdW0gY29tbWlzc2lvbiB0aGF0IHZhbGlkYXRvcnMgY2FuIHNldC4AtFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBgVDo6QWRtaW5PcmlnaW5gLqRzZXRfdmFsaWRhdG9yX3NlbGZfc3Rha2VfaW5jZW50aXZlX2NvbmZpZwwBSG9wdGltdW1fc2VsZl9zdGFrZdUGAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFMaGFyZF9jYXBfc2VsZl9zdGFrZdUGAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFcc2VsZl9zdGFrZV9zbG9wZV9mYWN0b3LhBgFEQ29uZmlnT3A8UGVyYmlsbD4AIhTgQ29uZmlndXJlIHRoZSB2YWxpZGF0b3Igc2VsZi1zdGFrZSBpbmNlbnRpdmUgcGFyYW1ldGVycy4AtFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBgVDo6QWRtaW5PcmlnaW5gLgABAUNoYW5nZXMgdGFrZSBlZmZlY3QgaW4gdGhlIG5leHQgZXJhIHdoZW4gcmV3YXJkcyBhcmUgY2FsY3VsYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuuQYIUHBhbGxldF9zdGFraW5nX2FzeW5jRFJld2FyZERlc3RpbmF0aW9uBCRBY2NvdW50SWQBBAEUGFN0YWtlZAAAABRTdGFzaAABAChDb250cm9sbGVyAAIAHEFjY291bnQEAAQBJEFjY291bnRJZAADABBOb25lAAQAAL0GCFBwYWxsZXRfc3Rha2luZ19hc3luYzhWYWxpZGF0b3JQcmVmcwAACAEoY29tbWlzc2lvbsEGARxQZXJiaWxsAAEcYmxvY2tlZFkBARBib29sAADBBgAABhkFAMUGAAACAADJBgw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcmNlbnQAAAQADAEIdTgAAM0GAAAC0QYA0QYAAAQIBBkFANUGEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUAVUBAQwQTm9vcAAAAAxTZXQEAFUBAQRUAAEAGFJlbW92ZQACAADZBhBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldCBDb25maWdPcAQEVAE4AQwQTm9vcAAAAAxTZXQEADgBBFQAAQAYUmVtb3ZlAAIAAN0GEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUAckGAQwQTm9vcAAAAAxTZXQEAMkGAQRUAAEAGFJlbW92ZQACAADhBhBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldCBDb25maWdPcAQEVAEZBQEMEE5vb3AAAAAMU2V0BAAZBQEEVAABABhSZW1vdmUAAgAA5QYQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQgQ29uZmlnT3AEBFQBWQEBDBBOb29wAAAADFNldAQAWQEBBFQAAQAYUmVtb3ZlAAIAAOkGDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAF0BARhWZWM8VD4AAO0GBBhPcHRpb24EBFQB8QYBCBBOb25lAAAAEFNvbWUEAPEGAAABAADxBgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAfUGBFMAAAQA+QYBGFZlYzxUPgAA9QYMUHBhbGxldF9zdGFraW5nX2FzeW5jGGxlZGdlcixVbmxvY2tDaHVuawQcQmFsYW5jZQFVAQAIARR2YWx1ZVEBARxCYWxhbmNlAAEMZXJhYAEgRXJhSW5kZXgAAPkGAAAC9QYA/QYAAAQMBBkFOAABBwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchhwYWxsZXQQQ2FsbAQEVAABEFRpbml0aWFsaXplX3Jpbmdfcm9vdHMIATRyaW5nX2V4cG9uZW50BQcBMFJpbmdFeHBvbmVudAABFHJvb3RzCQcBXFJpbmdSb290VXBkYXRlc0JhdGNoPFQ+AAAgRQFTdG9yZXMgdGhlIGluaXRpYWwgcmluZyByb290cyByZWNlaXZlZCBmcm9tIHRoZSBub3RpZmllciB1cG9uIHN1YnNjcmlwdGlvbiBzdGFydC5BAUFjY2VwdHMgbXVsdGktcGFydCBjb250aW51YXRpb25zIChzYW1lIHNlcXVlbmNlKS4gUmVqZWN0cyBjYWxscyB3aXRoIGEgZGlmZmVyZW50UQFzZXF1ZW5jZSB3aGlsZSBzdWJzY3JpcHRpb24gaXMgYEFjdGl2ZWAg4oCUIGEgc3Vic2NyaXB0aW9uIG11c3QgYmUgdGVybWluYXRlZCBmaXJzdC4dAUNhbiBvbmx5IGJlIGNhbGxlZCBieSBub3RpZmllciBYQ00gb3JpZ2luICh2aWEgYEVuc3VyZU5vdGlmaWVyT3JpZ2luYCkuADQjIyBQYXJhbWV0ZXJzgC0gYG9yaWdpbmA6IE5vdGlmaWVyIFhDTSBvcmlnaW4unC0gYHJvb3RzYDogSW5pdGlhbCBiYXRjaCBvZiByaW5nIHJvb3RzLlBwcm9jZXNzX3JpbmdfdXBkYXRlcwQBFGJhdGNoCQcBXFJpbmdSb290VXBkYXRlc0JhdGNoPFQ+AAEU2FByb2Nlc3MgcmluZyByb290cyB1cGRhdGVzIHJlY2VpdmVkIGZyb20gdGhlIG5vdGlmaWVyLgA0IyMgUGFyYW1ldGVyc9QtIGBvcmlnaW5gOiBNdXN0IGJlIHRoZSBYQ00gb3JpZ2luIGZyb20gdGhlIG5vdGlmaWVyLsQtIGBiYXRjaGA6IEJhdGNoIG9mIHJpbmcgcm9vdCB1cGRhdGVzIHRvIHByb2Nlc3MuWHRlcm1pbmF0ZV9zdWJzY3JpcHRpb24AAihwVGVybWluYXRlcyB0aGUgc3Vic2NyaXB0aW9uLgAtAUFjY2VwdHMgZWl0aGVyIG5vdGlmaWVyIG9yaWdpbiAoYEVuc3VyZU5vdGlmaWVyT3JpZ2luYCkgb3IgbG9jYWwgZ292ZXJuYW5jZRUBb3JpZ2luIChgRW5zdXJlVGVybWluYXRpb25PcmlnaW5gKS4gV2hlbiBjYWxsZWQgbG9jYWxseSwgc2VuZHMgYW4gWENNLQF1bnN1YnNjcmliZSBtZXNzYWdlIHRvIHRoZSBub3RpZmllci4gV2hlbiBjYWxsZWQgZnJvbSB0aGUgbm90aWZpZXIgKGUuZy4gb24NAWdvdmVybmFuY2UgdW5zdWJzY3JpYmUpLCBubyBYQ00gaXMgc2VudCBiYWNrLiBJZGVtcG90ZW50IGlmIGFscmVhZHksdGVybWluYXRlZC4ANCMjIFBhcmFtZXRlcnPoLSBgb3JpZ2luYDogTm90aWZpZXIgWENNIG9yaWdpbiBvciByb290L2dvdmVybmFuY2Ugb3JpZ2luLlByZXBsYXlfbWlzc2luZ19yb290cwgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEcaW5kaWNlcyEHAdhCb3VuZGVkVmVjPFJpbmdJbmRleCwgVDo6TWF4TWlzc2luZ1Jvb3RzUGVyQ29sbGVjdGlvbj4AAxT0U2VuZHMgcmVwbGF5IHJlcXVlc3RzIHRvIHRoZSBub3RpZmllciBmb3IgbWlzc2luZyByaW5nIHJvb3RzLgAhAVN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyIGFzIGFuIGF1dGhvcml6ZWQgdHJhbnNhY3Rpb24uIFZhbGlkYXRlcykBdGhhdCB0aGUgc3Vic2NyaXB0aW9uIGlzIGFjdGl2ZSBhbmQgdGhhdCB0aGUgcHJvdmlkZWQgaW5kaWNlcyBhcmUgYWN0dWFsbHmsbWlzc2luZyBiZWZvcmUgc2VuZGluZyBYQ00gcmVwbGF5IHJlcXVlc3RzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4FBxA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eTBSaW5nRXhwb25lbnQAAQwQUjJlOQAJABRSMmUxMAAKABRSMmUxNAAOAAAJBww0aW5kaXZfc3VwcG9ydGxtZW1iZXJzX25vdGlmaWVyX3N1YnNjcmliZXJQUmluZ1Jvb3RVcGRhdGVzQmF0Y2gEBFQAABQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEgc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgABLHNvdXJjZV90aW1lKAEMdTY0AAEcdXBkYXRlcw0HAdBCb3VuZGVkVmVjPFJpbmdSb290VXBkYXRlPFQ+LCBUOjpNYXhVcGRhdGVzUGVyQmF0Y2g+AAE8bmV4dF9yaW5nX2luZGV4OAEMdTMyAAANBwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAREHBFMAAAQAHQcBGFZlYzxUPgAAEQcMNGluZGl2X3N1cHBvcnRsbWVtYmVyc19ub3RpZmllcl9zdWJzY3JpYmVyOFJpbmdSb290VXBkYXRlBARUAAAIAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEIb3AVBwFgUmluZ1Jvb3RPcDxNZW1iZXJzT2Y8VD4+AAAVBww0aW5kaXZfc3VwcG9ydGxtZW1iZXJzX25vdGlmaWVyX3N1YnNjcmliZXIoUmluZ1Jvb3RPcAQEUgEZBwEIFEJ1aWx0CAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEQcm9vdBkHAQRSAAAAHERlbGV0ZWQAAQAAGQcMKHZlcmlmaWFibGUQcmluZ0RNZW1iZXJzQ29tbWl0bWVudAADAAMAAAwAHQcAAAIRBwAhBwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATgEUwAABAA9BAEYVmVjPFQ+AAAlBwxsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzGHBhbGxldBBDYWxsBARUAAEYRHNldF9hbGlhc19hY2NvdW50CAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABNGNhbGxfdmFsaWRfYXQoAQx1NjQAADCATGluayBhbiBhY2NvdW50IHRvIGEgcmluZyBhbGlhcy4APQFUaGUgb3JpZ2luIG11c3QgYmUgYE9yaWdpbjo6UmluZ0FsaWFzYCAoc2V0IGJ5IHRoZSBgV2l0aFByb29mYCBvciBgV2l0aEFjY291bnRgTQFleHRlbnNpb24gdmFyaWFudCkuIE9uIHN1Y2Nlc3MsIHRoZSBhY2NvdW50IGNhbiB1c2UgYFdpdGhBY2NvdW50KG5vbmNlKWAgZm9yIGZ1dHVyZTR0cmFuc2FjdGlvbnMuAC0BVGhpcyB0cmFuc2FjdGlvbiBpcyByZWZ1bmRlZCBpZiBzdWNjZXNzZnVsIGFuZCBubyBhbGlhcyB3YXMgcHJldmlvdXNseSBzZXQsjG9yIGlmIGEgcmV2aXNpb24gdXBkYXRlIHdhcyBuZWVkZWQuADQjIyBQYXJhbWV0ZXJzuC0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byBsaW5rIHRvIHRoZSBhbGlhcy4lAS0gYGNhbGxfdmFsaWRfYXRgOiBVbml4IHRpbWVzdGFtcCAoc2Vjb25kcykgd2hlbiB0aGlzIGNhbGwgYmVjb21lcyB2YWxpZC5MdW5zZXRfYWxpYXNfYWNjb3VudAABBCkBUmVtb3ZlIHRoZSBtYXBwaW5nIGZyb20gYSBwYXJ0aWN1bGFyIHJpbmcgYWxpYXMgdG8gaXRzIHJlZ2lzdGVyZWQgYWNjb3VudC5Yc2V0X3BhaWRfYWxpYXNfYWNjb3VudBQBFHByb29mKQcBKFByb29mT2Y8VD4AAShjb2xsZWN0aW9uCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAATRyaW5nX3JldmlzaW9uOAE0UmV2aXNpb25JbmRleAABHGNvbnRleHQIARxDb250ZXh0AAM0AQFMaW5rIGFuIGFjY291bnQgdG8gYSByaW5nIGFsaWFzIHVuZGVyIGEgY29udGV4dCB0aGF0IGlzICpub3QqIGlu2FtgQ29uZmlnOjpBY2NvdW50Q29udGV4dHNgXSwgb24gcGF5bWVudCBvZiBhIFBHQVMgZmVlLgA1AVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQ7IHRoZSBzaWduZXIgYmVjb21lcyB0aGUgYm91bmQgYWNjb3VudC4gVGhlIFBHQVMgZmVlSQEoW2BQYWlkQWxpYXNGZWVgXSkgaXMgYnVybmVkIGZyb20gdGhlIHNpZ25lcidzIFBHQVMgYmFsYW5jZS4gVGhlIGFsaWFzIG11c3QgdmVyaWZ5QQFhZ2FpbnN0IHRoZSBzdXBwbGllZCBgY29sbGVjdGlvbmAvYHJpbmdfaW5kZXhgL2ByaW5nX3JldmlzaW9uYCBpbiBgY29udGV4dGAuIFRoZbxjb2xsZWN0aW9uIG11c3Qgc3RpbGwgYmUgUGVvcGxlIG9yIFBlb3BsZSBMaXRlLgBJAUlmIGEgZGlmZmVyZW50IGFjY291bnQgaXMgYWxyZWFkeSBib3VuZCB0byB0aGUgc2FtZSBhbGlhcyB1bmRlciB0aGlzIGNvbnRleHQsIHRoYXT4bWFwcGluZyBpcyBkcm9wcGVkIGFuZCB0aGUgc3dhcCBpcyBwYWlkIGZvciBieSB0aGUgbmV3IHNpZ25lci4APQFSZS1wcm92aW5nIHRoZSBzYW1lIHBhaWQgYWxpYXMgdW5kZXIgYSBmcmVzaGVyIHJpbmcgcmV2aXNpb24gc2hvdWxkIGluc3RlYWQgdXNlxFtgUGFsbGV0OjpyZXByb3ZlX2FsaWFzX2FjY291bnRgXSwgd2hpY2ggaXMgZnJlZS5UcmVwcm92ZV9hbGlhc19hY2NvdW50DAEUcHJvb2YpBwEoUHJvb2ZPZjxUPgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAATRyaW5nX3JldmlzaW9uOAE0UmV2aXNpb25JbmRleAAEJE0BUmUtcHJvdmUgdGhlIGhvbGRlcidzICpwYWlkKiBhbGlhcyBhZ2FpbnN0IGEgZnJlc2hlciByaW5nIHJldmlzaW9uLCBmcmVlIG9mIGNoYXJnZS4AJQFUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkIGFuZCBtdXN0IGFscmVhZHkgaG9sZCBhIHBhaWQgYWxpYXMgbWFwcGluZy4gVGhlGQFwcm9vZiBpcyB2ZXJpZmllZCBhZ2FpbnN0IHRoZSBzdG9yZWQgY29udGV4dDsgdGhlIHJlc3VsdGluZyBhbGlhcyBtdXN0EQFtYXRjaCB0aGUgc3RvcmVkIGFsaWFzLiBPbmx5IHRoZSBgcmV2aXNpb25gIGFuZCBgcmluZ2AgZmllbGRzIG9mIHRoZREBc3RvcmVkIG1hcHBpbmcgY2hhbmdlOyBjb2xsZWN0aW9uLCBjb250ZXh0LCBhbmQgYWxpYXMgYXJlIHByZXNlcnZlZC4AOQFUaGlzIGNhbGwgaXMgcmVzdHJpY3RlZCB0byBwYWlkIGFsaWFzZXMg4oCUIGZyZWUgKHdoaXRlbGlzdGVkLWNvbnRleHQpIGFsaWFzZXMRAWNvbnRpbnVlIHRvIHVzZSB0aGUgYFdpdGhBY2NvdW50UmV2aXNlZGAgdHJhbnNhY3Rpb24tZXh0ZW5zaW9uIHBhdGguSHNldF9wYWlkX2FsaWFzX2ZlZQQBDGZlZVUBATBCYWxhbmNlT2Y8VD4ABRT8U2V0IHRoZSBQR0FTIGZlZSBjaGFyZ2VkIGJ5IFtgUGFsbGV0OjpzZXRfcGFpZF9hbGlhc19hY2NvdW50YF0uABUBT3JpZ2luIG11c3QgYmUgW2BDb25maWc6OkZlZU1hbmFnZXJPcmlnaW5gXS4gVGhlIG5ldyBmZWUgcmVwbGFjZXMgdGhl/HByZXZpb3VzIHZhbHVlIChpZiBhbnkpLiBUaGVyZSBpcyBubyBtaW5pbXVtIOKAlCBzZXQgdG8gemVybyB0b/hlZmZlY3RpdmVseSBkaXNhYmxlIHRoZSBidXJuIHdoaWxlIGtlZXBpbmcgdGhlIHBhaWQgcGF0aCBvcGVuLlBjbGVhbl91cF9zdGFsZV9hbGlhcwgBKGNvbGxlY3Rpb24IAShJZGVudGlmaWVyAAEIY2HxAwE8Q29udGV4dHVhbEFsaWFzAAIopFJlbW92ZSBhIHN0YWxlIGFsaWFzIDwtPiBhY2NvdW50IG1hcHBpbmcuALhBbnlvbmUgY2FuIGNhbGwgdGhpcy4gQSBtYXBwaW5nIGlzIHN0YWxlIHdoZW46TQExLiBUaGUgYWxpYXMncyBjb250ZXh0IGlzIG5vIGxvbmdlciBpbiB0aGUgYWxsb3dlZCBzZXQgKFtDb25maWc6OkFjY291bnRDb250ZXh0c10pLkkBMi4gVGhlIHJpbmcgcmV2aXNpb24gbm8gbG9uZ2VyIG1hdGNoZXMgdGhlIGFjY291bnQgYWxpYXMgKGkuZS4sIHJpbmcgd2FzIHJlYnVpbHQpLrgzLiBUaGUgYWNjb3VudCBhbGlhcyByZWZlcnMgdG8gYSBkZWxldGVkIHJpbmcuAE0BRm9yIDEgYW5kIDIsIHRoZSBtYXBwaW5nIGlzIG9ubHkgY29uc2lkZXJlZCBzdGFsZSBhZnRlciBhIGdyYWNlIHBlcmlvZCBoYXMgZWxhcHNlZC4ACQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHJlZnVuZGVkIG9uIHN1Y2Nlc3MgdG8gaW5jZW50aXZpemUgY2xlYW51cC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKQcAAAMUAwAADAAtBwxEaW5kaXZfcGFsbGV0X3BnYXMYcGFsbGV0EENhbGwEBFQAAQwoY2xhaW1fcGdhcwgBKHNsb3RfaW5kZXg4AQx1MzIAARh0YXJnZXQEATBUOjpBY2NvdW50SWQAACSQTWludCBQR0FTIGZvciBhIHZlcmlmaWVkIGNsYWltIHNsb3QuAFUBTXVzdCBiZSBzdWJtaXR0ZWQgd2l0aCB0aGUgW2BBc1BnYXNgXShleHRlbnNpb246OkFzUGdhcykgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uLCB3aGljaFEBdmVyaWZpZXMgdGhlIHJpbmctVlJGIHByb29mIGFuZCBwcm9kdWNlcyBhbiBbYE9yaWdpbjo6Q2xhaW1BbGlhc2BdLiBUaGUgb3V0ZXIgb3JpZ2luVQFtdXN0IGJlIGBOb25lYCAodGhlIGV4dGVuc2lvbiByZXBsYWNlcyBpdCB3aXRoIHRoZSBsb2NhbCBvcmlnaW4pOyBhbnkgb3RoZXIgb3JpZ2luIGlzJHJlamVjdGVkLgBZAWBzbG90X2luZGV4YCBpcyBwYXJ0IG9mIHRoZSBjYWxsIHBheWxvYWQgc28gdGhlIGV4dGVuc2lvbiBjYW4gZGVyaXZlIHRoZSBjbGFpbSBjb250ZXh0UQFvbi1jaGFpbiBhbmQgc28gdGhlIHByb29mIGJpbmRzIHRvIHRoZSByZXF1ZXN0ZWQgc2xvdCB2aWEgdGhlIGluaGVyaXRlZCBpbXBsaWNhdGlvbi5EY3JlYXRlX3BnYXNfYXNzZXQAAQhVAUNyZWF0ZSB0aGUgUEdBUyBhc3NldC4gVGhpcyBpcyBhIHBlcm1pc3Npb25sZXNzIGF1dGhvcml6ZWQgY2FsbCB0aGF0IGNhbiBvbmx5IHN1Y2NlZWSkaWYgdGhlIFBHQVMgYXNzZXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdC5gY2xlYW5fcGdhc19jbGFpbV9yZWNvcmRzCAEkZGF5X2luZGV4OAEMdTMyAAEsZmlyc3RfYWxpYXMIARRBbGlhcwACJORSZW1vdmUgb2xkIFBHQVMgY2xhaW0gcmVjb3JkcyBmb3IgYSBzcGVjaWZpYyBgZGF5X2luZGV4YC4ABQFUaGlzIGlzIGFuIGF1dGhvcml6ZWQgZXh0cmluc2ljIHN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLjUBT25seSByZWNvcmRzIGZyb20gZGF5cyB0aGF0IGhhdmUgZnVsbHkgZWxhcHNlZCAob3V0c2lkZSB0aGUgZ3JhY2Ugd2luZG93KSBjYW4pAWJlIGNsZWFuZWQuIFVwIHRvIFtgQ29uZmlnOjpNYXhQZ2FzQ2xhaW1SZWNvcmRDbGVhbnVwUGVyQ2FsbGBdIGVudHJpZXMgYXJlRHJlbW92ZWQgcGVyIGNhbGwuAGEBYGZpcnN0X2FsaWFzYCBpcyB0aGUgZmlyc3QgYWxpYXMgY3VycmVudGx5IHN0b3JlZCBmb3IgYGRheV9pbmRleGAgYW5kIGlzIGluY2x1ZGVkIGluIHRoZYB0YWdzIGZvciB0cmFuc2FjdGlvbiB1bmlxdWVuZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4xBww0cGFsbGV0X3Jldml2ZRhwYWxsZXQQQ2FsbAQEVAABNDBldGhfdHJhbnNhY3QEARxwYXlsb2FkGAEcVmVjPHU4PgAAMC0BQSByYXcgRVZNIHRyYW5zYWN0aW9uLCB0eXBpY2FsbHkgZGlzcGF0Y2hlZCBieSBhbiBFdGhlcmV1bSBKU09OLVJQQyBzZXJ2ZXIuADAjIFBhcmFtZXRlcnMA7CogYHBheWxvYWRgOiBUaGUgZW5jb2RlZCBbYGNyYXRlOjpldm06OlRyYW5zYWN0aW9uU2lnbmVkYF0uABgjIE5vdGUAUQFUaGlzIGNhbGwgY2Fubm90IGJlIGRpc3BhdGNoZWQgZGlyZWN0bHk7IGF0dGVtcHRpbmcgdG8gZG8gc28gd2lsbCByZXN1bHQgaW4gYSBmYWlsZWRRAXRyYW5zYWN0aW9uLiBJdCBzZXJ2ZXMgYXMgYSB3cmFwcGVyIGZvciBhbiBFdGhlcmV1bSB0cmFuc2FjdGlvbi4gV2hlbiBzdWJtaXR0ZWQsIHRoZVkBcnVudGltZSBjb252ZXJ0cyBpdCBpbnRvIGEgW2BzcF9ydW50aW1lOjpnZW5lcmljOjpDaGVja2VkRXh0cmluc2ljYF0gYnkgcmVjb3ZlcmluZyB0aGWYc2lnbmVyIGFuZCB2YWxpZGF0aW5nIHRoZSB0cmFuc2FjdGlvbi4QY2FsbBQBEGRlc3Q1BwEQSDE2MAABFHZhbHVlUQEBMEJhbGFuY2VPZjxUPgABMHdlaWdodF9saW1pdBEBARhXZWlnaHQAAVRzdG9yYWdlX2RlcG9zaXRfbGltaXRRAQEwQmFsYW5jZU9mPFQ+AAEQZGF0YRgBHFZlYzx1OD4AAUAFAU1ha2VzIGEgY2FsbCB0byBhbiBhY2NvdW50LCBvcHRpb25hbGx5IHRyYW5zZmVycmluZyBzb21lIGJhbGFuY2UuADAjIFBhcmFtZXRlcnMAqCogYGRlc3RgOiBBZGRyZXNzIG9mIHRoZSBjb250cmFjdCB0byBjYWxsLvwqIGB2YWx1ZWA6IFRoZSBiYWxhbmNlIHRvIHRyYW5zZmVyIGZyb20gdGhlIGBvcmlnaW5gIHRvIGBkZXN0YC4tASogYHdlaWdodF9saW1pdGA6IFRoZSB3ZWlnaHQgbGltaXQgZW5mb3JjZWQgd2hlbiBleGVjdXRpbmcgdGhlIGNvbnN0cnVjdG9yLlUBKiBgc3RvcmFnZV9kZXBvc2l0X2xpbWl0YDogVGhlIG1heGltdW0gYW1vdW50IG9mIGJhbGFuY2UgdGhhdCBjYW4gYmUgY2hhcmdlZCBmcm9tIHRoZaQgIGNhbGxlciB0byBwYXkgZm9yIHRoZSBzdG9yYWdlIGNvbnN1bWVkLsQqIGBkYXRhYDogVGhlIGlucHV0IGRhdGEgdG8gcGFzcyB0byB0aGUgY29udHJhY3QuACUBKiBJZiB0aGUgYWNjb3VudCBpcyBhIHNtYXJ0LWNvbnRyYWN0IGFjY291bnQsIHRoZSBhc3NvY2lhdGVkIGNvZGUgd2lsbCBiZaxleGVjdXRlZCBhbmQgYW55IHZhbHVlIHdpbGwgYmUgdHJhbnNmZXJyZWQuFQEqIElmIHRoZSBhY2NvdW50IGlzIGEgcmVndWxhciBhY2NvdW50LCBhbnkgdmFsdWUgd2lsbCBiZSB0cmFuc2ZlcnJlZC5FASogSWYgbm8gYWNjb3VudCBleGlzdHMgYW5kIHRoZSBjYWxsIHZhbHVlIGlzIG5vdCBsZXNzIHRoYW4gYGV4aXN0ZW50aWFsX2RlcG9zaXRgLBEBYSByZWd1bGFyIGFjY291bnQgd2lsbCBiZSBjcmVhdGVkIGFuZCBhbnkgdmFsdWUgd2lsbCBiZSB0cmFuc2ZlcnJlZC4saW5zdGFudGlhdGUYARR2YWx1ZVEBATBCYWxhbmNlT2Y8VD4AATB3ZWlnaHRfbGltaXQRAQEYV2VpZ2h0AAFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0UQEBMEJhbGFuY2VPZjxUPgABJGNvZGVfaGFzaDwBNHNwX2NvcmU6OkgyNTYAARBkYXRhGAEcVmVjPHU4PgABEHNhbHQ5BwFAT3B0aW9uPFt1ODsgMzJdPgACFPRJbnN0YW50aWF0ZXMgYSBjb250cmFjdCBmcm9tIGEgcHJldmlvdXNseSBkZXBsb3llZCB2bSBiaW5hcnkuADUBVGhpcyBmdW5jdGlvbiBpcyBpZGVudGljYWwgdG8gW2BTZWxmOjppbnN0YW50aWF0ZV93aXRoX2NvZGVgXSBidXQgd2l0aG91dCB0aGVBAWNvZGUgZGVwbG95bWVudCBzdGVwLiBJbnN0ZWFkLCB0aGUgYGNvZGVfaGFzaGAgb2YgYW4gb24tY2hhaW4gZGVwbG95ZWQgdm0gYmluYXJ5RG11c3QgYmUgc3VwcGxpZWQuVGluc3RhbnRpYXRlX3dpdGhfY29kZRgBFHZhbHVlUQEBMEJhbGFuY2VPZjxUPgABMHdlaWdodF9saW1pdBEBARhXZWlnaHQAAVRzdG9yYWdlX2RlcG9zaXRfbGltaXRRAQEwQmFsYW5jZU9mPFQ+AAEQY29kZRgBHFZlYzx1OD4AARBkYXRhGAEcVmVjPHU4PgABEHNhbHQ5BwFAT3B0aW9uPFt1ODsgMzJdPgADbDEBSW5zdGFudGlhdGVzIGEgbmV3IGNvbnRyYWN0IGZyb20gdGhlIHN1cHBsaWVkIGBjb2RlYCBvcHRpb25hbGx5IHRyYW5zZmVycmluZzRzb21lIGJhbGFuY2UuACEBVGhpcyBkaXNwYXRjaGFibGUgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBjYWxsaW5nIFtgU2VsZjo6dXBsb2FkX2NvZGVgXSArPQFbYFNlbGY6Omluc3RhbnRpYXRlYF0uIEJ1bmRsaW5nIHRoZW0gdG9nZXRoZXIgcHJvdmlkZXMgZWZmaWNpZW5jeSBnYWlucy4gUGxlYXNl2GFsc28gY2hlY2sgdGhlIGRvY3VtZW50YXRpb24gb2YgW2BTZWxmOjp1cGxvYWRfY29kZWBdLgAwIyBQYXJhbWV0ZXJzAE0BKiBgdmFsdWVgOiBUaGUgYmFsYW5jZSB0byB0cmFuc2ZlciBmcm9tIHRoZSBgb3JpZ2luYCB0byB0aGUgbmV3bHkgY3JlYXRlZCBjb250cmFjdC4tASogYHdlaWdodF9saW1pdGA6IFRoZSB3ZWlnaHQgbGltaXQgZW5mb3JjZWQgd2hlbiBleGVjdXRpbmcgdGhlIGNvbnN0cnVjdG9yLlUBKiBgc3RvcmFnZV9kZXBvc2l0X2xpbWl0YDogVGhlIG1heGltdW0gYW1vdW50IG9mIGJhbGFuY2UgdGhhdCBjYW4gYmUgY2hhcmdlZC9yZXNlcnZlZMggIGZyb20gdGhlIGNhbGxlciB0byBwYXkgZm9yIHRoZSBzdG9yYWdlIGNvbnN1bWVkLswqIGBjb2RlYDogVGhlIGNvbnRyYWN0IGNvZGUgdG8gZGVwbG95IGluIHJhdyBieXRlcy70KiBgZGF0YWA6IFRoZSBpbnB1dCBkYXRhIHRvIHBhc3MgdG8gdGhlIGNvbnRyYWN0IGNvbnN0cnVjdG9yLj0BKiBgc2FsdGA6IFVzZWQgZm9yIHRoZSBhZGRyZXNzIGRlcml2YXRpb24uIElmIGBTb21lYCBpcyBzdXBwbGllZCB0aGVuIGBDUkVBVEUyYNQJc2VtYW50aWNzIGFyZSB1c2VkLiBJZiBgTm9uZWAgdGhlbiBgQ1JBVEUxYCBpcyB1c2VkLgAAlEluc3RhbnRpYXRpb24gaXMgZXhlY3V0ZWQgYXMgZm9sbG93czoAOQEtIFRoZSBzdXBwbGllZCBgY29kZWAgaXMgZGVwbG95ZWQsIGFuZCBhIGBjb2RlX2hhc2hgIGlzIGNyZWF0ZWQgZm9yIHRoYXQgY29kZS5ZAS0gSWYgdGhlIGBjb2RlX2hhc2hgIGFscmVhZHkgZXhpc3RzIG9uIHRoZSBjaGFpbiB0aGUgdW5kZXJseWluZyBgY29kZWAgd2lsbCBiZSBzaGFyZWQuSQEtIFRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGlzIGNvbXB1dGVkIGJhc2VkIG9uIHRoZSBzZW5kZXIsIGNvZGVfaGFzaCBhbmQgdGhlIHNhbHQuAQEtIFRoZSBzbWFydC1jb250cmFjdCBhY2NvdW50IGlzIGNyZWF0ZWQgYXQgdGhlIGNvbXB1dGVkIGFkZHJlc3MuwC0gVGhlIGB2YWx1ZWAgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIG5ldyBhY2NvdW50LkEBLSBUaGUgYGRlcGxveWAgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIG5ld2x5LWNyZWF0ZWQgYWNjb3VudC5kZXRoX2luc3RhbnRpYXRlX3dpdGhfY29kZSABFHZhbHVlPQcBEFUyNTYAATB3ZWlnaHRfbGltaXQRAQEYV2VpZ2h0AAE0ZXRoX2dhc19saW1pdD0HARBVMjU2AAEQY29kZRgBHFZlYzx1OD4AARBkYXRhGAEcVmVjPHU4PgABTHRyYW5zYWN0aW9uX2VuY29kZWQYARxWZWM8dTg+AAFMZWZmZWN0aXZlX2dhc19wcmljZT0HARBVMjU2AAEsZW5jb2RlZF9sZW44AQx1MzIAClQ9AVNhbWUgYXMgW2BTZWxmOjppbnN0YW50aWF0ZV93aXRoX2NvZGVgXSwgYnV0IGludGVuZGVkIHRvIGJlIGRpc3BhdGNoZWQgKipvbmx5KiroYnkgYW4gRVZNIHRyYW5zYWN0aW9uIHRocm91Z2ggdGhlIEVWTSBjb21wYXRpYmlsaXR5IGxheWVyLgAwIyBQYXJhbWV0ZXJzAE0BKiBgdmFsdWVgOiBUaGUgYmFsYW5jZSB0byB0cmFuc2ZlciBmcm9tIHRoZSBgb3JpZ2luYCB0byB0aGUgbmV3bHkgY3JlYXRlZCBjb250cmFjdC5VASogYHdlaWdodF9saW1pdGA6IFRoZSBnYXMgbGltaXQgdXNlZCB0byBkZXJpdmUgdGhlIHRyYW5zYWN0aW9uIHdlaWdodCBmb3IgdHJhbnNhY3Rpb24kICBwYXltZW50XQEqIGBldGhfZ2FzX2xpbWl0YDogVGhlIEV0aGVyZXVtIGdhcyBsaW1pdCBnb3Zlcm5pbmcgdGhlIHJlc291cmNlIHVzYWdlIG9mIHRoZSBleGVjdXRpb27MKiBgY29kZWA6IFRoZSBjb250cmFjdCBjb2RlIHRvIGRlcGxveSBpbiByYXcgYnl0ZXMu9CogYGRhdGFgOiBUaGUgaW5wdXQgZGF0YSB0byBwYXNzIHRvIHRoZSBjb250cmFjdCBjb25zdHJ1Y3Rvci41ASogYHRyYW5zYWN0aW9uX2VuY29kZWRgOiBUaGUgUkxQIGVuY29kaW5nIG9mIHRoZSBzaWduZWQgRXRoZXJldW0gdHJhbnNhY3Rpb24sXQEgIHJlcHJlc2VudGVkIGFzIFtjcmF0ZTo6ZXZtOjpUcmFuc2FjdGlvblNpZ25lZF0sIHByb3ZpZGVkIGJ5IHRoZSBFdGhlcmV1bSB3YWxsZXQuIFRoaXPUICBpcyB1c2VkIGZvciBidWlsZGluZyB0aGUgRXRoZXJldW0gdHJhbnNhY3Rpb24gcm9vdC7EKiBlZmZlY3RpdmVfZ2FzX3ByaWNlOiB0aGUgcHJpY2Ugb2YgYSB1bml0IG9mIGdhcwUBKiBlbmNvZGVkIGxlbjogdGhlIGJ5dGUgY29kZSBzaXplIG9mIHRoZSBgZXRoX3RyYW5zYWN0YCBleHRyaW5zaWMAOQFDYWxsaW5nIHRoaXMgZGlzcGF0Y2hhYmxlIGVuc3VyZXMgdGhhdCB0aGUgb3JpZ2luJ3Mgbm9uY2UgaXMgYnVtcGVkIG9ubHkgb25jZSxhAXZpYSB0aGUgYENoZWNrTm9uY2VgIHRyYW5zYWN0aW9uIGV4dGVuc2lvbi4gSW4gY29udHJhc3QsIFtgU2VsZjo6aW5zdGFudGlhdGVfd2l0aF9jb2RlYF1NAWFsc28gYnVtcHMgdGhlIG5vbmNlIGFmdGVyIGNvbnRyYWN0IGluc3RhbnRpYXRpb24sIHNpbmNlIGl0IG1heSBiZSBpbnZva2VkIG11bHRpcGxlmHRpbWVzIHdpdGhpbiBhIGJhdGNoIGNhbGwgdHJhbnNhY3Rpb24uIGV0aF9jYWxsIAEQZGVzdDUHARBIMTYwAAEUdmFsdWU9BwEQVTI1NgABMHdlaWdodF9saW1pdBEBARhXZWlnaHQAATRldGhfZ2FzX2xpbWl0PQcBEFUyNTYAARBkYXRhGAEcVmVjPHU4PgABTHRyYW5zYWN0aW9uX2VuY29kZWQYARxWZWM8dTg+AAFMZWZmZWN0aXZlX2dhc19wcmljZT0HARBVMjU2AAEsZW5jb2RlZF9sZW44AQx1MzIAC0D4U2FtZSBhcyBbYFNlbGY6OmNhbGxgXSwgYnV0IGludGVuZGVkIHRvIGJlIGRpc3BhdGNoZWQgKipvbmx5KiroYnkgYW4gRVZNIHRyYW5zYWN0aW9uIHRocm91Z2ggdGhlIEVWTSBjb21wYXRpYmlsaXR5IGxheWVyLgAwIyBQYXJhbWV0ZXJzAOgqIGBkZXN0YDogVGhlIEV0aGVyZXVtIGFkZHJlc3Mgb2YgdGhlIGFjY291bnQgdG8gYmUgY2FsbGVkTQEqIGB2YWx1ZWA6IFRoZSBiYWxhbmNlIHRvIHRyYW5zZmVyIGZyb20gdGhlIGBvcmlnaW5gIHRvIHRoZSBuZXdseSBjcmVhdGVkIGNvbnRyYWN0LlUBKiBgd2VpZ2h0X2xpbWl0YDogVGhlIGdhcyBsaW1pdCB1c2VkIHRvIGRlcml2ZSB0aGUgdHJhbnNhY3Rpb24gd2VpZ2h0IGZvciB0cmFuc2FjdGlvbiQgIHBheW1lbnRdASogYGV0aF9nYXNfbGltaXRgOiBUaGUgRXRoZXJldW0gZ2FzIGxpbWl0IGdvdmVybmluZyB0aGUgcmVzb3VyY2UgdXNhZ2Ugb2YgdGhlIGV4ZWN1dGlvbvQqIGBkYXRhYDogVGhlIGlucHV0IGRhdGEgdG8gcGFzcyB0byB0aGUgY29udHJhY3QgY29uc3RydWN0b3IuNQEqIGB0cmFuc2FjdGlvbl9lbmNvZGVkYDogVGhlIFJMUCBlbmNvZGluZyBvZiB0aGUgc2lnbmVkIEV0aGVyZXVtIHRyYW5zYWN0aW9uLF0BICByZXByZXNlbnRlZCBhcyBbY3JhdGU6OmV2bTo6VHJhbnNhY3Rpb25TaWduZWRdLCBwcm92aWRlZCBieSB0aGUgRXRoZXJldW0gd2FsbGV0LiBUaGlz1CAgaXMgdXNlZCBmb3IgYnVpbGRpbmcgdGhlIEV0aGVyZXVtIHRyYW5zYWN0aW9uIHJvb3QuxCogZWZmZWN0aXZlX2dhc19wcmljZTogdGhlIHByaWNlIG9mIGEgdW5pdCBvZiBnYXMFASogZW5jb2RlZCBsZW46IHRoZSBieXRlIGNvZGUgc2l6ZSBvZiB0aGUgYGV0aF90cmFuc2FjdGAgZXh0cmluc2ljSGV0aF9zdWJzdHJhdGVfY2FsbAgBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAFMdHJhbnNhY3Rpb25fZW5jb2RlZBgBHFZlYzx1OD4ADCj8RXhlY3V0ZXMgYSBTdWJzdHJhdGUgcnVudGltZSBjYWxsIGZyb20gYW4gRXRoZXJldW0gdHJhbnNhY3Rpb24uAEUBVGhpcyBkaXNwYXRjaGFibGUgaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkICoqb25seSoqIHRocm91Z2ggdGhlIEVWTSBjb21wYXRpYmlsaXR5GQFsYXllci4gVGhlIHByb3ZpZGVkIGNhbGwgd2lsbCBiZSBkaXNwYXRjaGVkIHVzaW5nIGBSYXdPcmlnaW46OlNpZ25lZGAuADAjIFBhcmFtZXRlcnMA5CogYG9yaWdpbmA6IE11c3QgYmUgYW4gW2BPcmlnaW46OkV0aFRyYW5zYWN0aW9uYF0gb3JpZ2luLsAqIGBjYWxsYDogVGhlIFN1YnN0cmF0ZSBydW50aW1lIGNhbGwgdG8gZXhlY3V0ZS4ZASogYHRyYW5zYWN0aW9uX2VuY29kZWRgOiBUaGUgUkxQIGVuY29kaW5nIG9mIHRoZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiwsdXBsb2FkX2NvZGUIARBjb2RlGAEcVmVjPHU4PgABVHN0b3JhZ2VfZGVwb3NpdF9saW1pdFEBATBCYWxhbmNlT2Y8VD4ABDjsVXBsb2FkIG5ldyBgY29kZWAgd2l0aG91dCBpbnN0YW50aWF0aW5nIGEgY29udHJhY3QgZnJvbSBpdC4AIQFJZiB0aGUgY29kZSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0IGEgZGVwb3NpdCBpcyByZXNlcnZlZCBmcm9tIHRoZSBjYWxsZXINAVRoZSBzaXplIG9mIHRoZSByZXNlcnZlIGRlcGVuZHMgb24gdGhlIHNpemUgb2YgdGhlIHN1cHBsaWVkIGBjb2RlYC4AGCMgTm90ZQBZAUFueW9uZSBjYW4gaW5zdGFudGlhdGUgYSBjb250cmFjdCBmcm9tIGFueSB1cGxvYWRlZCBjb2RlIGFuZCB0aHVzIHByZXZlbnQgaXRzIHJlbW92YWwuQQFUbyBhdm9pZCB0aGlzIHNpdHVhdGlvbiBhIGNvbnN0cnVjdG9yIGNvdWxkIGVtcGxveSBhY2Nlc3MgY29udHJvbCBzbyB0aGF0IGl0IGNhbjkBb25seSBiZSBpbnN0YW50aWF0ZWQgYnkgcGVybWlzc2lvbmVkIGVudGl0aWVzLiBUaGUgc2FtZSBpcyB0cnVlIHdoZW4gdXBsb2FkaW5noHRocm91Z2ggW2BTZWxmOjppbnN0YW50aWF0ZV93aXRoX2NvZGVgXS4ARQFJZiB0aGUgcmVmY291bnQgb2YgdGhlIGNvZGUgcmVhY2hlcyB6ZXJvIGFmdGVyIHRlcm1pbmF0aW5nIHRoZSBsYXN0IGNvbnRyYWN0IHRoYXT0cmVmZXJlbmNlcyB0aGlzIGNvZGUsIHRoZSBjb2RlIHdpbGwgYmUgcmVtb3ZlZCBhdXRvbWF0aWNhbGx5LixyZW1vdmVfY29kZQQBJGNvZGVfaGFzaDwBNHNwX2NvcmU6OkgyNTYABRA1AVJlbW92ZSB0aGUgY29kZSBzdG9yZWQgdW5kZXIgYGNvZGVfaGFzaGAgYW5kIHJlZnVuZCB0aGUgZGVwb3NpdCB0byBpdHMgb3duZXIuAEUBQSBjb2RlIGNhbiBvbmx5IGJlIHJlbW92ZWQgYnkgaXRzIG9yaWdpbmFsIHVwbG9hZGVyIChpdHMgb3duZXIpIGFuZCBvbmx5IGlmIGl0IGlzZG5vdCB1c2VkIGJ5IGFueSBjb250cmFjdC4gc2V0X2NvZGUIARBkZXN0NQcBEEgxNjAAASRjb2RlX2hhc2g8ATRzcF9jb3JlOjpIMjU2AAYoCQFQcml2aWxlZ2VkIGZ1bmN0aW9uIHRoYXQgY2hhbmdlcyB0aGUgY29kZSBvZiBhbiBleGlzdGluZyBjb250cmFjdC4ARQFUaGlzIHRha2VzIGNhcmUgb2YgdXBkYXRpbmcgcmVmY291bnRzIGFuZCBhbGwgb3RoZXIgbmVjZXNzYXJ5IG9wZXJhdGlvbnMuIFJldHVybnPoYW4gZXJyb3IgaWYgZWl0aGVyIHRoZSBgY29kZV9oYXNoYCBvciBgZGVzdGAgZG8gbm90IGV4aXN0LgAYIyBOb3RlADEBVGhpcyBkb2VzICoqbm90KiogY2hhbmdlIHRoZSBhZGRyZXNzIG9mIHRoZSBjb250cmFjdCBpbiBxdWVzdGlvbi4gVGhpcyBtZWFucz0BdGhhdCB0aGUgY29udHJhY3QgYWRkcmVzcyBpcyBubyBsb25nZXIgZGVyaXZlZCBmcm9tIGl0cyBjb2RlIGhhc2ggYWZ0ZXIgY2FsbGluZ0h0aGlzIGRpc3BhdGNoYWJsZS4sbWFwX2FjY291bnQABxxBAVJlZ2lzdGVyIHRoZSBjYWxsZXJzIGFjY291bnQgaWQgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiBjb250cmFjdCBpbnRlcmFjdGlvbnMuAF0BVGhpcyB3aWxsIGVycm9yIGlmIHRoZSBvcmlnaW4gaXMgYWxyZWFkeSBtYXBwZWQgb3IgaXMgYSBldGggbmF0aXZlIGBBZGRyZXNzMjBgLiBJdCB3aWxsHQF0YWtlIGEgZGVwb3NpdCB0aGF0IGNhbiBiZSByZWxlYXNlZCBieSBjYWxsaW5nIFtgU2VsZjo6dW5tYXBfYWNjb3VudGBdLgA5AU5vb3Agd2hlbiBbYENvbmZpZzo6QXV0b01hcGBdIGlzIGVuYWJsZWQsIGFzIGFjY291bnRzIGFyZSBhdXRvbWF0aWNhbGx5IG1hcHBlZHxvbiBjcmVhdGlvbiB2aWEgW2BBdXRvTWFwcGVyYF0uNHVubWFwX2FjY291bnQACBz8VW5yZWdpc3RlciB0aGUgY2FsbGVycyBhY2NvdW50IGlkIGluIG9yZGVyIHRvIGZyZWUgdGhlIGRlcG9zaXQuAEEBVGhlcmUgaXMgbm8gcmVhc29uIHRvIGV2ZXIgY2FsbCB0aGlzIGZ1bmN0aW9uIG90aGVyIHRoYW4gZnJlZWluZyB1cCB0aGUgZGVwb3NpdC74VGhpcyBpcyBvbmx5IHVzZWZ1bCB3aGVuIHRoZSBhY2NvdW50IHNob3VsZCBubyBsb25nZXIgYmUgdXNlZC4AUQFEaXNhYmxlZCB3aGVuIFtgQ29uZmlnOjpBdXRvTWFwYF0gaXMgZW5hYmxlZCwgYXMgYWNjb3VudHMgYXJlIGF1dG9tYXRpY2FsbHkgdW5tYXBwZWRsb24ga2lsbCB2aWEgW2BBdXRvTWFwcGVyYF0ucGRpc3BhdGNoX2FzX2ZhbGxiYWNrX2FjY291bnQEARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAJFB0BRGlzcGF0Y2ggYW4gYGNhbGxgIHdpdGggdGhlIG9yaWdpbiBzZXQgdG8gdGhlIGNhbGxlcnMgZmFsbGJhY2sgYWRkcmVzcy4AYQFFdmVyeSBgQWNjb3VudElkMzJgIGNhbiBjb250cm9sIGl0cyBjb3JyZXNwb25kaW5nIGZhbGxiYWNrIGFjY291bnQuIFRoZSBmYWxsYmFjayBhY2NvdW50QQFpcyB0aGUgYEFjY291bnRJZDIwYCB3aXRoIHRoZSBsYXN0IDEyIGJ5dGVzIHNldCB0byBgMHhFRWAuIFRoaXMgaXMgZXNzZW50aWFsbHkgYVUBcmVjb3ZlcnkgZnVuY3Rpb24gaW4gY2FzZSBhbiBgQWNjb3VudElkMjBgIHdhcyB1c2VkIHdpdGhvdXQgY3JlYXRpbmcgYSBtYXBwaW5nIGZpcnN0LgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy41Bwg8cHJpbWl0aXZlX3R5cGVzEEgxNjAAAAQAHAEgW3U4OyAyMF0AADkHBBhPcHRpb24EBFQBCAEIEE5vbmUAAAAQU29tZQQACAAAAQAAPQcIPHByaW1pdGl2ZV90eXBlcxBVMjU2AAAEAEEHASBbdTY0OyA0XQAAQQcAAAMEAAAAKABFBwxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkYcGFsbGV0EENhbGwEBFQAARQwcmVzZXJ2ZV9uYW1lGAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkAAFMY2FuZGlkYXRlX3NpZ25hdHVyZZ0EAVxUOjpBdHRlc3RhdGlvblNpZ25hdHVyZQABKGxpdGVfbGFiZWxJBwEkQmFzZUxhYmVsAAEgY2hhdF9rZXlNBwEcQ2hhdEtleQABTHJlc2VydmVkX2Jhc2VfbGFiZWxRBwFET3B0aW9uPEJhc2VMYWJlbD4AASRzaWduZWRfYXQoAQx1NjQAAFgtAVJlc2VydmVzIGEgbGl0ZS1wZXJzb24gbGFiZWwgb24gYERvdG5zUG9wQ29udHJvbGxlcmAgZm9yIGEgTGl0ZSBQZXJzb24sIGFuZEUBb3B0aW9uYWxseSBlbnF1ZXVlcyBhIHJlc2VydmF0aW9uIGZvciBhIGJhc2UgbGFiZWwgdGhlIHVzZXIgaW50ZW5kcyB0byBjbGFpbSBhcyBhSEZ1bGwgUGVyc29uIGxhdGVyLgANAVRoZSBjYWxsZXIgbXVzdCBiZSBhbiBhdHRlc3RlciB3aXRoIGF2YWlsYWJsZSBhbGxvd2FuY2UuIFRoZSB1c2VyJ3MpAXNpZ25hdHVyZSBwcm92ZXMgdGhlaXIgY29uc2VudCB0byB0aGUgcmVzZXJ2YXRpb24gd2l0aCB0aGlzIHNwZWNpZmljIGxhYmVsNGFuZCBhdHRlc3Rlci4AMCMgUGFyYW1ldGVyc10BLSBgY2FuZGlkYXRlYDogdGhlIExpdGUgUGVyc29uJ3MgYWNjb3VudCBmb3Igd2hvbSB0aGUgbGFiZWwgaXMgYmVpbmcgcmVzZXJ2ZWQuIEFsc28gdGhliCAgc2lnbmVyIG9mIGBjYW5kaWRhdGVfc2lnbmF0dXJlYC70LSBgY2FuZGlkYXRlX3NpZ25hdHVyZWA6IHNpZ25hdHVyZSBvdmVyIHRoZSBieXRlcyByZXR1cm5lZCBieUUBICBbYFBhbGxldDo6Y29uc3RydWN0X3Jlc2VydmF0aW9uX21lc3NhZ2VgXSDigJQgYSBTQ0FMRS1lbmNvZGVkIHR1cGxlIGJpbmRpbmcgdGhlsCAgYXR0ZXN0ZXIsIGNhbmRpZGF0ZSwgbGFiZWxzLCBhbmQgY2hhdCBrZXkuNQEtIGBsaXRlX2xhYmVsYDogdGhlIGxpdGUtcGVyc29uIGxhYmVsLiBNdXN0IGJlIGA8ZG5zLXN0ZW0+LjwyKyBkaWdpdHM+YCAoZS5nLiUBICBgYWxpY2UuNDJgKSwgbWF0Y2hpbmcgYFN0cmluZ1V0aWxzLmlzTGl0ZVBlcnNvbkxhYmVsYCBpbiB0aGUgY29udHJhY3RzLtAtIGBjaGF0X2tleWA6IDY1LWJ5dGUgcHVibGljIGtleSB1c2VkIGZvciBFQ0RIIGNoYXQuWQEtIGByZXNlcnZlZF9iYXNlX2xhYmVsYDogb3B0aW9uYWwgYmFzZSBsYWJlbCByZXNlcnZlZCBmb3IgdGhlIGNhbmRpZGF0ZSB0byBsYXRlciBjbGFpbfggIGFzIGEgRnVsbCBQZXJzb24uIE11c3QgYmUgYSBzaW5nbGUgRE5TIGxhYmVsIChlLmcuIGBhbGljZWApLlkBLSBgc2lnbmVkX2F0YDogVW5peC10aW1lIHNlY29uZCBhdCB3aGljaCB0aGUgY2FuZGlkYXRlIHNpZ25lZCB0aGUgcmVzZXJ2YXRpb24gbWVzc2FnZS5ZASAgVGhlIHNpZ25hdHVyZSBpcyBhY2NlcHRlZCBvbmx5IGlmIGBzaWduZWRfYXQgPD0gbm93ICsgTWF4RnV0dXJlU2tld1NlY29uZHNgIGFuZCBgbm93SQEgIDw9IHNpZ25lZF9hdCArIE1heFZhbGlkaXR5U2Vjb25kc2AsIHdoZXJlIGBub3dgIGNvbWVzIGZyb20gW2BDb25maWc6OlVuaXhUaW1lYF0uNHJlZ2lzdGVyX25hbWUQAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEUcHJvb2YpBwEoUHJvb2ZPZjxUPgABFGxhYmVsSQcBJEJhc2VMYWJlbAABEGxpbmtVBwEQTGluawABSEEBUmVnaXN0ZXJzIGEgZnVsbC1wZXJzb24gbGFiZWwgb24gYERvdG5zUG9wQ29udHJvbGxlcmAgZm9yIGEgZnVsbHkgcHJvdmVuIHBlcnNvbi4AFQFUaGUgY2FsbGVyIHByb3ZpZGVzIGEgcmluZyBtZW1iZXJzaGlwIHByb29mIHdoaWNoIGlzIHZlcmlmaWVkIGFnYWluc3R0YG1lbWJlcnMtc3Vic2NyaWJlcmAgc3RvcmFnZS4AMCMgUGFyYW1ldGVyc0kBLSBgcmluZ19pbmRleGA6IGluZGV4IG9mIHRoZSByaW5nIGNvbnRhaW5pbmcgdGhlIGNhbGxlcidzIG1lbWJlcnNoaXAgY29tbWl0bWVudCBpblwgIGBtZW1iZXJzLXN1YnNjcmliZXJgLkkBLSBgcHJvb2ZgOiByaW5nIG1lbWJlcnNoaXAgcHJvb2Y7IG11c3QgYmUgZ2VuZXJhdGVkIGFnYWluc3QgdGhlIGRpZ2VzdCByZXR1cm5lZCBieVkBICBbYFBhbGxldDo6Y29uc3RydWN0X3JlZ2lzdGVyX3Byb29mX21lc3NhZ2VgXSwgd2hpY2ggYmluZHMgYHdob2AsIGBsYWJlbGAsIGFuZCBgbGlua2BEICBpbnRvIHRoZSBwcm9vZi5VAS0gYGxhYmVsYDogdGhlIGZ1bGwtcGVyc29uIGxhYmVsLiBNdXN0IGJlIGEgc2luZ2xlIEROUyBsYWJlbCAoZS5nLiBgYWxpY2VgKSwgbWF0Y2hpbme8ICBgU3RyaW5nVXRpbHMuaXNTaW5nbGVMYWJlbGAgaW4gdGhlIGNvbnRyYWN0cy5BAS0gYGxpbmtgOiBob3cgdGhlIGZ1bGwtcGVyc29uIGxhYmVsIHJlbGF0ZXMgdG8gYSBwcmUtZXhpc3RpbmcgbGl0ZS1wZXJzb24gbGFiZWw6VQEgIC0gYExpbms6OkxpdGVVc2VybmFtZShsaXRlX2xhYmVsKWAg4oCUIGxpbmtzIHRvIGFuIGV4aXN0aW5nIGxpdGUtcGVyc29uIGxhYmVsIChtdXN0XQEgICAgbWF0Y2ggdGhlIGxpdGUgZm9ybWF0IGA8ZG5zLXN0ZW0+LjwyKyBkaWdpdHM+YCk7IHRoZSBjaGF0IGtleSBpcyBpbmhlcml0ZWQgZnJvbSB0aGU8ICAgIGxpdGUgZW50cnkuSQEgIC0gYExpbms6Ok5vbmUoY2hhdF9rZXkpYCDigJQgc3RhbmRhbG9uZSByZWdpc3RyYXRpb24gd2l0aCBhIGZyZXNoIEVDREggY2hhdCBrZXkueGluY3JlYXNlX2F0dGVzdGF0aW9uX2FsbG93YW5jZQgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgACDNBHcmFudHMgYXR0ZXN0YXRpb24gYWxsb3dhbmNlIHRvIGFuIGF0dGVzdGVyIGFjY291bnQuAMRUaGUgb3JpZ2luIG11c3QgYmUgYEF0dGVzdGF0aW9uQWxsb3dhbmNlTWFuYWdlcmAubGNsZWFyX2F0dGVzdGF0aW9uX2FsbG93YW5jZQQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwzkQ2xlYXJzIGFsbCBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgZm9yIGFuIGF0dGVzdGVyIGFjY291bnQuAMRUaGUgb3JpZ2luIG11c3QgYmUgYEF0dGVzdGF0aW9uQWxsb3dhbmNlTWFuYWdlcmAuaHNldF9wb3BfY29udHJvbGxlcl9hZGRyZXNzBAEcYWRkcmVzczUHARBIMTYwAAQMvFNldHMgdGhlIGBEb3Ruc1BvcENvbnRyb2xsZXJgIGNvbnRyYWN0IGFkZHJlc3MuADUBVGhlIG9yaWdpbiBtdXN0IGJlIGBQb3BDb250cm9sbGVyQWRkcmVzc01hbmFnZXJgLiBPdmVyd3JpdGVzIGFueSBwcmlvciB2YWx1ZS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuSQcMaGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5FHR5cGVzJEJhc2VMYWJlbAAABADBAwFwQm91bmRlZFZlYzx1OCwgQ29uc3RVMzI8MzI+PgAATQcMaGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5FHR5cGVzHENoYXRLZXkAAAQAdQEBIFt1ODsgNjVdAABRBwQYT3B0aW9uBARUAUkHAQgQTm9uZQAAABBTb21lBABJBwAAAQAAVQcMaGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5FHR5cGVzEExpbmsAAQgwTGl0ZVVzZXJuYW1lBABJBwEkQmFzZUxhYmVsAAAAEE5vbmUEAE0HARxDaGF0S2V5AAEAAFkHDCxwYWxsZXRfc3VkbxhwYWxsZXQQQ2FsbAQEVAABFBBzdWRvBAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAAQ1AUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBSb290YCBvcmlnaW4uVHN1ZG9fdW5jaGVja2VkX3dlaWdodAgBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEYd2VpZ2h0EQEBGFdlaWdodAABFDUBQXV0aGVudGljYXRlcyB0aGUgc3VkbyBrZXkgYW5kIGRpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYFJvb3RgIG9yaWdpbi4tAVRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIHdlaWdodCBvZiB0aGUgY2FsbCwgYW5kIGluc3RlYWQgYWxsb3dzIHRoZbBTdWRvIHVzZXIgdG8gc3BlY2lmeSB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uHHNldF9rZXkEAQxuZXcAAVBBY2NvdW50SWRMb29rdXBPZjxUPgACCF0BQXV0aGVudGljYXRlcyB0aGUgY3VycmVudCBzdWRvIGtleSBhbmQgc2V0cyB0aGUgZ2l2ZW4gQWNjb3VudElkIChgbmV3YCkgYXMgdGhlIG5ldyBzdWRvEGtleS4cc3Vkb19hcwgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAxBNAUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBTaWduZWRgIG9yaWdpbiBmcm9tQGEgZ2l2ZW4gYWNjb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLihyZW1vdmVfa2V5AAQMhFBlcm1hbmVudGx5IHJlbW92ZXMgdGhlIHN1ZG8ga2V5LgBsKipUaGlzIGNhbm5vdCBiZSB1bi1kb25lLioqBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLl0HEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczhhdXRob3JpemVfY2FsbDRBdXRob3JpemVDYWxsBARUAAAAAGEHDERpbmRpdl9wYWxsZXRfcGdhcyRleHRlbnNpb24YQXNQZ2FzBARUAAAEAGUHAVRPcHRpb248QXNQZ2FzSW5mbzxUPj4AAGUHBBhPcHRpb24EBFQBaQcBCBBOb25lAAAAEFNvbWUEAGkHAAABAABpBwxEaW5kaXZfcGFsbGV0X3BnYXMkZXh0ZW5zaW9uKEFzUGdhc0luZm8EBFQAAQQUQ2xhaW0UARRwcm9vZikHAShQcm9vZk9mPFQ+AAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABKGNvbGxlY3Rpb279AwE4UGdhc0NvbGxlY3Rpb24AAQxkYXk4AQx1MzIAAAAAbQcMbGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50cyRleHRlbnNpb24sQXNSaW5nQWxpYXMEBFQAAAQAcQcBaE9wdGlvbjxBc1JpbmdBbGlhc0luZm88VD4+AABxBwQYT3B0aW9uBARUAXUHAQgQTm9uZQAAABBTb21lBAB1BwAAAQAAdQcMbGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50cyRleHRlbnNpb248QXNSaW5nQWxpYXNJbmZvBARUAAEMLFdpdGhBY2NvdW50BAA4ASBUOjpOb25jZQAAACRXaXRoUHJvb2YUACkHAShQcm9vZk9mPFQ+AAAIAShJZGVudGlmaWVyAAA4ASRSaW5nSW5kZXgAAAgBHENvbnRleHQAADgBNFJldmlzaW9uSW5kZXgAAQBIV2l0aEFjY291bnRSZXZpc2VkGAA4ASBUOjpOb25jZQAAKQcBKFByb29mT2Y8VD4AAAgBKElkZW50aWZpZXIAADgBJFJpbmdJbmRleAAACAEcQ29udGV4dAAAOAE0UmV2aXNpb25JbmRleAACAAB5BxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNUY2hlY2tfbm9uX3plcm9fc2VuZGVySENoZWNrTm9uWmVyb1NlbmRlcgQEVAAAAAB9BxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNIY2hlY2tfc3BlY192ZXJzaW9uQENoZWNrU3BlY1ZlcnNpb24EBFQAAAAAgQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zQGNoZWNrX3R4X3ZlcnNpb244Q2hlY2tUeFZlcnNpb24EBFQAAAAAhQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zNGNoZWNrX2dlbmVzaXMwQ2hlY2tHZW5lc2lzBARUAAAAAIkHEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczxjaGVja19tb3J0YWxpdHk4Q2hlY2tNb3J0YWxpdHkEBFQAAAQAjQcBDEVyYQAAjQcQKHNwX3J1bnRpbWUcZ2VuZXJpYwxlcmEMRXJhAAEBBCBJbW1vcnRhbAAAABxNb3J0YWwxBAAMAAABABxNb3J0YWwyBAAMAAACABxNb3J0YWwzBAAMAAADABxNb3J0YWw0BAAMAAAEABxNb3J0YWw1BAAMAAAFABxNb3J0YWw2BAAMAAAGABxNb3J0YWw3BAAMAAAHABxNb3J0YWw4BAAMAAAIABxNb3J0YWw5BAAMAAAJACBNb3J0YWwxMAQADAAACgAgTW9ydGFsMTEEAAwAAAsAIE1vcnRhbDEyBAAMAAAMACBNb3J0YWwxMwQADAAADQAgTW9ydGFsMTQEAAwAAA4AIE1vcnRhbDE1BAAMAAAPACBNb3J0YWwxNgQADAAAEAAgTW9ydGFsMTcEAAwAABEAIE1vcnRhbDE4BAAMAAASACBNb3J0YWwxOQQADAAAEwAgTW9ydGFsMjAEAAwAABQAIE1vcnRhbDIxBAAMAAAVACBNb3J0YWwyMgQADAAAFgAgTW9ydGFsMjMEAAwAABcAIE1vcnRhbDI0BAAMAAAYACBNb3J0YWwyNQQADAAAGQAgTW9ydGFsMjYEAAwAABoAIE1vcnRhbDI3BAAMAAAbACBNb3J0YWwyOAQADAAAHAAgTW9ydGFsMjkEAAwAAB0AIE1vcnRhbDMwBAAMAAAeACBNb3J0YWwzMQQADAAAHwAgTW9ydGFsMzIEAAwAACAAIE1vcnRhbDMzBAAMAAAhACBNb3J0YWwzNAQADAAAIgAgTW9ydGFsMzUEAAwAACMAIE1vcnRhbDM2BAAMAAAkACBNb3J0YWwzNwQADAAAJQAgTW9ydGFsMzgEAAwAACYAIE1vcnRhbDM5BAAMAAAnACBNb3J0YWw0MAQADAAAKAAgTW9ydGFsNDEEAAwAACkAIE1vcnRhbDQyBAAMAAAqACBNb3J0YWw0MwQADAAAKwAgTW9ydGFsNDQEAAwAACwAIE1vcnRhbDQ1BAAMAAAtACBNb3J0YWw0NgQADAAALgAgTW9ydGFsNDcEAAwAAC8AIE1vcnRhbDQ4BAAMAAAwACBNb3J0YWw0OQQADAAAMQAgTW9ydGFsNTAEAAwAADIAIE1vcnRhbDUxBAAMAAAzACBNb3J0YWw1MgQADAAANAAgTW9ydGFsNTMEAAwAADUAIE1vcnRhbDU0BAAMAAA2ACBNb3J0YWw1NQQADAAANwAgTW9ydGFsNTYEAAwAADgAIE1vcnRhbDU3BAAMAAA5ACBNb3J0YWw1OAQADAAAOgAgTW9ydGFsNTkEAAwAADsAIE1vcnRhbDYwBAAMAAA8ACBNb3J0YWw2MQQADAAAPQAgTW9ydGFsNjIEAAwAAD4AIE1vcnRhbDYzBAAMAAA/ACBNb3J0YWw2NAQADAAAQAAgTW9ydGFsNjUEAAwAAEEAIE1vcnRhbDY2BAAMAABCACBNb3J0YWw2NwQADAAAQwAgTW9ydGFsNjgEAAwAAEQAIE1vcnRhbDY5BAAMAABFACBNb3J0YWw3MAQADAAARgAgTW9ydGFsNzEEAAwAAEcAIE1vcnRhbDcyBAAMAABIACBNb3J0YWw3MwQADAAASQAgTW9ydGFsNzQEAAwAAEoAIE1vcnRhbDc1BAAMAABLACBNb3J0YWw3NgQADAAATAAgTW9ydGFsNzcEAAwAAE0AIE1vcnRhbDc4BAAMAABOACBNb3J0YWw3OQQADAAATwAgTW9ydGFsODAEAAwAAFAAIE1vcnRhbDgxBAAMAABRACBNb3J0YWw4MgQADAAAUgAgTW9ydGFsODMEAAwAAFMAIE1vcnRhbDg0BAAMAABUACBNb3J0YWw4NQQADAAAVQAgTW9ydGFsODYEAAwAAFYAIE1vcnRhbDg3BAAMAABXACBNb3J0YWw4OAQADAAAWAAgTW9ydGFsODkEAAwAAFkAIE1vcnRhbDkwBAAMAABaACBNb3J0YWw5MQQADAAAWwAgTW9ydGFsOTIEAAwAAFwAIE1vcnRhbDkzBAAMAABdACBNb3J0YWw5NAQADAAAXgAgTW9ydGFsOTUEAAwAAF8AIE1vcnRhbDk2BAAMAABgACBNb3J0YWw5NwQADAAAYQAgTW9ydGFsOTgEAAwAAGIAIE1vcnRhbDk5BAAMAABjACRNb3J0YWwxMDAEAAwAAGQAJE1vcnRhbDEwMQQADAAAZQAkTW9ydGFsMTAyBAAMAABmACRNb3J0YWwxMDMEAAwAAGcAJE1vcnRhbDEwNAQADAAAaAAkTW9ydGFsMTA1BAAMAABpACRNb3J0YWwxMDYEAAwAAGoAJE1vcnRhbDEwNwQADAAAawAkTW9ydGFsMTA4BAAMAABsACRNb3J0YWwxMDkEAAwAAG0AJE1vcnRhbDExMAQADAAAbgAkTW9ydGFsMTExBAAMAABvACRNb3J0YWwxMTIEAAwAAHAAJE1vcnRhbDExMwQADAAAcQAkTW9ydGFsMTE0BAAMAAByACRNb3J0YWwxMTUEAAwAAHMAJE1vcnRhbDExNgQADAAAdAAkTW9ydGFsMTE3BAAMAAB1ACRNb3J0YWwxMTgEAAwAAHYAJE1vcnRhbDExOQQADAAAdwAkTW9ydGFsMTIwBAAMAAB4ACRNb3J0YWwxMjEEAAwAAHkAJE1vcnRhbDEyMgQADAAAegAkTW9ydGFsMTIzBAAMAAB7ACRNb3J0YWwxMjQEAAwAAHwAJE1vcnRhbDEyNQQADAAAfQAkTW9ydGFsMTI2BAAMAAB+ACRNb3J0YWwxMjcEAAwAAH8AJE1vcnRhbDEyOAQADAAAgAAkTW9ydGFsMTI5BAAMAACBACRNb3J0YWwxMzAEAAwAAIIAJE1vcnRhbDEzMQQADAAAgwAkTW9ydGFsMTMyBAAMAACEACRNb3J0YWwxMzMEAAwAAIUAJE1vcnRhbDEzNAQADAAAhgAkTW9ydGFsMTM1BAAMAACHACRNb3J0YWwxMzYEAAwAAIgAJE1vcnRhbDEzNwQADAAAiQAkTW9ydGFsMTM4BAAMAACKACRNb3J0YWwxMzkEAAwAAIsAJE1vcnRhbDE0MAQADAAAjAAkTW9ydGFsMTQxBAAMAACNACRNb3J0YWwxNDIEAAwAAI4AJE1vcnRhbDE0MwQADAAAjwAkTW9ydGFsMTQ0BAAMAACQACRNb3J0YWwxNDUEAAwAAJEAJE1vcnRhbDE0NgQADAAAkgAkTW9ydGFsMTQ3BAAMAACTACRNb3J0YWwxNDgEAAwAAJQAJE1vcnRhbDE0OQQADAAAlQAkTW9ydGFsMTUwBAAMAACWACRNb3J0YWwxNTEEAAwAAJcAJE1vcnRhbDE1MgQADAAAmAAkTW9ydGFsMTUzBAAMAACZACRNb3J0YWwxNTQEAAwAAJoAJE1vcnRhbDE1NQQADAAAmwAkTW9ydGFsMTU2BAAMAACcACRNb3J0YWwxNTcEAAwAAJ0AJE1vcnRhbDE1OAQADAAAngAkTW9ydGFsMTU5BAAMAACfACRNb3J0YWwxNjAEAAwAAKAAJE1vcnRhbDE2MQQADAAAoQAkTW9ydGFsMTYyBAAMAACiACRNb3J0YWwxNjMEAAwAAKMAJE1vcnRhbDE2NAQADAAApAAkTW9ydGFsMTY1BAAMAAClACRNb3J0YWwxNjYEAAwAAKYAJE1vcnRhbDE2NwQADAAApwAkTW9ydGFsMTY4BAAMAACoACRNb3J0YWwxNjkEAAwAAKkAJE1vcnRhbDE3MAQADAAAqgAkTW9ydGFsMTcxBAAMAACrACRNb3J0YWwxNzIEAAwAAKwAJE1vcnRhbDE3MwQADAAArQAkTW9ydGFsMTc0BAAMAACuACRNb3J0YWwxNzUEAAwAAK8AJE1vcnRhbDE3NgQADAAAsAAkTW9ydGFsMTc3BAAMAACxACRNb3J0YWwxNzgEAAwAALIAJE1vcnRhbDE3OQQADAAAswAkTW9ydGFsMTgwBAAMAAC0ACRNb3J0YWwxODEEAAwAALUAJE1vcnRhbDE4MgQADAAAtgAkTW9ydGFsMTgzBAAMAAC3ACRNb3J0YWwxODQEAAwAALgAJE1vcnRhbDE4NQQADAAAuQAkTW9ydGFsMTg2BAAMAAC6ACRNb3J0YWwxODcEAAwAALsAJE1vcnRhbDE4OAQADAAAvAAkTW9ydGFsMTg5BAAMAAC9ACRNb3J0YWwxOTAEAAwAAL4AJE1vcnRhbDE5MQQADAAAvwAkTW9ydGFsMTkyBAAMAADAACRNb3J0YWwxOTMEAAwAAMEAJE1vcnRhbDE5NAQADAAAwgAkTW9ydGFsMTk1BAAMAADDACRNb3J0YWwxOTYEAAwAAMQAJE1vcnRhbDE5NwQADAAAxQAkTW9ydGFsMTk4BAAMAADGACRNb3J0YWwxOTkEAAwAAMcAJE1vcnRhbDIwMAQADAAAyAAkTW9ydGFsMjAxBAAMAADJACRNb3J0YWwyMDIEAAwAAMoAJE1vcnRhbDIwMwQADAAAywAkTW9ydGFsMjA0BAAMAADMACRNb3J0YWwyMDUEAAwAAM0AJE1vcnRhbDIwNgQADAAAzgAkTW9ydGFsMjA3BAAMAADPACRNb3J0YWwyMDgEAAwAANAAJE1vcnRhbDIwOQQADAAA0QAkTW9ydGFsMjEwBAAMAADSACRNb3J0YWwyMTEEAAwAANMAJE1vcnRhbDIxMgQADAAA1AAkTW9ydGFsMjEzBAAMAADVACRNb3J0YWwyMTQEAAwAANYAJE1vcnRhbDIxNQQADAAA1wAkTW9ydGFsMjE2BAAMAADYACRNb3J0YWwyMTcEAAwAANkAJE1vcnRhbDIxOAQADAAA2gAkTW9ydGFsMjE5BAAMAADbACRNb3J0YWwyMjAEAAwAANwAJE1vcnRhbDIyMQQADAAA3QAkTW9ydGFsMjIyBAAMAADeACRNb3J0YWwyMjMEAAwAAN8AJE1vcnRhbDIyNAQADAAA4AAkTW9ydGFsMjI1BAAMAADhACRNb3J0YWwyMjYEAAwAAOIAJE1vcnRhbDIyNwQADAAA4wAkTW9ydGFsMjI4BAAMAADkACRNb3J0YWwyMjkEAAwAAOUAJE1vcnRhbDIzMAQADAAA5gAkTW9ydGFsMjMxBAAMAADnACRNb3J0YWwyMzIEAAwAAOgAJE1vcnRhbDIzMwQADAAA6QAkTW9ydGFsMjM0BAAMAADqACRNb3J0YWwyMzUEAAwAAOsAJE1vcnRhbDIzNgQADAAA7AAkTW9ydGFsMjM3BAAMAADtACRNb3J0YWwyMzgEAAwAAO4AJE1vcnRhbDIzOQQADAAA7wAkTW9ydGFsMjQwBAAMAADwACRNb3J0YWwyNDEEAAwAAPEAJE1vcnRhbDI0MgQADAAA8gAkTW9ydGFsMjQzBAAMAADzACRNb3J0YWwyNDQEAAwAAPQAJE1vcnRhbDI0NQQADAAA9QAkTW9ydGFsMjQ2BAAMAAD2ACRNb3J0YWwyNDcEAAwAAPcAJE1vcnRhbDI0OAQADAAA+AAkTW9ydGFsMjQ5BAAMAAD5ACRNb3J0YWwyNTAEAAwAAPoAJE1vcnRhbDI1MQQADAAA+wAkTW9ydGFsMjUyBAAMAAD8ACRNb3J0YWwyNTMEAAwAAP0AJE1vcnRhbDI1NAQADAAA/gAkTW9ydGFsMjU1BAAMAAD/AACRBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMsY2hlY2tfbm9uY2UoQ2hlY2tOb25jZQQEVAAABABgASBUOjpOb25jZQAAlQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zMGNoZWNrX3dlaWdodCxDaGVja1dlaWdodAQEVAAAAACZBwiIcGFsbGV0X2Fzc2V0X2NvbnZlcnNpb25fdHhfcGF5bWVudFBDaGFyZ2VBc3NldFR4UGF5bWVudAQEVAAACAEMdGlwUQEBMEJhbGFuY2VPZjxUPgABIGFzc2V0X2lkOQMBSE9wdGlvbjxUOjpBc3NldElkPgAAnQcIdGZyYW1lX21ldGFkYXRhX2hhc2hfZXh0ZW5zaW9uRENoZWNrTWV0YWRhdGFIYXNoBARUAAAEARBtb2RloQcBEE1vZGUAAKEHCHRmcmFtZV9tZXRhZGF0YV9oYXNoX2V4dGVuc2lvbhBNb2RlAAEIIERpc2FibGVkAAAAHEVuYWJsZWQAAQAApQcQNHBhbGxldF9yZXZpdmUMZXZtMHR4X2V4dGVuc2lvbiRTZXRPcmlnaW4EBFQAAAAAqQcIMGZyYW1lX3N5c3RlbSxBY2NvdW50SW5mbwgUTm9uY2UBOCxBY2NvdW50RGF0YQGtBwAUARRub25jZTgBFE5vbmNlAAEkY29uc3VtZXJzOAEgUmVmQ291bnQAASRwcm92aWRlcnM4ASBSZWZDb3VudAABLHN1ZmZpY2llbnRzOAEgUmVmQ291bnQAARBkYXRhrQcBLEFjY291bnREYXRhAACtBww8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLEFjY291bnREYXRhBBxCYWxhbmNlAVUBABABEGZyZWVVAQEcQmFsYW5jZQABIHJlc2VydmVkVQEBHEJhbGFuY2UAARhmcm96ZW5VAQEcQmFsYW5jZQABFGZsYWdzsQcBKEV4dHJhRmxhZ3MAALEHDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMoRXh0cmFGbGFncwAABABVAQEQdTEyOAAAtQcMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAERAQAMARhub3JtYWwRAQEEVAABLG9wZXJhdGlvbmFsEQEBBFQAASRtYW5kYXRvcnkRAQEEVAAAuQcAAAK9BwC9BwgwZnJhbWVfc3lzdGVtLEV2ZW50UmVjb3JkCARFAcEHBFQBPAAMARRwaGFzZYkJARRQaGFzZQABFGV2ZW50wQcBBEUAARh0b3BpY3PAARhWZWM8VD4AAMEHCHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lMFJ1bnRpbWVFdmVudAAB4BhTeXN0ZW0EAMUHAXBmcmFtZV9zeXN0ZW06OkV2ZW50PFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQA7QcBvGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW06OkV2ZW50PFJ1bnRpbWU+AAEAIFByZWltYWdlBADxBwF8cGFsbGV0X3ByZWltYWdlOjpFdmVudDxSdW50aW1lPgAFACRTY2hlZHVsZXIEAPUHAYBwYWxsZXRfc2NoZWR1bGVyOjpFdmVudDxSdW50aW1lPgAGAChQYXJhbWV0ZXJzBAD9BwGEcGFsbGV0X3BhcmFtZXRlcnM6OkV2ZW50PFJ1bnRpbWU+AAcAUE11bHRpQmxvY2tNaWdyYXRpb25zBAAlCAGEcGFsbGV0X21pZ3JhdGlvbnM6OkV2ZW50PFJ1bnRpbWU+AAgAIEJhbGFuY2VzBAApCAF8cGFsbGV0X2JhbGFuY2VzOjpFdmVudDxSdW50aW1lPgAKAEhUcmFuc2FjdGlvblBheW1lbnQEAGEIAahwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudDo6RXZlbnQ8UnVudGltZT4ACwA4QXNzZXRUeFBheW1lbnQEAGUIAchwYWxsZXRfYXNzZXRfY29udmVyc2lvbl90eF9wYXltZW50OjpFdmVudDxSdW50aW1lPgANABxWZXN0aW5nBABpCAF4cGFsbGV0X3Zlc3Rpbmc6OkV2ZW50PFJ1bnRpbWU+AA4AGENsYWltcwQAbQgBdHBhbGxldF9jbGFpbXM6OkV2ZW50PFJ1bnRpbWU+AA8ARENvbGxhdG9yU2VsZWN0aW9uBABxCAGkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbjo6RXZlbnQ8UnVudGltZT4AFQAcU2Vzc2lvbgQAdQgBeHBhbGxldF9zZXNzaW9uOjpFdmVudDxSdW50aW1lPgAWACRYY21wUXVldWUEAHkIAaRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlOjpFdmVudDxSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQAfQgBaHBhbGxldF94Y206OkV2ZW50PFJ1bnRpbWU+AB8AKEN1bXVsdXNYY20EAI0IAYhjdW11bHVzX3BhbGxldF94Y206OkV2ZW50PFJ1bnRpbWU+ACAARFRvS3VzYW1hWGNtUm91dGVyBACRCAFZAXBhbGxldF94Y21fYnJpZGdlX2h1Yl9yb3V0ZXI6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF94Y21fYnJpZGdlX2h1Yl9yb3V0ZXIKOjpJbnN0YW5jZTE+ACIAME1lc3NhZ2VRdWV1ZQQAlQgBkHBhbGxldF9tZXNzYWdlX3F1ZXVlOjpFdmVudDxSdW50aW1lPgAjAGBTbm93YnJpZGdlU3lzdGVtRnJvbnRlbmQEAJ0IAcRzbm93YnJpZGdlX3BhbGxldF9zeXN0ZW1fZnJvbnRlbmQ6OkV2ZW50PFJ1bnRpbWU+ACQAHFV0aWxpdHkEAKEIAVRwYWxsZXRfdXRpbGl0eTo6RXZlbnQAKAAgTXVsdGlzaWcEAKUIAXxwYWxsZXRfbXVsdGlzaWc6OkV2ZW50PFJ1bnRpbWU+ACkAFFByb3h5BACpCAFwcGFsbGV0X3Byb3h5OjpFdmVudDxSdW50aW1lPgAqABxJbmRpY2VzBACxCAF4cGFsbGV0X2luZGljZXM6OkV2ZW50PFJ1bnRpbWU+ACsAGEFzc2V0cwQAtQgB3HBhbGxldF9hc3NldHM6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMT4AMgAcVW5pcXVlcwQAuQgBeHBhbGxldF91bmlxdWVzOjpFdmVudDxSdW50aW1lPgAzABBOZnRzBAC9CAFscGFsbGV0X25mdHM6OkV2ZW50PFJ1bnRpbWU+ADQANEZvcmVpZ25Bc3NldHMEAMUIAdxwYWxsZXRfYXNzZXRzOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTI+ADUAKFBvb2xBc3NldHMEAMkIAdxwYWxsZXRfYXNzZXRzOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTM+ADYAPEFzc2V0Q29udmVyc2lvbgQAzQgBnHBhbGxldF9hc3NldF9jb252ZXJzaW9uOjpFdmVudDxSdW50aW1lPgA3ADRBc3NldHNGcmVlemVyBADhCAEdAXBhbGxldF9hc3NldHNfZnJlZXplcjo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X2Fzc2V0c19mcmVlemVyOjpJbnN0YW5jZTE+ADgAMEFzc2V0c0hvbGRlcgQA5QgBFQFwYWxsZXRfYXNzZXRzX2hvbGRlcjo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X2Fzc2V0c19ob2xkZXI6Okluc3RhbmNlMT4AOQAgVHJlYXN1cnkEAOkIAXxwYWxsZXRfdHJlYXN1cnk6OkV2ZW50PFJ1bnRpbWU+ADwAQENvbnZpY3Rpb25Wb3RpbmcEAO0IAaBwYWxsZXRfY29udmljdGlvbl92b3Rpbmc6OkV2ZW50PFJ1bnRpbWU+AD0AJFJlZmVyZW5kYQQA8QgBgHBhbGxldF9yZWZlcmVuZGE6OkV2ZW50PFJ1bnRpbWU+AD4AJFdoaXRlbGlzdAQA+QgBgHBhbGxldF93aGl0ZWxpc3Q6OkV2ZW50PFJ1bnRpbWU+AEAAIEJvdW50aWVzBAAJCQF8cGFsbGV0X2JvdW50aWVzOjpFdmVudDxSdW50aW1lPgBBADRDaGlsZEJvdW50aWVzBAANCQGUcGFsbGV0X2NoaWxkX2JvdW50aWVzOjpFdmVudDxSdW50aW1lPgBCACRBc3NldFJhdGUEABEJAYRwYWxsZXRfYXNzZXRfcmF0ZTo6RXZlbnQ8UnVudGltZT4AQwBITXVsdGlBc3NldEJvdW50aWVzBAAVCQGscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzOjpFdmVudDxSdW50aW1lPgBEAAxEYXAEABkJAWhwYWxsZXRfZGFwOjpFdmVudDxSdW50aW1lPgBFAEhTdGF0ZVRyaWVNaWdyYXRpb24EACEJAaxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkV2ZW50PFJ1bnRpbWU+AEYAPE5vbWluYXRpb25Qb29scwQALQkBnHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpFdmVudDxSdW50aW1lPgBQACRWb3Rlckxpc3QEADUJAfRwYWxsZXRfYmFnc19saXN0OjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYmFnc19saXN0OjpJbnN0YW5jZTE+AFIAQERlbGVnYXRlZFN0YWtpbmcEADkJAaBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmc6OkV2ZW50PFJ1bnRpbWU+AFMAPFN0YWtpbmdSY0NsaWVudAQAPQkBuHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudDo6RXZlbnQ8UnVudGltZT4AVABITXVsdGlCbG9ja0VsZWN0aW9uBABFCQHQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpFdmVudDxSdW50aW1lPgBVAGhNdWx0aUJsb2NrRWxlY3Rpb25WZXJpZmllcgQASQkB+HBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jazo6dmVyaWZpZXI6OkV2ZW50PFJ1bnRpbWU+AFYAYE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZAQAWQkB8HBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jazo6c2lnbmVkOjpFdmVudDxSdW50aW1lPgBYABxTdGFraW5nBABdCQGQcGFsbGV0X3N0YWtpbmdfYXN5bmM6OkV2ZW50PFJ1bnRpbWU+AFkARE1lbWJlcnNTdWJzY3JpYmVyBABtCQG8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlcjo6RXZlbnQ8UnVudGltZT4AYQA0QWxpYXNBY2NvdW50cwQAcQkBrGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50czo6RXZlbnQ8UnVudGltZT4AYgAQUGdhcwQAdQkBhGluZGl2X3BhbGxldF9wZ2FzOjpFdmVudDxSdW50aW1lPgBjABhSZXZpdmUEAHkJAXRwYWxsZXRfcmV2aXZlOjpFdmVudDxSdW50aW1lPgBkADBEb3Ruc0dhdGV3YXkEAH0JAahpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheTo6RXZlbnQ8UnVudGltZT4AmAAQU3VkbwQAgQkBbHBhbGxldF9zdWRvOjpFdmVudDxSdW50aW1lPgD7ADRQZ2FzQWxsb3dhbmNlBACFCQGUcGFsbGV0X3BnYXNfYWxsb3dhbmNlOjpFdmVudDxSdW50aW1lPgD8AADFBwwwZnJhbWVfc3lzdGVtGHBhbGxldBRFdmVudAQEVAABIEBFeHRyaW5zaWNTdWNjZXNzBAE0ZGlzcGF0Y2hfaW5mb8kHAUREaXNwYXRjaEV2ZW50SW5mbwAABJBBbiBleHRyaW5zaWMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS48RXh0cmluc2ljRmFpbGVkCAE4ZGlzcGF0Y2hfZXJyb3LVBwE0RGlzcGF0Y2hFcnJvcgABNGRpc3BhdGNoX2luZm/JBwFERGlzcGF0Y2hFdmVudEluZm8AAQRQQW4gZXh0cmluc2ljIGZhaWxlZC4sQ29kZVVwZGF0ZWQEARBoYXNoPAEcVDo6SGFzaAACBNBgOmNvZGVgIHdhcyB1cGRhdGVkIHRvIHRoZSBjb2RlIHdpdGggdGhlIGdpdmVuIGhhc2guKE5ld0FjY291bnQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAMEaEEgbmV3IGFjY291bnQgd2FzIGNyZWF0ZWQuNEtpbGxlZEFjY291bnQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAQEWEFuIGFjY291bnQgd2FzIHJlYXBlZC4gUmVtYXJrZWQIARhzZW5kZXIEATBUOjpBY2NvdW50SWQAARBoYXNoPAEcVDo6SGFzaAAFBHBPbiBvbi1jaGFpbiByZW1hcmsgaGFwcGVuZWQuRFVwZ3JhZGVBdXRob3JpemVkCAEkY29kZV9oYXNoPAEcVDo6SGFzaAABNGNoZWNrX3ZlcnNpb25ZAQEQYm9vbAAGBGhBbiB1cGdyYWRlIHdhcyBhdXRob3JpemVkLoBSZWplY3RlZEludmFsaWRBdXRob3JpemVkVXBncmFkZQgBJGNvZGVfaGFzaDwBHFQ6Okhhc2gAARRlcnJvctUHATREaXNwYXRjaEVycm9yAAcEEQFBbiBpbnZhbGlkIGF1dGhvcml6ZWQgdXBncmFkZSB3YXMgcmVqZWN0ZWQgd2hpbGUgdHJ5aW5nIHRvIGFwcGx5IGl0LgRwRXZlbnQgZm9yIHRoZSBTeXN0ZW0gcGFsbGV0LskHCDBmcmFtZV9zeXN0ZW1ERGlzcGF0Y2hFdmVudEluZm8AAAwBGHdlaWdodBEBARhXZWlnaHQAARRjbGFzc80HATREaXNwYXRjaENsYXNzAAEgcGF5c19mZWXRBwEQUGF5cwAAzQcMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2g0RGlzcGF0Y2hDbGFzcwABDBhOb3JtYWwAAAAsT3BlcmF0aW9uYWwAAQAkTWFuZGF0b3J5AAIAANEHDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoEFBheXMAAQgMWWVzAAAACE5vAAEAANUHCChzcF9ydW50aW1lNERpc3BhdGNoRXJyb3IAATwUT3RoZXIAAAAwQ2Fubm90TG9va3VwAAEAJEJhZE9yaWdpbgACABhNb2R1bGUEANkHASxNb2R1bGVFcnJvcgADAERDb25zdW1lclJlbWFpbmluZwAEACxOb1Byb3ZpZGVycwAFAEBUb29NYW55Q29uc3VtZXJzAAYAFFRva2VuBADdBwEoVG9rZW5FcnJvcgAHAChBcml0aG1ldGljBADhBwE8QXJpdGhtZXRpY0Vycm9yAAgANFRyYW5zYWN0aW9uYWwEAOUHAUhUcmFuc2FjdGlvbmFsRXJyb3IACQAkRXhoYXVzdGVkAAoAKENvcnJ1cHRpb24ACwAsVW5hdmFpbGFibGUADAA4Um9vdE5vdEFsbG93ZWQADQAQVHJpZQQA6QcBJFRyaWVFcnJvcgAOAADZBwgoc3BfcnVudGltZSxNb2R1bGVFcnJvcgAACAEUaW5kZXgMAQh1OAABFGVycm9ycAGMW3U4OyBNQVhfTU9EVUxFX0VSUk9SX0VOQ09ERURfU0laRV0AAN0HCChzcF9ydW50aW1lKFRva2VuRXJyb3IAAShARnVuZHNVbmF2YWlsYWJsZQAAADBPbmx5UHJvdmlkZXIAAQAwQmVsb3dNaW5pbXVtAAIAMENhbm5vdENyZWF0ZQADADBVbmtub3duQXNzZXQABAAYRnJvemVuAAUALFVuc3VwcG9ydGVkAAYAQENhbm5vdENyZWF0ZUhvbGQABwA0Tm90RXhwZW5kYWJsZQAIABxCbG9ja2VkAAkAAOEHCDRzcF9hcml0aG1ldGljPEFyaXRobWV0aWNFcnJvcgABDCRVbmRlcmZsb3cAAAAgT3ZlcmZsb3cAAQA4RGl2aXNpb25CeVplcm8AAgAA5QcIKHNwX3J1bnRpbWVIVHJhbnNhY3Rpb25hbEVycm9yAAEIMExpbWl0UmVhY2hlZAAAABxOb0xheWVyAAEAAOkHDChzcF9ydW50aW1lMHByb3ZpbmdfdHJpZSRUcmllRXJyb3IAAThASW52YWxpZFN0YXRlUm9vdAAAAEhJbmNvbXBsZXRlRGF0YWJhc2UAAQBQVmFsdWVBdEluY29tcGxldGVLZXkAAgAwRGVjb2RlckVycm9yAAMALEludmFsaWRIYXNoAAQAMER1cGxpY2F0ZUtleQAFADhFeHRyYW5lb3VzTm9kZQAGADxFeHRyYW5lb3VzVmFsdWUABwBcRXh0cmFuZW91c0hhc2hSZWZlcmVuY2UACABUSW52YWxpZENoaWxkUmVmZXJlbmNlAAkANFZhbHVlTWlzbWF0Y2gACgA8SW5jb21wbGV0ZVByb29mAAsAMFJvb3RNaXNtYXRjaAAMACxEZWNvZGVFcnJvcgANAADtBwx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQURXZlbnQEBFQAARhgVmFsaWRhdGlvbkZ1bmN0aW9uU3RvcmVkAAAE0FRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIGhhcyBiZWVuIHNjaGVkdWxlZCB0byBhcHBseS5kVmFsaWRhdGlvbkZ1bmN0aW9uQXBwbGllZAQBVHJlbGF5X2NoYWluX2Jsb2NrX251bTgBVFJlbGF5Q2hhaW5CbG9ja051bWJlcgABBEUBVGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gd2FzIGFwcGxpZWQgYXMgb2YgdGhlIGNvbnRhaW5lZCByZWxheSBjaGFpbiBibG9jayBudW1iZXIubFZhbGlkYXRpb25GdW5jdGlvbkRpc2NhcmRlZAACBLBUaGUgcmVsYXktY2hhaW4gYWJvcnRlZCB0aGUgdXBncmFkZSBwcm9jZXNzLmBEb3dud2FyZE1lc3NhZ2VzUmVjZWl2ZWQEARRjb3VudDgBDHUzMgADBAEBU29tZSBkb3dud2FyZCBtZXNzYWdlcyBoYXZlIGJlZW4gcmVjZWl2ZWQgYW5kIHdpbGwgYmUgcHJvY2Vzc2VkLmREb3dud2FyZE1lc3NhZ2VzUHJvY2Vzc2VkCAEsd2VpZ2h0X3VzZWQRAQEYV2VpZ2h0AAEgZG1xX2hlYWQ8AURyZWxheV9jaGFpbjo6SGFzaAAEBOBEb3dud2FyZCBtZXNzYWdlcyB3ZXJlIHByb2Nlc3NlZCB1c2luZyB0aGUgZ2l2ZW4gd2VpZ2h0LkRVcHdhcmRNZXNzYWdlU2VudAQBMG1lc3NhZ2VfaGFzaDkHATxPcHRpb248WGNtSGFzaD4ABQS4QW4gdXB3YXJkIG1lc3NhZ2Ugd2FzIHNlbnQgdG8gdGhlIHJlbGF5IGNoYWluLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldPEHDDxwYWxsZXRfcHJlaW1hZ2UYcGFsbGV0FEV2ZW50BARUAAEMFE5vdGVkBAEQaGFzaDwBHFQ6Okhhc2gAAARoQSBwcmVpbWFnZSBoYXMgYmVlbiBub3RlZC4kUmVxdWVzdGVkBAEQaGFzaDwBHFQ6Okhhc2gAAQR4QSBwcmVpbWFnZSBoYXMgYmVlbiByZXF1ZXN0ZWQuHENsZWFyZWQEARBoYXNoPAEcVDo6SGFzaAACBGxBIHByZWltYWdlIGhhcyBiZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXT1BwxAcGFsbGV0X3NjaGVkdWxlchhwYWxsZXQURXZlbnQEBFQAASgkU2NoZWR1bGVkCAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAEUaW5kZXg4AQx1MzIAAARQU2NoZWR1bGVkIHNvbWUgdGFzay4gQ2FuY2VsZWQIARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4AARRpbmRleDgBDHUzMgABBExDYW5jZWxlZCBzb21lIHRhc2suKERpc3BhdGNoZWQMARB0YXNrzAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWQ5BwFAT3B0aW9uPFRhc2tOYW1lPgABGHJlc3VsdPkHAThEaXNwYXRjaFJlc3VsdAACBFREaXNwYXRjaGVkIHNvbWUgdGFzay4gUmV0cnlTZXQQARB0YXNrzAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWQ5BwFAT3B0aW9uPFRhc2tOYW1lPgABGHBlcmlvZDgBREJsb2NrTnVtYmVyRm9yPFQ+AAEccmV0cmllcwwBCHU4AAMEoFNldCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIHNvbWUgdGFzay44UmV0cnlDYW5jZWxsZWQIARB0YXNrzAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWQ5BwFAT3B0aW9uPFRhc2tOYW1lPgAEBKxDYW5jZWwgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBzb21lIHRhc2suPENhbGxVbmF2YWlsYWJsZQgBEHRhc2vMAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZDkHAUBPcHRpb248VGFza05hbWU+AAUEKQFUaGUgY2FsbCBmb3IgdGhlIHByb3ZpZGVkIGhhc2ggd2FzIG5vdCBmb3VuZCBzbyB0aGUgdGFzayBoYXMgYmVlbiBhYm9ydGVkLjhQZXJpb2RpY0ZhaWxlZAgBEHRhc2vMAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZDkHAUBPcHRpb248VGFza05hbWU+AAYEPQFUaGUgZ2l2ZW4gdGFzayB3YXMgdW5hYmxlIHRvIGJlIHJlbmV3ZWQgc2luY2UgdGhlIGFnZW5kYSBpcyBmdWxsIGF0IHRoYXQgYmxvY2suLFJldHJ5RmFpbGVkCAEQdGFza8wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkOQcBQE9wdGlvbjxUYXNrTmFtZT4ABwhdAVRoZSBnaXZlbiB0YXNrIHdhcyB1bmFibGUgdG8gYmUgcmV0cmllZCBzaW5jZSB0aGUgYWdlbmRhIGlzIGZ1bGwgYXQgdGhhdCBibG9jayBvciB0aGVyZZx3YXMgbm90IGVub3VnaCB3ZWlnaHQgdG8gcmVzY2hlZHVsZSBpdC5UUGVybWFuZW50bHlPdmVyd2VpZ2h0CAEQdGFza8wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkOQcBQE9wdGlvbjxUYXNrTmFtZT4ACATwVGhlIGdpdmVuIHRhc2sgY2FuIG5ldmVyIGJlIGV4ZWN1dGVkIHNpbmNlIGl0IGlzIG92ZXJ3ZWlnaHQuQEFnZW5kYUluY29tcGxldGUEARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4ACQSEQWdlbmRhIGlzIGluY29tcGxldGUgZnJvbSBgd2hlbmAuBDBFdmVudHMgdHlwZS75BwQYUmVzdWx0CARUARAERQHVBwEICE9rBAAQAAAAAAxFcnIEANUHAAABAAD9BwxEcGFsbGV0X3BhcmFtZXRlcnMYcGFsbGV0FEV2ZW50BARUAAEEHFVwZGF0ZWQMAQxrZXkBCAHEPFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzIGFzIEFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQRkVGhlIGtleSB0aGF0IHdhcyB1cGRhdGVkLgEkb2xkX3ZhbHVlEQgB7E9wdGlvbjw8VDo6UnVudGltZVBhcmFtZXRlcnMgYXMgQWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWU+BHxUaGUgb2xkIHZhbHVlIGJlZm9yZSB0aGlzIGNhbGwuASRuZXdfdmFsdWURCAHsT3B0aW9uPDxUOjpSdW50aW1lUGFyYW1ldGVycyBhcyBBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZT4EeFRoZSBuZXcgdmFsdWUgYWZ0ZXIgdGhpcyBjYWxsLgAMUEEgUGFyYW1ldGVyIHdhcyBzZXQuALxJcyBhbHNvIGVtaXR0ZWQgd2hlbiB0aGUgdmFsdWUgd2FzIG5vdCBjaGFuZ2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldAEICHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lUFJ1bnRpbWVQYXJhbWV0ZXJzS2V5AAEMPFN0YWtpbmdFbGVjdGlvbgQABQgBxQE8ZHluYW1pY19wYXJhbXM6OnN0YWtpbmdfZWxlY3Rpb246OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzCjo6ZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQAAACRTY2hlZHVsZXIEAAkIAakBPGR5bmFtaWNfcGFyYW1zOjpzY2hlZHVsZXI6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQABADBNZXNzYWdlUXVldWUEAA0IAbkBPGR5bmFtaWNfcGFyYW1zOjptZXNzYWdlX3F1ZXVlOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0czo6CmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkAAgAABQgQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbjRQYXJhbWV0ZXJzS2V5AAEcLFNpZ25lZFBoYXNlBADcASxTaWduZWRQaGFzZQAAAFBNYXhTaWduZWRTdWJtaXNzaW9ucwQA5AFQTWF4U2lnbmVkU3VibWlzc2lvbnMAAQA0VW5zaWduZWRQaGFzZQQA6AE0VW5zaWduZWRQaGFzZQACAChNaW5lclBhZ2VzBADsAShNaW5lclBhZ2VzAAMARE1heEVsZWN0aW5nVm90ZXJzBADwAURNYXhFbGVjdGluZ1ZvdGVycwAEAFhUYXJnZXRTbmFwc2hvdFBlckJsb2NrBAD0AVhUYXJnZXRTbmFwc2hvdFBlckJsb2NrAAUAOE1heEVyYUR1cmF0aW9uBAD4AThNYXhFcmFEdXJhdGlvbgAGAAAJCBBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtcyRzY2hlZHVsZXI0UGFyYW1ldGVyc0tleQABCFBNYXhTY2hlZHVsZWRQZXJCbG9jawQABQEBUE1heFNjaGVkdWxlZFBlckJsb2NrAAAANE1heGltdW1XZWlnaHQEAAkBATRNYXhpbXVtV2VpZ2h0AAEAAA0IEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zNG1lc3NhZ2VfcXVldWU0UGFyYW1ldGVyc0tleQABCDxNYXhPbkluaXRXZWlnaHQEABkBATxNYXhPbkluaXRXZWlnaHQAAAA8TWF4T25JZGxlV2VpZ2h0BAAhAQE8TWF4T25JZGxlV2VpZ2h0AAEAABEIBBhPcHRpb24EBFQBFQgBCBBOb25lAAAAEFNvbWUEABUIAAABAAAVCAhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZVhSdW50aW1lUGFyYW1ldGVyc1ZhbHVlAAEMPFN0YWtpbmdFbGVjdGlvbgQAGQgBzQE8ZHluYW1pY19wYXJhbXM6OnN0YWtpbmdfZWxlY3Rpb246OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzCjo6ZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAAAJFNjaGVkdWxlcgQAHQgBsQE8ZHluYW1pY19wYXJhbXM6OnNjaGVkdWxlcjo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHM6OgpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWUAAQAwTWVzc2FnZVF1ZXVlBAAhCAHBATxkeW5hbWljX3BhcmFtczo6bWVzc2FnZV9xdWV1ZTo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHM6OgpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWUAAgAAGQgQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbjxQYXJhbWV0ZXJzVmFsdWUAARwsU2lnbmVkUGhhc2UEADgBLEJsb2NrTnVtYmVyAAAAUE1heFNpZ25lZFN1Ym1pc3Npb25zBAA4AQx1MzIAAQA0VW5zaWduZWRQaGFzZQQAOAEsQmxvY2tOdW1iZXIAAgAoTWluZXJQYWdlcwQAOAEMdTMyAAMARE1heEVsZWN0aW5nVm90ZXJzBAA4AQx1MzIABABYVGFyZ2V0U25hcHNob3RQZXJCbG9jawQAOAEMdTMyAAUAOE1heEVyYUR1cmF0aW9uBAAoAQx1NjQABgAAHQgQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMkc2NoZWR1bGVyPFBhcmFtZXRlcnNWYWx1ZQABCFBNYXhTY2hlZHVsZWRQZXJCbG9jawQAOAEMdTMyAAAANE1heGltdW1XZWlnaHQEABEBARhXZWlnaHQAAQAAIQgQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM0bWVzc2FnZV9xdWV1ZTxQYXJhbWV0ZXJzVmFsdWUAAQg8TWF4T25Jbml0V2VpZ2h0BAANAQE4T3B0aW9uPFdlaWdodD4AAAA8TWF4T25JZGxlV2VpZ2h0BAANAQE4T3B0aW9uPFdlaWdodD4AAQAAJQgMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFdmVudAQEVAABIDhVcGdyYWRlU3RhcnRlZAQBKG1pZ3JhdGlvbnM4AQx1MzIQ0FRoZSBudW1iZXIgb2YgbWlncmF0aW9ucyB0aGF0IHRoaXMgdXBncmFkZSBjb250YWlucy4AQQFUaGlzIGNhbiBiZSB1c2VkIHRvIGRlc2lnbiBhIHByb2dyZXNzIGluZGljYXRvciBpbiBjb21iaW5hdGlvbiB3aXRoIGNvdW50aW5nIHRoZcxgTWlncmF0aW9uQ29tcGxldGVkYCBhbmQgYE1pZ3JhdGlvblNraXBwZWRgIGV2ZW50cy4ADGhBIFJ1bnRpbWUgdXBncmFkZSBzdGFydGVkLgD4SXRzIGVuZCBpcyBpbmRpY2F0ZWQgYnkgYFVwZ3JhZGVDb21wbGV0ZWRgIG9yIGBVcGdyYWRlRmFpbGVkYC5AVXBncmFkZUNvbXBsZXRlZAABDJhUaGUgY3VycmVudCBydW50aW1lIHVwZ3JhZGUgY29tcGxldGVkLgAdAVRoaXMgaW1wbGllcyB0aGF0IGFsbCBvZiBpdHMgbWlncmF0aW9ucyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IGFzIHdlbGwuNFVwZ3JhZGVGYWlsZWQAAgxcUnVudGltZSB1cGdyYWRlIGZhaWxlZC4A6FRoaXMgaXMgdmVyeSBiYWQgYW5kIHdpbGwgcmVxdWlyZSBnb3Zlcm5hbmNlIGludGVydmVudGlvbi5ATWlncmF0aW9uU2tpcHBlZAQBFGluZGV4OAEMdTMyBCkBVGhlIGluZGV4IG9mIHRoZSBza2lwcGVkIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4DBAkBQSBtaWdyYXRpb24gd2FzIHNraXBwZWQgc2luY2UgaXQgd2FzIGFscmVhZHkgZXhlY3V0ZWQgaW4gdGhlIHBhc3QuRE1pZ3JhdGlvbkFkdmFuY2VkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4EBFxBIG1pZ3JhdGlvbiBwcm9ncmVzc2VkLkhNaWdyYXRpb25Db21wbGV0ZWQIARRpbmRleDgBDHUzMgQJAVRoZSBpbmRleCBvZiB0aGUgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgEQdG9vazgBREJsb2NrTnVtYmVyRm9yPFQ+BNRUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IHRoaXMgbWlncmF0aW9uIHRvb2sgc28gZmFyLgUEWEEgTWlncmF0aW9uIGNvbXBsZXRlZC48TWlncmF0aW9uRmFpbGVkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4GDExBIE1pZ3JhdGlvbiBmYWlsZWQuAE0BVGhpcyBpbXBsaWVzIHRoYXQgdGhlIHdob2xlIHVwZ3JhZGUgZmFpbGVkIGFuZCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyByZXF1aXJlZC48SGlzdG9yaWNDbGVhcmVkBAEsbmV4dF9jdXJzb3JJAQE8T3B0aW9uPFZlYzx1OD4+BOhTaG91bGQgYmUgcGFzc2VkIHRvIGBjbGVhcl9oaXN0b3JpY2AgaW4gYSBzdWNjZXNzaXZlIGNhbGwuBwTIVGhlIHNldCBvZiBoaXN0b3JpY2FsIG1pZ3JhdGlvbnMgaGFzIGJlZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQpCAw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBRFdmVudAgEVAAESQABeBxFbmRvd2VkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABMGZyZWVfYmFsYW5jZVUBAShUOjpCYWxhbmNlAAAEuEFuIGFjY291bnQgd2FzIGNyZWF0ZWQgd2l0aCBzb21lIGZyZWUgYmFsYW5jZS4gRHVzdExvc3QIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAAQg9AUFuIGFjY291bnQgd2FzIHJlbW92ZWQgd2hvc2UgYmFsYW5jZSB3YXMgbm9uLXplcm8gYnV0IGJlbG93IEV4aXN0ZW50aWFsRGVwb3NpdCx4cmVzdWx0aW5nIGluIGFuIG91dHJpZ2h0IGxvc3MuIFRyYW5zZmVyDAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAAgRMVHJhbnNmZXIgc3VjY2VlZGVkLihCYWxhbmNlU2V0CAEMd2hvBAEwVDo6QWNjb3VudElkAAEQZnJlZVUBAShUOjpCYWxhbmNlAAMEaEEgYmFsYW5jZSB3YXMgc2V0IGJ5IHJvb3QuIFJlc2VydmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UABATgU29tZSBiYWxhbmNlIHdhcyByZXNlcnZlZCAobW92ZWQgZnJvbSBmcmVlIHRvIHJlc2VydmVkKS4oVW5yZXNlcnZlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAUE6FNvbWUgYmFsYW5jZSB3YXMgdW5yZXNlcnZlZCAobW92ZWQgZnJvbSByZXNlcnZlZCB0byBmcmVlKS5IUmVzZXJ2ZVJlcGF0cmlhdGVkEAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAAUhkZXN0aW5hdGlvbl9zdGF0dXMtCAEYU3RhdHVzAAYITQFTb21lIGJhbGFuY2Ugd2FzIG1vdmVkIGZyb20gdGhlIHJlc2VydmUgb2YgdGhlIGZpcnN0IGFjY291bnQgdG8gdGhlIHNlY29uZCBhY2NvdW50LthGaW5hbCBhcmd1bWVudCBpbmRpY2F0ZXMgdGhlIGRlc3RpbmF0aW9uIGJhbGFuY2UgdHlwZS4cRGVwb3NpdAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAcE2FNvbWUgYW1vdW50IHdhcyBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiBXaXRoZHJhdwgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAgEHQFTb21lIGFtb3VudCB3YXMgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLhxTbGFzaGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UACQQBAVNvbWUgYW1vdW50IHdhcyByZW1vdmVkIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIG1pc2JlaGF2aW9yKS4YTWludGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UACgScU29tZSBhbW91bnQgd2FzIG1pbnRlZCBpbnRvIGFuIGFjY291bnQuME1pbnRlZENyZWRpdAQBGGFtb3VudFUBAShUOjpCYWxhbmNlAAsE4FNvbWUgY3JlZGl0IHdhcyBiYWxhbmNlZCBhbmQgYWRkZWQgdG8gdGhlIFRvdGFsSXNzdWFuY2UuGEJ1cm5lZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAwEnFNvbWUgYW1vdW50IHdhcyBidXJuZWQgZnJvbSBhbiBhY2NvdW50LihCdXJuZWREZWJ0BAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UADQTMU29tZSBkZWJ0IGhhcyBiZWVuIGRyb3BwZWQgZnJvbSB0aGUgVG90YWwgSXNzdWFuY2UuJFN1c3BlbmRlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAA4EFQFTb21lIGFtb3VudCB3YXMgc3VzcGVuZGVkIGZyb20gYW4gYWNjb3VudCAoaXQgY2FuIGJlIHJlc3RvcmVkIGxhdGVyKS4gUmVzdG9yZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAPBKRTb21lIGFtb3VudCB3YXMgcmVzdG9yZWQgaW50byBhbiBhY2NvdW50LiBVcGdyYWRlZAQBDHdobwQBMFQ6OkFjY291bnRJZAAQBGBBbiBhY2NvdW50IHdhcyB1cGdyYWRlZC4YSXNzdWVkBAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAEQQtAVRvdGFsIGlzc3VhbmNlIHdhcyBpbmNyZWFzZWQgYnkgYGFtb3VudGAsIGNyZWF0aW5nIGEgY3JlZGl0IHRvIGJlIGJhbGFuY2VkLiRSZXNjaW5kZWQEARhhbW91bnRVAQEoVDo6QmFsYW5jZQASBCUBVG90YWwgaXNzdWFuY2Ugd2FzIGRlY3JlYXNlZCBieSBgYW1vdW50YCwgY3JlYXRpbmcgYSBkZWJ0IHRvIGJlIGJhbGFuY2VkLhhMb2NrZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQATBGBTb21lIGJhbGFuY2Ugd2FzIGxvY2tlZC4gVW5sb2NrZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAUBGhTb21lIGJhbGFuY2Ugd2FzIHVubG9ja2VkLhhGcm96ZW4IAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAVBGBTb21lIGJhbGFuY2Ugd2FzIGZyb3plbi4YVGhhd2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAFgRgU29tZSBiYWxhbmNlIHdhcyB0aGF3ZWQuTFRvdGFsSXNzdWFuY2VGb3JjZWQIAQxvbGRVAQEoVDo6QmFsYW5jZQABDG5ld1UBAShUOjpCYWxhbmNlABcErFRoZSBgVG90YWxJc3N1YW5jZWAgd2FzIGZvcmNlZnVsbHkgY2hhbmdlZC4QSGVsZAwBGHJlYXNvbjEIAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlABgEgFNvbWUgYmFsYW5jZSB3YXMgcGxhY2VkIG9uIGhvbGQuKEJ1cm5lZEhlbGQMARhyZWFzb24xCAFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAZBKBIZWxkIGJhbGFuY2Ugd2FzIGJ1cm5lZCBmcm9tIGFuIGFjY291bnQuOFRyYW5zZmVyT25Ib2xkEAEYcmVhc29uMQgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEQZGVzdAQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlABoEFQFBIHRyYW5zZmVyIG9mIGBhbW91bnRgIG9uIGhvbGQgZnJvbSBgc291cmNlYCB0byBgZGVzdGAgd2FzIGluaXRpYXRlZC48VHJhbnNmZXJBbmRIb2xkEAEYcmVhc29uMQgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEQZGVzdAQBMFQ6OkFjY291bnRJZAABLHRyYW5zZmVycmVkVQEBKFQ6OkJhbGFuY2UAGwQJAVRoZSBgdHJhbnNmZXJyZWRgIGJhbGFuY2UgaXMgcGxhY2VkIG9uIGhvbGQgYXQgdGhlIGBkZXN0YCBhY2NvdW50LiBSZWxlYXNlZAwBGHJlYXNvbjEIAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlABwEkFNvbWUgYmFsYW5jZSB3YXMgcmVsZWFzZWQgZnJvbSBob2xkLihVbmV4cGVjdGVkBABdCAE4VW5leHBlY3RlZEtpbmQAHQSwQW4gdW5leHBlY3RlZC9kZWZlbnNpdmUgZXZlbnQgd2FzIHRyaWdnZXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQtCBQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2M0QmFsYW5jZVN0YXR1cwABCBBGcmVlAAAAIFJlc2VydmVkAAEAADEICHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lRFJ1bnRpbWVIb2xkUmVhc29uAAEoIFByZWltYWdlBAA1CAFscGFsbGV0X3ByZWltYWdlOjpIb2xkUmVhc29uAAUAHFNlc3Npb24EADkIAWhwYWxsZXRfc2Vzc2lvbjo6SG9sZFJlYXNvbgAWACxQb2xrYWRvdFhjbQQAPQgBWHBhbGxldF94Y206OkhvbGRSZWFzb24AHwBITXVsdGlBc3NldEJvdW50aWVzBABBCAGccGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzOjpIb2xkUmVhc29uAEQASFN0YXRlVHJpZU1pZ3JhdGlvbgQARQgBnHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbjo6SG9sZFJlYXNvbgBGAEBEZWxlZ2F0ZWRTdGFraW5nBABJCAGQcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nOjpIb2xkUmVhc29uAFMAPFN0YWtpbmdSY0NsaWVudAQATQgBqHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudDo6SG9sZFJlYXNvbgBUAGBNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQEAFEIAeBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s6OnNpZ25lZDo6SG9sZFJlYXNvbgBYABxTdGFraW5nBABVCAGAcGFsbGV0X3N0YWtpbmdfYXN5bmM6OkhvbGRSZWFzb24AWQAYUmV2aXZlBABZCAFkcGFsbGV0X3Jldml2ZTo6SG9sZFJlYXNvbgBkAAA1CAw8cGFsbGV0X3ByZWltYWdlGHBhbGxldChIb2xkUmVhc29uAAEEIFByZWltYWdlAAAAADkIDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQoSG9sZFJlYXNvbgABBBBLZXlzAAAAAD0IDChwYWxsZXRfeGNtGHBhbGxldChIb2xkUmVhc29uAAEEOEF1dGhvcml6ZUFsaWFzAAAAAEEIDGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMYcGFsbGV0KEhvbGRSZWFzb24EBEkAAQQ4Q3VyYXRvckRlcG9zaXQAAAAARQgMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQoSG9sZFJlYXNvbgABBDxTbGFzaEZvck1pZ3JhdGUAAAAASQgMYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxhwYWxsZXQoSG9sZFJlYXNvbgABBERTdGFraW5nRGVsZWdhdGlvbgAAAABNCAx4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50GHBhbGxldChIb2xkUmVhc29uAAEEEEtleXMAAAAAUQgQkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhzaWduZWQYcGFsbGV0KEhvbGRSZWFzb24AAQRAU2lnbmVkU3VibWlzc2lvbgAAAABVCBBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldChIb2xkUmVhc29uAAEEHFN0YWtpbmcAAAAAWQgMNHBhbGxldF9yZXZpdmUYcGFsbGV0KEhvbGRSZWFzb24AAQxgQ29kZVVwbG9hZERlcG9zaXRSZXNlcnZlAAAAVFN0b3JhZ2VEZXBvc2l0UmVzZXJ2ZQABADhBZGRyZXNzTWFwcGluZwACAABdCAw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldDhVbmV4cGVjdGVkS2luZAABCDhCYWxhbmNlVXBkYXRlZAAAAFRGYWlsZWRUb011dGF0ZUFjY291bnQAAQAAYQgMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50GHBhbGxldBRFdmVudAQEVAABBEhUcmFuc2FjdGlvbkZlZVBhaWQMAQx3aG8EATBUOjpBY2NvdW50SWQAAShhY3R1YWxfZmVlVQEBMEJhbGFuY2VPZjxUPgABDHRpcFUBATBCYWxhbmNlT2Y8VD4AAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsXGhhcyBiZWVuIHBhaWQgYnkgYHdob2AuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0ZQgMiHBhbGxldF9hc3NldF9jb252ZXJzaW9uX3R4X3BheW1lbnQYcGFsbGV0FEV2ZW50BARUAAEIOEFzc2V0VHhGZWVQYWlkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEoYWN0dWFsX2ZlZVUBATBCYWxhbmNlT2Y8VD4AAQx0aXBVAQEwQmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAAACFkBQSB0cmFuc2FjdGlvbiBmZWUgYGFjdHVhbF9mZWVgLCBvZiB3aGljaCBgdGlwYCB3YXMgYWRkZWQgdG8gdGhlIG1pbmltdW0gaW5jbHVzaW9uIGZlZSy4aGFzIGJlZW4gcGFpZCBieSBgd2hvYCBpbiBhbiBhc3NldCBgYXNzZXRfaWRgLkRBc3NldFJlZnVuZEZhaWxlZAQBSG5hdGl2ZV9hbW91bnRfa2VwdFUBATBCYWxhbmNlT2Y8VD4AAQT0QSBzd2FwIG9mIHRoZSByZWZ1bmQgaW4gbmF0aXZlIGN1cnJlbmN5IGJhY2sgdG8gYXNzZXQgZmFpbGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldGkIDDhwYWxsZXRfdmVzdGluZxhwYWxsZXQURXZlbnQEBFQAAQw4VmVzdGluZ0NyZWF0ZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAE4c2NoZWR1bGVfaW5kZXg4AQx1MzIAAASQQSB2ZXN0aW5nIHNjaGVkdWxlIGhhcyBiZWVuIGNyZWF0ZWQuOFZlc3RpbmdVcGRhdGVkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABIHVudmVzdGVkVQEBMEJhbGFuY2VPZjxUPgABCFEBVGhlIGFtb3VudCB2ZXN0ZWQgaGFzIGJlZW4gdXBkYXRlZC4gVGhpcyBjb3VsZCBpbmRpY2F0ZSBhIGNoYW5nZSBpbiBmdW5kcyBhdmFpbGFibGUuJQFUaGUgYmFsYW5jZSBnaXZlbiBpcyB0aGUgYW1vdW50IHdoaWNoIGlzIGxlZnQgdW52ZXN0ZWQgKGFuZCB0aHVzIGxvY2tlZCkuQFZlc3RpbmdDb21wbGV0ZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAIEnEFuIFxbYWNjb3VudFxdIGhhcyBiZWNvbWUgZnVsbHkgdmVzdGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldG0IEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXMYcGFsbGV0FEV2ZW50BARUAAEEHENsYWltZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAAUBldGhlcmV1bV9hZGRyZXNzeQEBPEV0aGVyZXVtQWRkcmVzcwABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4AAARoU29tZW9uZSBjbGFpbWVkIHNvbWUgRE9Ucy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRxCAxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQURXZlbnQEBFQAAShATmV3SW52dWxuZXJhYmxlcwQBNGludnVsbmVyYWJsZXNdAQFEVmVjPFQ6OkFjY291bnRJZD4AAARsTmV3IEludnVsbmVyYWJsZXMgd2VyZSBzZXQuREludnVsbmVyYWJsZUFkZGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABBHRBIG5ldyBJbnZ1bG5lcmFibGUgd2FzIGFkZGVkLkxJbnZ1bG5lcmFibGVSZW1vdmVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAACBHBBbiBJbnZ1bG5lcmFibGUgd2FzIHJlbW92ZWQuUE5ld0Rlc2lyZWRDYW5kaWRhdGVzBAFIZGVzaXJlZF9jYW5kaWRhdGVzOAEMdTMyAAMEpFRoZSBudW1iZXIgb2YgZGVzaXJlZCBjYW5kaWRhdGVzIHdhcyBzZXQuQE5ld0NhbmRpZGFjeUJvbmQEASxib25kX2Ftb3VudFUBATBCYWxhbmNlT2Y8VD4ABARsVGhlIGNhbmRpZGFjeSBib25kIHdhcyBzZXQuOENhbmRpZGF0ZUFkZGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAUEXEEgbmV3IGNhbmRpZGF0ZSBqb2luZWQuUENhbmRpZGF0ZUJvbmRVcGRhdGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAYEcEJvbmQgb2YgYSBjYW5kaWRhdGUgdXBkYXRlZC5AQ2FuZGlkYXRlUmVtb3ZlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQABwRgQSBjYW5kaWRhdGUgd2FzIHJlbW92ZWQuRENhbmRpZGF0ZVJlcGxhY2VkDAEMb2xkBAEwVDo6QWNjb3VudElkAAEMbmV3BAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdFUBATBCYWxhbmNlT2Y8VD4ACAT0QW4gYWNjb3VudCB3YXMgcmVwbGFjZWQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0IGJ5IGFub3RoZXIgb25lLmhJbnZhbGlkSW52dWxuZXJhYmxlU2tpcHBlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQACQhVAUFuIGFjY291bnQgd2FzIHVuYWJsZSB0byBiZSBhZGRlZCB0byB0aGUgSW52dWxuZXJhYmxlcyBiZWNhdXNlIHRoZXkgZGlkIG5vdCBoYXZlIGtleXPIcmVnaXN0ZXJlZC4gT3RoZXIgSW52dWxuZXJhYmxlcyBtYXkgaGF2ZSBiZWVuIHNldC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXR1CAw4cGFsbGV0X3Nlc3Npb24YcGFsbGV0FEV2ZW50BARUAAEQKE5ld1Nlc3Npb24EATRzZXNzaW9uX2luZGV4OAEwU2Vzc2lvbkluZGV4AAAIOQFOZXcgc2Vzc2lvbiBoYXMgaGFwcGVuZWQuIE5vdGUgdGhhdCB0aGUgYXJndW1lbnQgaXMgdGhlIHNlc3Npb24gaW5kZXgsIG5vdCB0aGWcYmxvY2sgbnVtYmVyIGFzIHRoZSB0eXBlIG1pZ2h0IHN1Z2dlc3QuJE5ld1F1ZXVlZAABCEkBVGhlIGBOZXdTZXNzaW9uYCBldmVudCBpbiB0aGUgY3VycmVudCBibG9jayBhbHNvIGltcGxpZXMgYSBuZXcgdmFsaWRhdG9yIHNldCB0byBiZRxxdWV1ZWQuRFZhbGlkYXRvckRpc2FibGVkBAEkdmFsaWRhdG9yBAE4VDo6VmFsaWRhdG9ySWQAAgRwVmFsaWRhdG9yIGhhcyBiZWVuIGRpc2FibGVkLkhWYWxpZGF0b3JSZWVuYWJsZWQEASR2YWxpZGF0b3IEAThUOjpWYWxpZGF0b3JJZAADBHhWYWxpZGF0b3IgaGFzIGJlZW4gcmUtZW5hYmxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXR5CAxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQURXZlbnQEBFQAAQQ8WGNtcE1lc3NhZ2VTZW50BAEwbWVzc2FnZV9oYXNoCAEcWGNtSGFzaAAABMBBbiBIUk1QIG1lc3NhZ2Ugd2FzIHNlbnQgdG8gYSBzaWJsaW5nIHBhcmFjaGFpbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXR9CAwocGFsbGV0X3hjbRhwYWxsZXQURXZlbnQEBFQAAXQkQXR0ZW1wdGVkBAEcb3V0Y29tZYEIAVB4Y206OmxhdGVzdDo6T3V0Y29tZQAABKhFeGVjdXRpb24gb2YgYW4gWENNIG1lc3NhZ2Ugd2FzIGF0dGVtcHRlZC4QU2VudBABGG9yaWdpbv0BASBMb2NhdGlvbgABLGRlc3RpbmF0aW9u/QEBIExvY2F0aW9uAAEcbWVzc2FnZfUCARxYY208KCk+AAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAQRgQW4gWENNIG1lc3NhZ2Ugd2FzIHNlbnQuKFNlbmRGYWlsZWQQARhvcmlnaW79AQEgTG9jYXRpb24AASxkZXN0aW5hdGlvbv0BASBMb2NhdGlvbgABFGVycm9yiQgBJFNlbmRFcnJvcgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAIEeEFuIFhDTSBtZXNzYWdlIGZhaWxlZCB0byBzZW5kLjxQcm9jZXNzWGNtRXJyb3IMARhvcmlnaW79AQEgTG9jYXRpb24AARRlcnJvciUDASBYY21FcnJvcgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAMEhEFuIFhDTSBtZXNzYWdlIGZhaWxlZCB0byBwcm9jZXNzLkhVbmV4cGVjdGVkUmVzcG9uc2UIARhvcmlnaW79AQEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQABAxZAVF1ZXJ5IHJlc3BvbnNlIHJlY2VpdmVkIHdoaWNoIGRvZXMgbm90IG1hdGNoIGEgcmVnaXN0ZXJlZCBxdWVyeS4gVGhpcyBtYXkgYmUgYmVjYXVzZSBhVQFtYXRjaGluZyBxdWVyeSB3YXMgbmV2ZXIgcmVnaXN0ZXJlZCwgaXQgbWF5IGJlIGJlY2F1c2UgaXQgaXMgYSBkdXBsaWNhdGUgcmVzcG9uc2UsIG9ycGJlY2F1c2UgdGhlIHF1ZXJ5IHRpbWVkIG91dC40UmVzcG9uc2VSZWFkeQgBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABIHJlc3BvbnNlGQMBIFJlc3BvbnNlAAUIXQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgaXMgcmVhZHkgZm9yIHRha2luZyB3aXRoIGB0YWtlX3Jlc3BvbnNlYC4gVGhlcmUgaXOAbm8gcmVnaXN0ZXJlZCBub3RpZmljYXRpb24gY2FsbC4gTm90aWZpZWQMASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAGCFkBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSByZWdpc3RlcmVkIG5vdGlmaWNhdGlvbiBoYXOoYmVlbiBkaXNwYXRjaGVkIGFuZCBleGVjdXRlZCBzdWNjZXNzZnVsbHkuQE5vdGlmeU92ZXJ3ZWlnaHQUASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAABNGFjdHVhbF93ZWlnaHQRAQEYV2VpZ2h0AAFMbWF4X2J1ZGdldGVkX3dlaWdodBEBARhXZWlnaHQABwxJAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgcmVnaXN0ZXJlZCBub3RpZmljYXRpb25ZAWNvdWxkIG5vdCBiZSBkaXNwYXRjaGVkIGJlY2F1c2UgdGhlIGRpc3BhdGNoIHdlaWdodCBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gd2VpZ2h05G9yaWdpbmFsbHkgYnVkZ2V0ZWQgYnkgdGhpcyBydW50aW1lIGZvciB0aGUgcXVlcnkgcmVzdWx0LkxOb3RpZnlEaXNwYXRjaEVycm9yDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgACAhVAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGVyZSB3YXMgYSBnZW5lcmFsIGVycm9yIHdpdGiIZGlzcGF0Y2hpbmcgdGhlIG5vdGlmaWNhdGlvbiBjYWxsLkhOb3RpZnlEZWNvZGVGYWlsZWQMASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAJDFEBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSBkaXNwYXRjaCB3YXMgdW5hYmxlIHRvIGJlWQFkZWNvZGVkIGludG8gYSBgQ2FsbGA7IHRoaXMgbWlnaHQgYmUgZHVlIHRvIGRpc3BhdGNoIGZ1bmN0aW9uIGhhdmluZyBhIHNpZ25hdHVyZSB3aGljaJRpcyBub3QgYChvcmlnaW4sIFF1ZXJ5SWQsIFJlc3BvbnNlKWAuQEludmFsaWRSZXNwb25kZXIMARhvcmlnaW79AQEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAAURleHBlY3RlZF9sb2NhdGlvbjkDAUBPcHRpb248TG9jYXRpb24+AAoMWQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIG9yaWdpbiBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UgZG9lc1UBbm90IG1hdGNoIHRoYXQgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5cSW52YWxpZFJlc3BvbmRlclZlcnNpb24IARhvcmlnaW79AQEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQACxxRAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgb3JpZ2luIGxvY2F0aW9uIHBsYWNlZCBpbk0Bc3RvcmFnZSBieSB0aGlzIHJ1bnRpbWUgcHJldmlvdXNseSBjYW5ub3QgYmUgZGVjb2RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZC4AQQFUaGlzIGlzIHVuZXhwZWN0ZWQgKHNpbmNlIGEgbG9jYXRpb24gcGxhY2VkIGluIHN0b3JhZ2UgaW4gYSBwcmV2aW91c2x5IGV4ZWN1dGluZ00BcnVudGltZSBzaG91bGQgYmUgcmVhZGFibGUgcHJpb3IgdG8gcXVlcnkgdGltZW91dCkgYW5kIGRhbmdlcm91cyBzaW5jZSB0aGUgcG9zc2libHlZAXZhbGlkIHJlc3BvbnNlIHdpbGwgYmUgZHJvcHBlZC4gTWFudWFsIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uIGlzIHByb2JhYmx5IGdvaW5nIHRvIGJlHG5lZWRlZC40UmVzcG9uc2VUYWtlbgQBIHF1ZXJ5X2lkKAEcUXVlcnlJZAAMBMhSZWNlaXZlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWFkIGFuZCByZW1vdmVkLjRBc3NldHNUcmFwcGVkDAEQaGFzaDwBEEgyNTYAARhvcmlnaW79AQEgTG9jYXRpb24AARhhc3NldHNtAwE8VmVyc2lvbmVkQXNzZXRzAA0EuFNvbWUgYXNzZXRzIGhhdmUgYmVlbiBwbGFjZWQgaW4gYW4gYXNzZXQgdHJhcC5UVmVyc2lvbkNoYW5nZU5vdGlmaWVkEAEsZGVzdGluYXRpb279AQEgTG9jYXRpb24AARhyZXN1bHQ4AShYY21WZXJzaW9uAAEQY29zdAEDARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAODCUBQW4gWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBtZXNzYWdlIGhhcyBiZWVuIGF0dGVtcHRlZCB0byBiZSBzZW50LgDgVGhlIGNvc3Qgb2Ygc2VuZGluZyBpdCAoYm9ybmUgYnkgdGhlIGNoYWluKSBpcyBpbmNsdWRlZC5cU3VwcG9ydGVkVmVyc2lvbkNoYW5nZWQIASBsb2NhdGlvbv0BASBMb2NhdGlvbgABHHZlcnNpb244AShYY21WZXJzaW9uAA8IOQFUaGUgc3VwcG9ydGVkIHZlcnNpb24gb2YgYSBsb2NhdGlvbiBoYXMgYmVlbiBjaGFuZ2VkLiBUaGlzIG1pZ2h0IGJlIHRocm91Z2ggYW7AYXV0b21hdGljIG5vdGlmaWNhdGlvbiBvciBhIG1hbnVhbCBpbnRlcnZlbnRpb24uUE5vdGlmeVRhcmdldFNlbmRGYWlsDAEgbG9jYXRpb279AQEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAARRlcnJvciUDASBYY21FcnJvcgAQCFkBQSBnaXZlbiBsb2NhdGlvbiB3aGljaCBoYWQgYSB2ZXJzaW9uIGNoYW5nZSBzdWJzY3JpcHRpb24gd2FzIGRyb3BwZWQgb3dpbmcgdG8gYW4gZXJyb3J8c2VuZGluZyB0aGUgbm90aWZpY2F0aW9uIHRvIGl0LmROb3RpZnlUYXJnZXRNaWdyYXRpb25GYWlsCAEgbG9jYXRpb26pAQFEVmVyc2lvbmVkTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAEQhZAUEgZ2l2ZW4gbG9jYXRpb24gd2hpY2ggaGFkIGEgdmVyc2lvbiBjaGFuZ2Ugc3Vic2NyaXB0aW9uIHdhcyBkcm9wcGVkIG93aW5nIHRvIGFuIGVycm9ytG1pZ3JhdGluZyB0aGUgbG9jYXRpb24gdG8gb3VyIG5ldyBYQ00gZm9ybWF0LlRJbnZhbGlkUXVlcmllclZlcnNpb24IARhvcmlnaW79AQEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAEhxVAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgcXVlcmllciBsb2NhdGlvbiBwbGFjZWQgaW5NAXN0b3JhZ2UgYnkgdGhpcyBydW50aW1lIHByZXZpb3VzbHkgY2Fubm90IGJlIGRlY29kZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQuAEEBVGhpcyBpcyB1bmV4cGVjdGVkIChzaW5jZSBhIGxvY2F0aW9uIHBsYWNlZCBpbiBzdG9yYWdlIGluIGEgcHJldmlvdXNseSBleGVjdXRpbmdNAXJ1bnRpbWUgc2hvdWxkIGJlIHJlYWRhYmxlIHByaW9yIHRvIHF1ZXJ5IHRpbWVvdXQpIGFuZCBkYW5nZXJvdXMgc2luY2UgdGhlIHBvc3NpYmx5WQF2YWxpZCByZXNwb25zZSB3aWxsIGJlIGRyb3BwZWQuIE1hbnVhbCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyBwcm9iYWJseSBnb2luZyB0byBiZRxuZWVkZWQuOEludmFsaWRRdWVyaWVyEAEYb3JpZ2lu/QEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAFAZXhwZWN0ZWRfcXVlcmllcv0BASBMb2NhdGlvbgABUG1heWJlX2FjdHVhbF9xdWVyaWVyOQMBQE9wdGlvbjxMb2NhdGlvbj4AEwxdAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgcXVlcmllciBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UgZG9lc1EBbm90IG1hdGNoIHRoZSBleHBlY3RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZCBmb3IgYSBsYXRlciwgdmFsaWQsIHJlc3BvbnNlIHRvbGJlIHJlY2VpdmVkIGFuZCBhY3RlZCB1cG9uLlBWZXJzaW9uTm90aWZ5U3RhcnRlZAwBLGRlc3RpbmF0aW9u/QEBIExvY2F0aW9uAAEQY29zdAEDARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAUCFkBQSByZW1vdGUgaGFzIHJlcXVlc3RlZCBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9uIGZyb20gdXMgYW5kIHdlIGhhdmUgaG9ub3JlZCBpdC4dAUEgdmVyc2lvbiBpbmZvcm1hdGlvbiBtZXNzYWdlIGlzIHNlbnQgdG8gdGhlbSBhbmQgaXRzIGNvc3QgaXMgaW5jbHVkZWQuWFZlcnNpb25Ob3RpZnlSZXF1ZXN0ZWQMASxkZXN0aW5hdGlvbv0BASBMb2NhdGlvbgABEGNvc3QBAwEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFQQ9AVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc2VuZCB1cyBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9ucy5gVmVyc2lvbk5vdGlmeVVucmVxdWVzdGVkDAEsZGVzdGluYXRpb279AQEgTG9jYXRpb24AARBjb3N0AQMBGEFzc2V0cwABKG1lc3NhZ2VfaWQIARxYY21IYXNoABYIJQFXZSBoYXZlIHJlcXVlc3RlZCB0aGF0IGEgcmVtb3RlIGNoYWluIHN0b3BzIHNlbmRpbmcgdXMgWENNIHZlcnNpb24gY2hhbmdlOG5vdGlmaWNhdGlvbnMuIEZlZXNQYWlkCAEYcGF5aW5n/QEBIExvY2F0aW9uAAEQZmVlcwEDARhBc3NldHMAFwQxAUZlZXMgd2VyZSBwYWlkIGZyb20gYSBsb2NhdGlvbiBmb3IgYW4gb3BlcmF0aW9uIChvZnRlbiBmb3IgdXNpbmcgYFNlbmRYY21gKS40QXNzZXRzQ2xhaW1lZAwBEGhhc2g8ARBIMjU2AAEYb3JpZ2lu/QEBIExvY2F0aW9uAAEYYXNzZXRzbQMBPFZlcnNpb25lZEFzc2V0cwAYBMBTb21lIGFzc2V0cyBoYXZlIGJlZW4gY2xhaW1lZCBmcm9tIGFuIGFzc2V0IHRyYXBgVmVyc2lvbk1pZ3JhdGlvbkZpbmlzaGVkBAEcdmVyc2lvbjgBKFhjbVZlcnNpb24AGQSEQSBYQ00gdmVyc2lvbiBtaWdyYXRpb24gZmluaXNoZWQuPEFsaWFzQXV0aG9yaXplZAwBHGFsaWFzZXL9AQEgTG9jYXRpb24AARh0YXJnZXT9AQEgTG9jYXRpb24AARhleHBpcnn8ASxPcHRpb248dTY0PgAaCF0BQW4gYGFsaWFzZXJgIGxvY2F0aW9uIHdhcyBhdXRob3JpemVkIGJ5IGB0YXJnZXRgIHRvIGFsaWFzIGl0LCBhdXRob3JpemF0aW9uIHZhbGlkIHVudGlsWGBleHBpcnlgIGJsb2NrIG51bWJlci5kQWxpYXNBdXRob3JpemF0aW9uUmVtb3ZlZAgBHGFsaWFzZXL9AQEgTG9jYXRpb24AARh0YXJnZXT9AQEgTG9jYXRpb24AGwTMYHRhcmdldGAgcmVtb3ZlZCBhbGlhcyBhdXRob3JpemF0aW9uIGZvciBgYWxpYXNlcmAucEFsaWFzZXNBdXRob3JpemF0aW9uc1JlbW92ZWQEARh0YXJnZXT9AQEgTG9jYXRpb24AHASoYHRhcmdldGAgcmVtb3ZlZCBhbGwgYWxpYXMgYXV0aG9yaXphdGlvbnMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0gQgQLHN0YWdpbmdfeGNtCHY1GHRyYWl0cxxPdXRjb21lAAEMIENvbXBsZXRlBAEQdXNlZBEBARhXZWlnaHQAAAAoSW5jb21wbGV0ZQgBEHVzZWQRAQEYV2VpZ2h0AAEUZXJyb3KFCAFASW5zdHJ1Y3Rpb25FcnJvcgABABRFcnJvcgQAhQgBQEluc3RydWN0aW9uRXJyb3IAAgAAhQgQLHN0YWdpbmdfeGNtCHY1GHRyYWl0c0BJbnN0cnVjdGlvbkVycm9yAAAIARRpbmRleAwBQEluc3RydWN0aW9uSW5kZXgAARRlcnJvciUDARRFcnJvcgAAiQgQDHhjbQh2Mxh0cmFpdHMkU2VuZEVycm9yAAEcNE5vdEFwcGxpY2FibGUAAAAkVHJhbnNwb3J0AAEAKFVucm91dGFibGUAAgBYRGVzdGluYXRpb25VbnN1cHBvcnRlZAADAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUABAA8TWlzc2luZ0FyZ3VtZW50AAUAEEZlZXMABgAAjQgMSGN1bXVsdXNfcGFsbGV0X3hjbRhwYWxsZXQURXZlbnQEBFQAAQw0SW52YWxpZEZvcm1hdAQACAEgW3U4OyAzMl0AAAiARG93bndhcmQgbWVzc2FnZSBpcyBpbnZhbGlkIFhDTS4gXFsgaWQgXF1IVW5zdXBwb3J0ZWRWZXJzaW9uBAAIASBbdTg7IDMyXQABCLxEb3dud2FyZCBtZXNzYWdlIGlzIHVuc3VwcG9ydGVkIHZlcnNpb24gb2YgWENNLiBcWyBpZCBcXUBFeGVjdXRlZERvd253YXJkCAAIASBbdTg7IDMyXQAAgQgBHE91dGNvbWUAAgjERG93bndhcmQgbWVzc2FnZSBleGVjdXRlZCB3aXRoIHRoZSBnaXZlbiBvdXRjb21lLkRcWyBpZCwgb3V0Y29tZSBcXQR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJEIDHBwYWxsZXRfeGNtX2JyaWRnZV9odWJfcm91dGVyGHBhbGxldBRFdmVudAgEVAAESQABCGhEZWxpdmVyeUZlZUZhY3RvckRlY3JlYXNlZAQBJG5ld192YWx1ZQkFASRGaXhlZFUxMjgElE5ldyB2YWx1ZSBvZiB0aGUgYERlbGl2ZXJ5RmVlRmFjdG9yYC4ABJxEZWxpdmVyeSBmZWUgZmFjdG9yIGhhcyBiZWVuIGRlY3JlYXNlZC5oRGVsaXZlcnlGZWVGYWN0b3JJbmNyZWFzZWQEASRuZXdfdmFsdWUJBQEkRml4ZWRVMTI4BJROZXcgdmFsdWUgb2YgdGhlIGBEZWxpdmVyeUZlZUZhY3RvcmAuAQScRGVsaXZlcnkgZmVlIGZhY3RvciBoYXMgYmVlbiBpbmNyZWFzZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0lQgMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBRFdmVudAQEVAABEEBQcm9jZXNzaW5nRmFpbGVkDAEIaWQ8ARBIMjU2BJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW6xAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuARRlcnJvcpkIAUxQcm9jZXNzTWVzc2FnZUVycm9yEGBUaGUgZXJyb3IgdGhhdCBvY2N1cnJlZC4ASQFUaGlzIGVycm9yIGlzIHByZXR0eSBvcGFxdWUuIE1vcmUgZmluZS1ncmFpbmVkIGVycm9ycyBuZWVkIHRvIGJlIGVtaXR0ZWQgYXMgZXZlbnRzaGJ5IHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAuAARVAU1lc3NhZ2UgZGlzY2FyZGVkIGR1ZSB0byBhbiBlcnJvciBpbiB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgICh1c3VhbGx5IGEgZm9ybWF0IGVycm9yKS4kUHJvY2Vzc2VkEAEIaWQ8ARBIMjU2BJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW6xAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuASx3ZWlnaHRfdXNlZBEBARhXZWlnaHQEwEhvdyBtdWNoIHdlaWdodCB3YXMgdXNlZCB0byBwcm9jZXNzIHRoZSBtZXNzYWdlLgEcc3VjY2Vzc1kBARBib29sGIhXaGV0aGVyIHRoZSBtZXNzYWdlIHdhcyBwcm9jZXNzZWQuAEkBTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSB1bmRlcmx5aW5nIGBNZXNzYWdlUHJvY2Vzc29yYCB3YXMgaW50ZXJuYWxseTUBc3VjY2Vzc2Z1bC4gSXQgKnNvbGVseSogbWVhbnMgdGhhdCB0aGUgTVEgcGFsbGV0IHdpbGwgdHJlYXQgdGhpcyBhcyBhIHN1Y2Nlc3NNAWNvbmRpdGlvbiBhbmQgZGlzY2FyZCB0aGUgbWVzc2FnZS4gQW55IGludGVybmFsIGVycm9yIG5lZWRzIHRvIGJlIGVtaXR0ZWQgYXMgZXZlbnRzaGJ5IHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAuAQRUTWVzc2FnZSBpcyBwcm9jZXNzZWQuSE92ZXJ3ZWlnaHRFbnF1ZXVlZBABCGlkCAEgW3U4OyAzMl0ElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbrEDAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgEYFRoZSBwYWdlIG9mIHRoZSBtZXNzYWdlLgE0bWVzc2FnZV9pbmRleDgBHFQ6OlNpemUEpFRoZSBpbmRleCBvZiB0aGUgbWVzc2FnZSB3aXRoaW4gdGhlIHBhZ2UuAgSMTWVzc2FnZSBwbGFjZWQgaW4gb3ZlcndlaWdodCBxdWV1ZS4oUGFnZVJlYXBlZAgBGG9yaWdpbrEDAUhNZXNzYWdlT3JpZ2luT2Y8VD4EWFRoZSBxdWV1ZSBvZiB0aGUgcGFnZS4BFGluZGV4OAEkUGFnZUluZGV4BFhUaGUgaW5kZXggb2YgdGhlIHBhZ2UuAwRUVGhpcyBwYWdlIHdhcyByZWFwZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0mQgQNGZyYW1lX3N1cHBvcnQYdHJhaXRzIG1lc3NhZ2VzTFByb2Nlc3NNZXNzYWdlRXJyb3IAARgkQmFkRm9ybWF0AAAAHENvcnJ1cHQAAQAsVW5zdXBwb3J0ZWQAAgAoT3ZlcndlaWdodAQAEQEBGFdlaWdodAADABRZaWVsZAAEAERTdGFja0xpbWl0UmVhY2hlZAAFAACdCAyEc25vd2JyaWRnZV9wYWxsZXRfc3lzdGVtX2Zyb250ZW5kGHBhbGxldBRFdmVudAQEVAABCCxNZXNzYWdlU2VudBABGG9yaWdpbv0BASBMb2NhdGlvbgABLGRlc3RpbmF0aW9u/QEBIExvY2F0aW9uAAEcbWVzc2FnZfUCARxYY208KCk+AAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAAQ8QW4gWENNIHdhcyBzZW50aEV4cG9ydE9wZXJhdGluZ01vZGVDaGFuZ2VkBAEQbW9kZbkDATRPcGVyYXRpbmdNb2RlAAEERFNldCBPcGVyYXRpbmdNb2RlBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0oQgMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFdmVudAABIEBCYXRjaEludGVycnVwdGVkCAEUaW5kZXg4AQx1MzIAARRlcnJvctUHATREaXNwYXRjaEVycm9yAAAIVQFCYXRjaCBvZiBkaXNwYXRjaGVzIGRpZCBub3QgY29tcGxldGUgZnVsbHkuIEluZGV4IG9mIGZpcnN0IGZhaWxpbmcgZGlzcGF0Y2ggZ2l2ZW4sIGFzSHdlbGwgYXMgdGhlIGVycm9yLjhCYXRjaENvbXBsZXRlZAABBMhCYXRjaCBvZiBkaXNwYXRjaGVzIGNvbXBsZXRlZCBmdWxseSB3aXRoIG5vIGVycm9yLmBCYXRjaENvbXBsZXRlZFdpdGhFcnJvcnMAAgS0QmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgYnV0IGhhcyBlcnJvcnMuNEl0ZW1Db21wbGV0ZWQAAwQdAUEgc2luZ2xlIGl0ZW0gd2l0aGluIGEgQmF0Y2ggb2YgZGlzcGF0Y2hlcyBoYXMgY29tcGxldGVkIHdpdGggbm8gZXJyb3IuKEl0ZW1GYWlsZWQEARRlcnJvctUHATREaXNwYXRjaEVycm9yAAQEEQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIGVycm9yLjBEaXNwYXRjaGVkQXMEARhyZXN1bHT5BwE4RGlzcGF0Y2hSZXN1bHQABQRYQSBjYWxsIHdhcyBkaXNwYXRjaGVkLkRJZkVsc2VNYWluU3VjY2VzcwAGBGRNYWluIGNhbGwgd2FzIGRpc3BhdGNoZWQuUElmRWxzZUZhbGxiYWNrQ2FsbGVkBAEobWFpbl9lcnJvctUHATREaXNwYXRjaEVycm9yAAcEhFRoZSBmYWxsYmFjayBjYWxsIHdhcyBkaXNwYXRjaGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldKUIDDxwYWxsZXRfbXVsdGlzaWcYcGFsbGV0FEV2ZW50BARUAAEULE5ld011bHRpc2lnDAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAAABIxBIG5ldyBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZ3VuLkBNdWx0aXNpZ0FwcHJvdmFsEAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50EQQBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEEyEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGFwcHJvdmVkIGJ5IHNvbWVvbmUuQE11bHRpc2lnRXhlY3V0ZWQUASRhcHByb3ZpbmcEATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnQRBAFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAARhyZXN1bHT5BwE4RGlzcGF0Y2hSZXN1bHQAAgScQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gZXhlY3V0ZWQuRE11bHRpc2lnQ2FuY2VsbGVkEAEoY2FuY2VsbGluZwQBMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludBEEAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAADBKBBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBjYW5jZWxsZWQuMERlcG9zaXRQb2tlZBABDHdobwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEsb2xkX2RlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAEsbmV3X2RlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAQE8FRoZSBkZXBvc2l0IGZvciBhIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiB1cGRhdGVkL3Bva2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldKkIDDBwYWxsZXRfcHJveHkYcGFsbGV0FEV2ZW50BARUAAEcNFByb3h5RXhlY3V0ZWQEARhyZXN1bHT5BwE4RGlzcGF0Y2hSZXN1bHQAAAS8QSBwcm94eSB3YXMgZXhlY3V0ZWQgY29ycmVjdGx5LCB3aXRoIHRoZSBnaXZlbi4sUHVyZUNyZWF0ZWQYARBwdXJlBAEwVDo6QWNjb3VudElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZR0EATBUOjpQcm94eVR5cGUAAVBkaXNhbWJpZ3VhdGlvbl9pbmRleNEDAQx1MTYAAQhhdDgBREJsb2NrTnVtYmVyRm9yPFQ+AAE8ZXh0cmluc2ljX2luZGV4OAEMdTMyAAEI3EEgcHVyZSBhY2NvdW50IGhhcyBiZWVuIGNyZWF0ZWQgYnkgbmV3IHByb3h5IHdpdGggZ2l2ZW6QZGlzYW1iaWd1YXRpb24gaW5kZXggYW5kIHByb3h5IHR5cGUuKFB1cmVLaWxsZWQQARBwdXJlBAEwVDo6QWNjb3VudElkAAEcc3Bhd25lcgQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGUdBAEwVDo6UHJveHlUeXBlAAFQZGlzYW1iaWd1YXRpb25faW5kZXjRAwEMdTE2AAIEnEEgcHVyZSBwcm94eSB3YXMga2lsbGVkIGJ5IGl0cyBzcGF3bmVyLiRBbm5vdW5jZWQMARByZWFsBAEwVDo6QWNjb3VudElkAAEUcHJveHkEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2g8ATRDYWxsSGFzaE9mPFQ+AAME4EFuIGFubm91bmNlbWVudCB3YXMgcGxhY2VkIHRvIG1ha2UgYSBjYWxsIGluIHRoZSBmdXR1cmUuKFByb3h5QWRkZWQQASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0ZWUEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlHQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4ABARIQSBwcm94eSB3YXMgYWRkZWQuMFByb3h5UmVtb3ZlZBABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRlZQQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGUdBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgAFBFBBIHByb3h5IHdhcyByZW1vdmVkLjBEZXBvc2l0UG9rZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAARBraW5krQgBLERlcG9zaXRLaW5kAAEsb2xkX2RlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAEsbmV3X2RlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAYECQFBIGRlcG9zaXQgc3RvcmVkIGZvciBwcm94aWVzIG9yIGFubm91bmNlbWVudHMgd2FzIHBva2VkIC8gdXBkYXRlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXStCAgwcGFsbGV0X3Byb3h5LERlcG9zaXRLaW5kAAEIHFByb3hpZXMAAAA0QW5ub3VuY2VtZW50cwABAACxCAw4cGFsbGV0X2luZGljZXMYcGFsbGV0FEV2ZW50BARUAAEQNEluZGV4QXNzaWduZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAAABHRBIGFjY291bnQgaW5kZXggd2FzIGFzc2lnbmVkLihJbmRleEZyZWVkBAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAAQS8QSBhY2NvdW50IGluZGV4IGhhcyBiZWVuIGZyZWVkIHVwICh1bmFzc2lnbmVkKS4sSW5kZXhGcm96ZW4IARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAABDHdobwQBMFQ6OkFjY291bnRJZAACBOhBIGFjY291bnQgaW5kZXggaGFzIGJlZW4gZnJvemVuIHRvIGl0cyBjdXJyZW50IGFjY291bnQgSUQuMERlcG9zaXRQb2tlZBABDHdobwQBMFQ6OkFjY291bnRJZAABFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAEsb2xkX2RlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAEsbmV3X2RlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAME6EEgZGVwb3NpdCB0byByZXNlcnZlIGFuIGluZGV4IGhhcyBiZWVuIHBva2VkL3JlY29uc2lkZXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXS1CAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAYAcQ3JlYXRlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAIEdFNvbWUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEcYmFsYW5jZVUBAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZDgBDHUzMgABSGFjY291bnRzX3JlbWFpbmluZzgBDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQ4AQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nOAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5ZAQEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQARBDEBKEFkZGl0aW9uYWwpIGZ1bmRzIGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgdG8gYSBkZXN0aW5hdGlvbiBhY2NvdW50LkRBcHByb3ZhbENhbmNlbGxlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAEgTwQW4gYXBwcm92YWwgZm9yIGFjY291bnQgYGRlbGVnYXRlYCB3YXMgY2FuY2VsbGVkIGJ5IGBvd25lcmAuTFRyYW5zZmVycmVkQXBwcm92ZWQUASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkABcEfFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgYmxvY2tlZC4kRGVwb3NpdGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAGATcU29tZSBhc3NldHMgd2VyZSBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiRXaXRoZHJhd24MASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuPFJlc2VydmVzVXBkYXRlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABIHJlc2VydmVzLQQBTFZlYzxUOjpSZXNlcnZlRGF0YT4AGgTYUmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgc2V0IG9yIHVwZGF0ZWQgZm9yIGBhc3NldF9pZGAuPFJlc2VydmVzUmVtb3ZlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLjBJc3N1ZWRDcmVkaXQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAcBMRTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZCBhcyBDcmVkaXQgKG5vIG93bmVyIHlldCkuMEJ1cm5lZENyZWRpdAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAB0EhFNvbWUgYXNzZXRzIENyZWRpdCB3YXMgZGVzdHJveWVkLihJc3N1ZWREZWJ0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAHgS8U29tZSBhc3NldHMgd2VyZSBidXJuZWQgYW5kIGEgRGVidCB3YXMgY3JlYXRlZC4oQnVybmVkRGVidAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAB8EzFNvbWUgYXNzZXRzIERlYnQgd2FzIGRlc3Ryb3llZCAoYW5kIGFzc2V0cyBpc3N1ZWQpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldLkIDDhwYWxsZXRfdW5pcXVlcxhwYWxsZXQURXZlbnQIBFQABEkAAWwcQ3JlYXRlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARxjcmVhdG9yBAEwVDo6QWNjb3VudElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAARsQSBgY29sbGVjdGlvbmAgd2FzIGNyZWF0ZWQuMEZvcmNlQ3JlYXRlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABBIRBIGBjb2xsZWN0aW9uYCB3YXMgZm9yY2UtY3JlYXRlZC4kRGVzdHJveWVkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAACBHRBIGBjb2xsZWN0aW9uYCB3YXMgZGVzdHJveWVkLhhJc3N1ZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAMEVEFuIGBpdGVtYCB3YXMgaXNzdWVkLixUcmFuc2ZlcnJlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAQEaEFuIGBpdGVtYCB3YXMgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQABQRgQW4gYGl0ZW1gIHdhcyBkZXN0cm95ZWQuGEZyb3plbggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAYEXFNvbWUgYGl0ZW1gIHdhcyBmcm96ZW4uGFRoYXdlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAcEXFNvbWUgYGl0ZW1gIHdhcyB0aGF3ZWQuQENvbGxlY3Rpb25Gcm96ZW4EAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAgEdFNvbWUgYGNvbGxlY3Rpb25gIHdhcyBmcm96ZW4uQENvbGxlY3Rpb25UaGF3ZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAkEdFNvbWUgYGNvbGxlY3Rpb25gIHdhcyB0aGF3ZWQuME93bmVyQ2hhbmdlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXIEATBUOjpBY2NvdW50SWQACgRIVGhlIG93bmVyIGNoYW5nZWQuLFRlYW1DaGFuZ2VkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAALBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuQEFwcHJvdmVkVHJhbnNmZXIQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQADAgxAUFuIGBpdGVtYCBvZiBhIGBjb2xsZWN0aW9uYCBoYXMgYmVlbiBhcHByb3ZlZCBieSB0aGUgYG93bmVyYCBmb3IgdHJhbnNmZXIgYnk0YSBgZGVsZWdhdGVgLkRBcHByb3ZhbENhbmNlbGxlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAANCBkBQW4gYXBwcm92YWwgZm9yIGEgYGRlbGVnYXRlYCBhY2NvdW50IHRvIHRyYW5zZmVyIHRoZSBgaXRlbWAgb2YgYW4gaXRlbahgY29sbGVjdGlvbmAgd2FzIGNhbmNlbGxlZCBieSBpdHMgYG93bmVyYC5ESXRlbVN0YXR1c0NoYW5nZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAA4EEQFBIGBjb2xsZWN0aW9uYCBoYXMgaGFkIGl0cyBhdHRyaWJ1dGVzIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlRDb2xsZWN0aW9uTWV0YWRhdGFTZXQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQZGF0YUEEAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AASRpc19mcm96ZW5ZAQEQYm9vbAAPBLROZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhIGBjb2xsZWN0aW9uYC5kQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAEAS0TWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAuLE1ldGFkYXRhU2V0EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkYXRhQQQBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgABJGlzX2Zyb3plblkBARBib29sABEEmE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGl0ZW0uPE1ldGFkYXRhQ2xlYXJlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABIEmE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGl0ZW0uLFJlZGVwb3NpdGVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABQHN1Y2Nlc3NmdWxfaXRlbXM9BAE4VmVjPFQ6Okl0ZW1JZD4AEwSYTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gaXRlbS4wQXR0cmlidXRlU2V0EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW3gAURPcHRpb248VDo6SXRlbUlkPgABDGtlecEDAWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AARR2YWx1ZXgBdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+ABQEBQFOZXcgYXR0cmlidXRlIG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYSBgY29sbGVjdGlvbmAgb3IgYGl0ZW1gLkBBdHRyaWJ1dGVDbGVhcmVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW3gAURPcHRpb248VDo6SXRlbUlkPgABDGtlecEDAWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AFQQFAUF0dHJpYnV0ZSBtZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhIGBjb2xsZWN0aW9uYCBvciBgaXRlbWAuaE93bmVyc2hpcEFjY2VwdGFuY2VDaGFuZ2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAFAbWF5YmVfY29sbGVjdGlvbuABXE9wdGlvbjxUOjpDb2xsZWN0aW9uSWQ+ABYEwE93bmVyc2hpcCBhY2NlcHRhbmNlIGhhcyBjaGFuZ2VkIGZvciBhbiBhY2NvdW50LlhDb2xsZWN0aW9uTWF4U3VwcGx5U2V0CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heF9zdXBwbHk4AQx1MzIAFwSkTWF4IHN1cHBseSBoYXMgYmVlbiBzZXQgZm9yIGEgY29sbGVjdGlvbi4wSXRlbVByaWNlU2V0EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZVUBATxJdGVtUHJpY2U8VCwgST4AAUR3aGl0ZWxpc3RlZF9idXllco0BAVBPcHRpb248VDo6QWNjb3VudElkPgAYBIxUaGUgcHJpY2Ugd2FzIHNldCBmb3IgdGhlIGluc3RhbmNlLkBJdGVtUHJpY2VSZW1vdmVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAGQScVGhlIHByaWNlIGZvciB0aGUgaW5zdGFuY2Ugd2FzIHJlbW92ZWQuKEl0ZW1Cb3VnaHQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlVQEBPEl0ZW1QcmljZTxULCBJPgABGHNlbGxlcgQBMFQ6OkFjY291bnRJZAABFGJ1eWVyBAEwVDo6QWNjb3VudElkABoETEFuIGl0ZW0gd2FzIGJvdWdodC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXS9CAwscGFsbGV0X25mdHMYcGFsbGV0FEV2ZW50CARUAARJAAGYHENyZWF0ZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEbEEgYGNvbGxlY3Rpb25gIHdhcyBjcmVhdGVkLjBGb3JjZUNyZWF0ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAQSEQSBgY29sbGVjdGlvbmAgd2FzIGZvcmNlLWNyZWF0ZWQuJERlc3Ryb3llZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAgR0QSBgY29sbGVjdGlvbmAgd2FzIGRlc3Ryb3llZC4YSXNzdWVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAADBFRBbiBgaXRlbWAgd2FzIGlzc3VlZC4sVHJhbnNmZXJyZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAAEBGhBbiBgaXRlbWAgd2FzIHRyYW5zZmVycmVkLhhCdXJuZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUEYEFuIGBpdGVtYCB3YXMgZGVzdHJveWVkLkhJdGVtVHJhbnNmZXJMb2NrZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAGBIhBbiBgaXRlbWAgYmVjYW1lIG5vbi10cmFuc2ZlcmFibGUuUEl0ZW1UcmFuc2ZlclVubG9ja2VkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQABwR4QW4gYGl0ZW1gIGJlY2FtZSB0cmFuc2ZlcmFibGUuUEl0ZW1Qcm9wZXJ0aWVzTG9ja2VkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAATRsb2NrX21ldGFkYXRhWQEBEGJvb2wAATxsb2NrX2F0dHJpYnV0ZXNZAQEQYm9vbAAIBKhgaXRlbWAgbWV0YWRhdGEgb3IgYXR0cmlidXRlcyB3ZXJlIGxvY2tlZC5AQ29sbGVjdGlvbkxvY2tlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQACQR0U29tZSBgY29sbGVjdGlvbmAgd2FzIGxvY2tlZC4wT3duZXJDaGFuZ2VkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABJG5ld19vd25lcgQBMFQ6OkFjY291bnRJZAAKBEhUaGUgb3duZXIgY2hhbmdlZC4sVGVhbUNoYW5nZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEYaXNzdWVyjQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEUYWRtaW6NAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARxmcmVlemVyjQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAsEcFRoZSBtYW5hZ2VtZW50IHRlYW0gY2hhbmdlZC5AVHJhbnNmZXJBcHByb3ZlZBQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABIGRlYWRsaW5l4AFwT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQsIEk+PgAMCDEBQW4gYGl0ZW1gIG9mIGEgYGNvbGxlY3Rpb25gIGhhcyBiZWVuIGFwcHJvdmVkIGJ5IHRoZSBgb3duZXJgIGZvciB0cmFuc2ZlciBieTRhIGBkZWxlZ2F0ZWAuREFwcHJvdmFsQ2FuY2VsbGVkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAA0IGQFBbiBhcHByb3ZhbCBmb3IgYSBgZGVsZWdhdGVgIGFjY291bnQgdG8gdHJhbnNmZXIgdGhlIGBpdGVtYCBvZiBhbiBpdGVtqGBjb2xsZWN0aW9uYCB3YXMgY2FuY2VsbGVkIGJ5IGl0cyBgb3duZXJgLlRBbGxBcHByb3ZhbHNDYW5jZWxsZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAA4EnEFsbCBhcHByb3ZhbHMgb2YgYW4gaXRlbSBnb3QgY2FuY2VsbGVkLlxDb2xsZWN0aW9uQ29uZmlnQ2hhbmdlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQADwQBAUEgYGNvbGxlY3Rpb25gIGhhcyBoYWQgaXRzIGNvbmZpZyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5UQ29sbGVjdGlvbk1ldGFkYXRhU2V0CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGFBAQF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+ABAEtE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGEgYGNvbGxlY3Rpb25gLmRDb2xsZWN0aW9uTWV0YWRhdGFDbGVhcmVkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAARBLRNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhIGBjb2xsZWN0aW9uYC48SXRlbU1ldGFkYXRhU2V0DAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkYXRhQQEBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgASBJhOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBpdGVtLkxJdGVtTWV0YWRhdGFDbGVhcmVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAEwSYTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gaXRlbS4sUmVkZXBvc2l0ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAFAc3VjY2Vzc2Z1bF9pdGVtcz0EAThWZWM8VDo6SXRlbUlkPgAUBCEBVGhlIGRlcG9zaXQgZm9yIGEgc2V0IG9mIGBpdGVtYHMgd2l0aGluIGEgYGNvbGxlY3Rpb25gIGhhcyBiZWVuIHVwZGF0ZWQuMEF0dHJpYnV0ZVNldBQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXl4AWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AARR2YWx1ZUEBAXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgABJG5hbWVzcGFjZXkEAYBBdHRyaWJ1dGVOYW1lc3BhY2U8VDo6QWNjb3VudElkPgAVBAUBTmV3IGF0dHJpYnV0ZSBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGEgYGNvbGxlY3Rpb25gIG9yIGBpdGVtYC5AQXR0cmlidXRlQ2xlYXJlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXl4AWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AASRuYW1lc3BhY2V5BAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AFgQFAUF0dHJpYnV0ZSBtZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhIGBjb2xsZWN0aW9uYCBvciBgaXRlbWAubEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxBZGRlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAFwTMQSBuZXcgYXBwcm92YWwgdG8gbW9kaWZ5IGl0ZW0gYXR0cmlidXRlcyB3YXMgYWRkZWQudEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxSZW1vdmVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAAYBNRBIG5ldyBhcHByb3ZhbCB0byBtb2RpZnkgaXRlbSBhdHRyaWJ1dGVzIHdhcyByZW1vdmVkLmhPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABQG1heWJlX2NvbGxlY3Rpb27gAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAZBMBPd25lcnNoaXAgYWNjZXB0YW5jZSBoYXMgY2hhbmdlZCBmb3IgYW4gYWNjb3VudC5YQ29sbGVjdGlvbk1heFN1cHBseVNldAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXhfc3VwcGx5OAEMdTMyABoEpE1heCBzdXBwbHkgaGFzIGJlZW4gc2V0IGZvciBhIGNvbGxlY3Rpb24udENvbGxlY3Rpb25NaW50U2V0dGluZ3NVcGRhdGVkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAbBKxNaW50IHNldHRpbmdzIGZvciBhIGNvbGxlY3Rpb24gaGFkIGNoYW5nZWQubE5leHRDb2xsZWN0aW9uSWRJbmNyZW1lbnRlZAQBHG5leHRfaWTgAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAcBAEBRXZlbnQgZ2V0cyBlbWl0dGVkIHdoZW4gdGhlIGBOZXh0Q29sbGVjdGlvbklkYCBnZXRzIGluY3JlbWVudGVkLjBJdGVtUHJpY2VTZXQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlVQEBPEl0ZW1QcmljZTxULCBJPgABRHdoaXRlbGlzdGVkX2J1eWVyjQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AB0EfFRoZSBwcmljZSB3YXMgc2V0IGZvciB0aGUgaXRlbS5ASXRlbVByaWNlUmVtb3ZlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAB4EjFRoZSBwcmljZSBmb3IgdGhlIGl0ZW0gd2FzIHJlbW92ZWQuKEl0ZW1Cb3VnaHQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlVQEBPEl0ZW1QcmljZTxULCBJPgABGHNlbGxlcgQBMFQ6OkFjY291bnRJZAABFGJ1eWVyBAEwVDo6QWNjb3VudElkAB8ETEFuIGl0ZW0gd2FzIGJvdWdodC4cVGlwU2VudBQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEYc2VuZGVyBAEwVDo6QWNjb3VudElkAAEgcmVjZWl2ZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQFYRGVwb3NpdEJhbGFuY2VPZjxULCBJPgAgBDxBIHRpcCB3YXMgc2VudC4sU3dhcENyZWF0ZWQYAUhvZmZlcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBvZmZlcmVkX2l0ZW04ASRUOjpJdGVtSWQAAUhkZXNpcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBkZXNpcmVkX2l0ZW3gAURPcHRpb248VDo6SXRlbUlkPgABFHByaWNljQQBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AASBkZWFkbGluZTgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+ACEEiEFuIGBpdGVtYCBzd2FwIGludGVudCB3YXMgY3JlYXRlZC40U3dhcENhbmNlbGxlZBgBSG9mZmVyZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABMG9mZmVyZWRfaXRlbTgBJFQ6Okl0ZW1JZAABSGRlc2lyZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABMGRlc2lyZWRfaXRlbeABRE9wdGlvbjxUOjpJdGVtSWQ+AAEUcHJpY2WNBAGsT3B0aW9uPFByaWNlV2l0aERpcmVjdGlvbjxJdGVtUHJpY2U8VCwgST4+PgABIGRlYWRsaW5lOAFQQmxvY2tOdW1iZXJGb3I8VCwgST4AIgRcVGhlIHN3YXAgd2FzIGNhbmNlbGxlZC4sU3dhcENsYWltZWQgATxzZW50X2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRzZW50X2l0ZW04ASRUOjpJdGVtSWQAATxzZW50X2l0ZW1fb3duZXIEATBUOjpBY2NvdW50SWQAAUxyZWNlaXZlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAE0cmVjZWl2ZWRfaXRlbTgBJFQ6Okl0ZW1JZAABTHJlY2VpdmVkX2l0ZW1fb3duZXIEATBUOjpBY2NvdW50SWQAARRwcmljZY0EAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+AAEgZGVhZGxpbmU4AVBCbG9ja051bWJlckZvcjxULCBJPgAjBGhUaGUgc3dhcCBoYXMgYmVlbiBjbGFpbWVkLlhQcmVTaWduZWRBdHRyaWJ1dGVzU2V0DAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASRuYW1lc3BhY2V5BAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AJAT8TmV3IGF0dHJpYnV0ZXMgaGF2ZSBiZWVuIHNldCBmb3IgYW4gYGl0ZW1gIG9mIHRoZSBgY29sbGVjdGlvbmAuSFBhbGxldEF0dHJpYnV0ZVNldBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AASRhdHRyaWJ1dGXBCAGEUGFsbGV0QXR0cmlidXRlczxUOjpDb2xsZWN0aW9uSWQ+AAEUdmFsdWVBAQF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AJQhNAUEgbmV3IGF0dHJpYnV0ZSBpbiB0aGUgYFBhbGxldGAgbmFtZXNwYWNlIHdhcyBzZXQgZm9yIHRoZSBgY29sbGVjdGlvbmAgb3IgYW4gYGl0ZW1gZHdpdGhpbiB0aGF0IGBjb2xsZWN0aW9uYC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTBCAwscGFsbGV0X25mdHMUdHlwZXNAUGFsbGV0QXR0cmlidXRlcwQwQ29sbGVjdGlvbklkATgBCCxVc2VkVG9DbGFpbQQAOAEwQ29sbGVjdGlvbklkAAAAQFRyYW5zZmVyRGlzYWJsZWQAAQAAxQgMNHBhbGxldF9hc3NldHMYcGFsbGV0FEV2ZW50CARUAARJAAGAHENyZWF0ZWQMASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEdFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGNyZWF0ZWQuGElzc3VlZAwBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQACBHRTb21lIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkLhhCdXJuZWQMASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARxiYWxhbmNlVQEBKFQ6OkJhbGFuY2UAAwRsU29tZSBhc3NldHMgd2VyZSBkZXN0cm95ZWQuLFRlYW1DaGFuZ2VkEAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAFBEhUaGUgb3duZXIgY2hhbmdlZC4YRnJvemVuCAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAGBHhTb21lIGFjY291bnQgYHdob2Agd2FzIGZyb3plbi4YVGhhd2VkCAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZP0BAShUOjpBc3NldElkAAgEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgZnJvemVuLixBc3NldFRoYXdlZAQBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQACQSEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyB0aGF3ZWQuREFjY291bnRzRGVzdHJveWVkDAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZDgBDHUzMgABSGFjY291bnRzX3JlbWFpbmluZzgBDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAAUxhcHByb3ZhbHNfZGVzdHJveWVkOAEMdTMyAAFMYXBwcm92YWxzX3JlbWFpbmluZzgBDHUzMgALBKRBcHByb3ZhbHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhEZXN0cnVjdGlvblN0YXJ0ZWQEASBhc3NldF9pZP0BAShUOjpBc3NldElkAAwE0EFuIGFzc2V0IGNsYXNzIGlzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlc3Ryb3llZC4kRGVzdHJveWVkBAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQADgSMU29tZSBhc3NldCBjbGFzcyB3YXMgZm9yY2UtY3JlYXRlZC4sTWV0YWRhdGFTZXQUASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plblkBARBib29sAA8EnE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGFzc2V0LjxNZXRhZGF0YUNsZWFyZWQEASBhc3NldF9pZP0BAShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAEQQxAShBZGRpdGlvbmFsKSBmdW5kcyBoYXZlIGJlZW4gYXBwcm92ZWQgZm9yIHRyYW5zZmVyIHRvIGEgZGVzdGluYXRpb24gYWNjb3VudC5EQXBwcm92YWxDYW5jZWxsZWQMASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAASBPBBbiBhcHByb3ZhbCBmb3IgYWNjb3VudCBgZGVsZWdhdGVgIHdhcyBjYW5jZWxsZWQgYnkgYG93bmVyYC5MVHJhbnNmZXJyZWRBcHByb3ZlZBQBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAAUBPhBbiBhc3NldCBoYXMgaGFkIGl0cyBhdHRyaWJ1dGVzIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlhBc3NldE1pbkJhbGFuY2VDaGFuZ2VkCAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAABPG5ld19taW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlABUEAQFUaGUgbWluX2JhbGFuY2Ugb2YgYW4gYXNzZXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgYXNzZXQgb3duZXIuHFRvdWNoZWQMASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAXBHxTb21lIGFjY291bnQgYHdob2Agd2FzIGJsb2NrZWQuJERlcG9zaXRlZAwBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAYBNxTb21lIGFzc2V0cyB3ZXJlIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuJFdpdGhkcmF3bgwBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuPFJlc2VydmVzVXBkYXRlZAgBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAASByZXNlcnZlc7UEAUxWZWM8VDo6UmVzZXJ2ZURhdGE+ABoE2FJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHNldCBvciB1cGRhdGVkIGZvciBgYXNzZXRfaWRgLjxSZXNlcnZlc1JlbW92ZWQEASBhc3NldF9pZP0BAShUOjpBc3NldElkABsEvFJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHJlbW92ZWQgZm9yIGBhc3NldF9pZGAuMElzc3VlZENyZWRpdAgBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAcBMRTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZCBhcyBDcmVkaXQgKG5vIG93bmVyIHlldCkuMEJ1cm5lZENyZWRpdAgBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAdBIRTb21lIGFzc2V0cyBDcmVkaXQgd2FzIGRlc3Ryb3llZC4oSXNzdWVkRGVidAgBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAeBLxTb21lIGFzc2V0cyB3ZXJlIGJ1cm5lZCBhbmQgYSBEZWJ0IHdhcyBjcmVhdGVkLihCdXJuZWREZWJ0CAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAB8EzFNvbWUgYXNzZXRzIERlYnQgd2FzIGRlc3Ryb3llZCAoYW5kIGFzc2V0cyBpc3N1ZWQpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMkIDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFdmVudAgEVAAESQABgBxDcmVhdGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEdFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGNyZWF0ZWQuGElzc3VlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAAQRgU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQuLFRyYW5zZmVycmVkEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAAgR0U29tZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZC4YQnVybmVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARxiYWxhbmNlVQEBKFQ6OkJhbGFuY2UAAwRsU29tZSBhc3NldHMgd2VyZSBkZXN0cm95ZWQuLFRlYW1DaGFuZ2VkEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYaXNzdWVyBAEwVDo6QWNjb3VudElkAAEUYWRtaW4EATBUOjpBY2NvdW50SWQAARxmcmVlemVyBAEwVDo6QWNjb3VudElkAAQEcFRoZSBtYW5hZ2VtZW50IHRlYW0gY2hhbmdlZC4wT3duZXJDaGFuZ2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQABQRIVGhlIG93bmVyIGNoYW5nZWQuGEZyb3plbggBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAGBHhTb21lIGFjY291bnQgYHdob2Agd2FzIGZyb3plbi4YVGhhd2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAcEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgdGhhd2VkLixBc3NldEZyb3plbgQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAIBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIGZyb3plbi4sQXNzZXRUaGF3ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQACQSEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyB0aGF3ZWQuREFjY291bnRzRGVzdHJveWVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAFIYWNjb3VudHNfZGVzdHJveWVkOAEMdTMyAAFIYWNjb3VudHNfcmVtYWluaW5nOAEMdTMyAAoEoEFjY291bnRzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IQXBwcm92YWxzRGVzdHJveWVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAFMYXBwcm92YWxzX2Rlc3Ryb3llZDgBDHUzMgABTGFwcHJvdmFsc19yZW1haW5pbmc4AQx1MzIACwSkQXBwcm92YWxzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IRGVzdHJ1Y3Rpb25TdGFydGVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAwE0EFuIGFzc2V0IGNsYXNzIGlzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlc3Ryb3llZC4kRGVzdHJveWVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAA0EdEFuIGFzc2V0IGNsYXNzIHdhcyBkZXN0cm95ZWQuMEZvcmNlQ3JlYXRlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAA4EjFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGZvcmNlLWNyZWF0ZWQuLE1ldGFkYXRhU2V0FAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plblkBARBib29sAA8EnE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGFzc2V0LjxNZXRhZGF0YUNsZWFyZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAEAScTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gYXNzZXQuQEFwcHJvdmVkVHJhbnNmZXIQASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhzb3VyY2UEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlABEEMQEoQWRkaXRpb25hbCkgZnVuZHMgaGF2ZSBiZWVuIGFwcHJvdmVkIGZvciB0cmFuc2ZlciB0byBhIGRlc3RpbmF0aW9uIGFjY291bnQuREFwcHJvdmFsQ2FuY2VsbGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAASBPBBbiBhcHByb3ZhbCBmb3IgYWNjb3VudCBgZGVsZWdhdGVgIHdhcyBjYW5jZWxsZWQgYnkgYG93bmVyYC5MVHJhbnNmZXJyZWRBcHByb3ZlZBQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlABMIMQFBbiBgYW1vdW50YCB3YXMgdHJhbnNmZXJyZWQgaW4gaXRzIGVudGlyZXR5IGZyb20gYG93bmVyYCB0byBgZGVzdGluYXRpb25gIGJ5YHRoZSBhcHByb3ZlZCBgZGVsZWdhdGVgLkhBc3NldFN0YXR1c0NoYW5nZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAFAT4QW4gYXNzZXQgaGFzIGhhZCBpdHMgYXR0cmlidXRlcyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5YQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABPG5ld19taW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlABUEAQFUaGUgbWluX2JhbGFuY2Ugb2YgYW4gYXNzZXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgYXNzZXQgb3duZXIuHFRvdWNoZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAASRkZXBvc2l0b3IEATBUOjpBY2NvdW50SWQAFgT8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBjcmVhdGVkIHdpdGggYSBkZXBvc2l0IGZyb20gYGRlcG9zaXRvcmAuHEJsb2NrZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAFwR8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBibG9ja2VkLiREZXBvc2l0ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAYBNxTb21lIGFzc2V0cyB3ZXJlIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuJFdpdGhkcmF3bgwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlABkEIQFTb21lIGFzc2V0cyB3ZXJlIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS48UmVzZXJ2ZXNVcGRhdGVkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEgcmVzZXJ2ZXMtBAFMVmVjPFQ6OlJlc2VydmVEYXRhPgAaBNhSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyBzZXQgb3IgdXBkYXRlZCBmb3IgYGFzc2V0X2lkYC48UmVzZXJ2ZXNSZW1vdmVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABsEvFJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHJlbW92ZWQgZm9yIGBhc3NldF9pZGAuMElzc3VlZENyZWRpdAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlABwExFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkIGFzIENyZWRpdCAobm8gb3duZXIgeWV0KS4wQnVybmVkQ3JlZGl0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAHQSEU29tZSBhc3NldHMgQ3JlZGl0IHdhcyBkZXN0cm95ZWQuKElzc3VlZERlYnQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAeBLxTb21lIGFzc2V0cyB3ZXJlIGJ1cm5lZCBhbmQgYSBEZWJ0IHdhcyBjcmVhdGVkLihCdXJuZWREZWJ0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAHwTMU29tZSBhc3NldHMgRGVidCB3YXMgZGVzdHJveWVkIChhbmQgYXNzZXRzIGlzc3VlZCkuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0zQgMXHBhbGxldF9hc3NldF9jb252ZXJzaW9uGHBhbGxldBRFdmVudAQEVAABGCxQb29sQ3JlYXRlZBABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQEiFRoZSBhY2NvdW50IHRoYXQgY3JlYXRlZCB0aGUgcG9vbC4BHHBvb2xfaWTRCAEkVDo6UG9vbElkCEkBVGhlIHBvb2wgaWQgYXNzb2NpYXRlZCB3aXRoIHRoZSBwb29sLiBOb3RlIHRoYXQgdGhlIG9yZGVyIG9mIHRoZSBhc3NldHMgbWF5IG5vdCBiZfR0aGUgc2FtZSBhcyB0aGUgb3JkZXIgc3BlY2lmaWVkIGluIHRoZSBjcmVhdGUgcG9vbCBleHRyaW5zaWMuATBwb29sX2FjY291bnQEATBUOjpBY2NvdW50SWQEbFRoZSBhY2NvdW50IElEIG9mIHRoZSBwb29sLgEgbHBfdG9rZW44AThUOjpQb29sQXNzZXRJZAhBAVRoZSBpZCBvZiB0aGUgbGlxdWlkaXR5IHRva2VucyB0aGF0IHdpbGwgYmUgbWludGVkIHdoZW4gYXNzZXRzIGFyZSBhZGRlZCB0byB0aGlzFHBvb2wuAAQdAUEgc3VjY2Vzc2Z1bCBjYWxsIG9mIHRoZSBgQ3JlYXRlUG9vbGAgZXh0cmluc2ljIHdpbGwgY3JlYXRlIHRoaXMgZXZlbnQuOExpcXVpZGl0eUFkZGVkHAEMd2hvBAEwVDo6QWNjb3VudElkBLhUaGUgYWNjb3VudCB0aGF0IHRoZSBsaXF1aWRpdHkgd2FzIHRha2VuIGZyb20uARxtaW50X3RvBAEwVDo6QWNjb3VudElkBNRUaGUgYWNjb3VudCB0aGF0IHRoZSBsaXF1aWRpdHkgdG9rZW5zIHdlcmUgbWludGVkIHRvLgEccG9vbF9pZNEIASRUOjpQb29sSWQE4FRoZSBwb29sIGlkIG9mIHRoZSBwb29sIHRoYXQgdGhlIGxpcXVpZGl0eSB3YXMgYWRkZWQgdG8uAUBhbW91bnQxX3Byb3ZpZGVkVQEBKFQ6OkJhbGFuY2UE5FRoZSBhbW91bnQgb2YgdGhlIGZpcnN0IGFzc2V0IHRoYXQgd2FzIGFkZGVkIHRvIHRoZSBwb29sLgFAYW1vdW50Ml9wcm92aWRlZFUBAShUOjpCYWxhbmNlBOhUaGUgYW1vdW50IG9mIHRoZSBzZWNvbmQgYXNzZXQgdGhhdCB3YXMgYWRkZWQgdG8gdGhlIHBvb2wuASBscF90b2tlbjgBOFQ6OlBvb2xBc3NldElkBJxUaGUgaWQgb2YgdGhlIGxwIHRva2VuIHRoYXQgd2FzIG1pbnRlZC4BPGxwX3Rva2VuX21pbnRlZFUBAShUOjpCYWxhbmNlBNBUaGUgYW1vdW50IG9mIGxwIHRva2VucyB0aGF0IHdlcmUgbWludGVkIG9mIHRoYXQgaWQuAQQlAUEgc3VjY2Vzc2Z1bCBjYWxsIG9mIHRoZSBgQWRkTGlxdWlkaXR5YCBleHRyaW5zaWMgd2lsbCBjcmVhdGUgdGhpcyBldmVudC5ATGlxdWlkaXR5UmVtb3ZlZCABDHdobwQBMFQ6OkFjY291bnRJZATcVGhlIGFjY291bnQgdGhhdCB0aGUgbGlxdWlkaXR5IHRva2VucyB3ZXJlIGJ1cm5lZCBmcm9tLgEsd2l0aGRyYXdfdG8EATBUOjpBY2NvdW50SWQEwFRoZSBhY2NvdW50IHRoYXQgdGhlIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkIHRvLgEccG9vbF9pZNEIASRUOjpQb29sSWQEwFRoZSBwb29sIGlkIHRoYXQgdGhlIGxpcXVpZGl0eSB3YXMgcmVtb3ZlZCBmcm9tLgEcYW1vdW50MVUBAShUOjpCYWxhbmNlBPRUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyByZW1vdmVkIGZyb20gdGhlIHBvb2wuARxhbW91bnQyVQEBKFQ6OkJhbGFuY2UE+FRoZSBhbW91bnQgb2YgdGhlIHNlY29uZCBhc3NldCB0aGF0IHdhcyByZW1vdmVkIGZyb20gdGhlIHBvb2wuASBscF90b2tlbjgBOFQ6OlBvb2xBc3NldElkBJxUaGUgaWQgb2YgdGhlIGxwIHRva2VuIHRoYXQgd2FzIGJ1cm5lZC4BPGxwX3Rva2VuX2J1cm5lZFUBAShUOjpCYWxhbmNlBNBUaGUgYW1vdW50IG9mIGxwIHRva2VucyB0aGF0IHdlcmUgYnVybmVkIG9mIHRoYXQgaWQuATh3aXRoZHJhd2FsX2ZlZdUIARxQZXJtaWxsBHRMaXF1aWRpdHkgd2l0aGRyYXdhbCBmZWUgKCUpLgIEMQFBIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgYFJlbW92ZUxpcXVpZGl0eWAgZXh0cmluc2ljIHdpbGwgY3JlYXRlIHRoaXMgZXZlbnQuMFN3YXBFeGVjdXRlZBQBDHdobwQBMFQ6OkFjY291bnRJZAS0V2hpY2ggYWNjb3VudCB3YXMgdGhlIGluc3RpZ2F0b3Igb2YgdGhlIHN3YXAuARxzZW5kX3RvBAEwVDo6QWNjb3VudElkBMBUaGUgYWNjb3VudCB0aGF0IHRoZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZCB0by4BJGFtb3VudF9pblUBAShUOjpCYWxhbmNlBLxUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyBzd2FwcGVkLgEoYW1vdW50X291dFUBAShUOjpCYWxhbmNlBMRUaGUgYW1vdW50IG9mIHRoZSBzZWNvbmQgYXNzZXQgdGhhdCB3YXMgcmVjZWl2ZWQuARBwYXRo2QgBOEJhbGFuY2VQYXRoPFQ+CPxUaGUgcm91dGUgb2YgYXNzZXQgSURzIHdpdGggYW1vdW50cyB0aGF0IHRoZSBzd2FwIHdlbnQgdGhyb3VnaC7sRS5nLiAoQSwgYW1vdW50X2luKSAtPiAoRG90LCBhbW91bnRfb3V0KSAtPiAoQiwgYW1vdW50X291dCkDCDUBQXNzZXRzIGhhdmUgYmVlbiBjb252ZXJ0ZWQgZnJvbSBvbmUgdG8gYW5vdGhlci4gQm90aCBgU3dhcEV4YWN0VG9rZW5Gb3JUb2tlbmDYYW5kIGBTd2FwVG9rZW5Gb3JFeGFjdFRva2VuYCB3aWxsIGdlbmVyYXRlIHRoaXMgZXZlbnQuSFN3YXBDcmVkaXRFeGVjdXRlZAwBJGFtb3VudF9pblUBAShUOjpCYWxhbmNlBLxUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyBzd2FwcGVkLgEoYW1vdW50X291dFUBAShUOjpCYWxhbmNlBMRUaGUgYW1vdW50IG9mIHRoZSBzZWNvbmQgYXNzZXQgdGhhdCB3YXMgcmVjZWl2ZWQuARBwYXRo2QgBOEJhbGFuY2VQYXRoPFQ+CPxUaGUgcm91dGUgb2YgYXNzZXQgSURzIHdpdGggYW1vdW50cyB0aGF0IHRoZSBzd2FwIHdlbnQgdGhyb3VnaC7sRS5nLiAoQSwgYW1vdW50X2luKSAtPiAoRG90LCBhbW91bnRfb3V0KSAtPiAoQiwgYW1vdW50X291dCkEBLxBc3NldHMgaGF2ZSBiZWVuIGNvbnZlcnRlZCBmcm9tIG9uZSB0byBhbm90aGVyLhxUb3VjaGVkCAEccG9vbF9pZNEIASRUOjpQb29sSWQETFRoZSBJRCBvZiB0aGUgcG9vbC4BDHdobwQBMFQ6OkFjY291bnRJZASEVGhlIGFjY291bnQgaW5pdGlhdGluZyB0aGUgdG91Y2guBQQNAVBvb2wgaGFzIGJlZW4gdG91Y2hlZCBpbiBvcmRlciB0byBmdWxmaWxsIG9wZXJhdGlvbmFsIHJlcXVpcmVtZW50cy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTRCAAABAj9Af0BANUIDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVybWlsbAAABAA4AQx1MzIAANkIAAAC3QgA3QgAAAQI/QFVAQDhCAxUcGFsbGV0X2Fzc2V0c19mcmVlemVyGHBhbGxldBRFdmVudAgEVAAESQABCBhGcm96ZW4MAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAAABhUaGF3ZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQABAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldOUIDFBwYWxsZXRfYXNzZXRzX2hvbGRlchhwYWxsZXQURXZlbnQIBFQABEkAAQwQSGVsZBABDHdobwQBMFQ6OkFjY291bnRJZAABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGHJlYXNvbjEIAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGGFtb3VudFUBAShUOjpCYWxhbmNlAAAExGB3aG9gcyBiYWxhbmNlIG9uIGhvbGQgd2FzIGluY3JlYXNlZCBieSBgYW1vdW50YC4gUmVsZWFzZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhyZWFzb24xCAFQVDo6UnVudGltZUhvbGRSZWFzb24AARhhbW91bnRVAQEoVDo6QmFsYW5jZQABBMRgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBkZWNyZWFzZWQgYnkgYGFtb3VudGAuGEJ1cm5lZBABDHdobwQBMFQ6OkFjY291bnRJZAABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGHJlYXNvbjEIAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGGFtb3VudFUBAShUOjpCYWxhbmNlAAIEuGB3aG9gcyBiYWxhbmNlIG9uIGhvbGQgd2FzIGJ1cm5lZCBieSBgYW1vdW50YC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTpCAw8cGFsbGV0X3RyZWFzdXJ5GHBhbGxldBRFdmVudAgEVAAESQABMCBTcGVuZGluZwQBQGJ1ZGdldF9yZW1haW5pbmdVAQE8QmFsYW5jZU9mPFQsIEk+AAAE5FdlIGhhdmUgZW5kZWQgYSBzcGVuZCBwZXJpb2QgYW5kIHdpbGwgbm93IGFsbG9jYXRlIGZ1bmRzLhxBd2FyZGVkDAE4cHJvcG9zYWxfaW5kZXg4ATRQcm9wb3NhbEluZGV4AAEUYXdhcmRVAQE8QmFsYW5jZU9mPFQsIEk+AAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABBHxTb21lIGZ1bmRzIGhhdmUgYmVlbiBhbGxvY2F0ZWQuFEJ1cm50BAEsYnVybnRfZnVuZHNVAQE8QmFsYW5jZU9mPFQsIEk+AAIEiFNvbWUgb2Ygb3VyIGZ1bmRzIGhhdmUgYmVlbiBidXJudC4gUm9sbG92ZXIEAUByb2xsb3Zlcl9iYWxhbmNlVQEBPEJhbGFuY2VPZjxULCBJPgADBC0BU3BlbmRpbmcgaGFzIGZpbmlzaGVkOyB0aGlzIGlzIHRoZSBhbW91bnQgdGhhdCByb2xscyBvdmVyIHVudGlsIG5leHQgc3BlbmQuHERlcG9zaXQEARR2YWx1ZVUBATxCYWxhbmNlT2Y8VCwgST4ABAR8U29tZSBmdW5kcyBoYXZlIGJlZW4gZGVwb3NpdGVkLjRTcGVuZEFwcHJvdmVkDAE4cHJvcG9zYWxfaW5kZXg4ATRQcm9wb3NhbEluZGV4AAEYYW1vdW50VQEBPEJhbGFuY2VPZjxULCBJPgABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAUEnEEgbmV3IHNwZW5kIHByb3Bvc2FsIGhhcyBiZWVuIGFwcHJvdmVkLjxVcGRhdGVkSW5hY3RpdmUIASxyZWFjdGl2YXRlZFUBATxCYWxhbmNlT2Y8VCwgST4AASxkZWFjdGl2YXRlZFUBATxCYWxhbmNlT2Y8VCwgST4ABgTMVGhlIGluYWN0aXZlIGZ1bmRzIG9mIHRoZSBwYWxsZXQgaGF2ZSBiZWVuIHVwZGF0ZWQuSEFzc2V0U3BlbmRBcHByb3ZlZBgBFGluZGV4OAEoU3BlbmRJbmRleAABKGFzc2V0X2tpbmTJBAEwVDo6QXNzZXRLaW5kAAEYYW1vdW50VQEBUEFzc2V0QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnnNBAE4VDo6QmVuZWZpY2lhcnkAASh2YWxpZF9mcm9tOAFQQmxvY2tOdW1iZXJGb3I8VCwgST4AASRleHBpcmVfYXQ4AVBCbG9ja051bWJlckZvcjxULCBJPgAHBLRBIG5ldyBhc3NldCBzcGVuZCBwcm9wb3NhbCBoYXMgYmVlbiBhcHByb3ZlZC5AQXNzZXRTcGVuZFZvaWRlZAQBFGluZGV4OAEoU3BlbmRJbmRleAAIBHRBbiBhcHByb3ZlZCBzcGVuZCB3YXMgdm9pZGVkLhBQYWlkCAEUaW5kZXg4AShTcGVuZEluZGV4AAEocGF5bWVudF9pZCgBZDxUOjpQYXltYXN0ZXIgYXMgUGF5Pjo6SWQACQRMQSBwYXltZW50IGhhcHBlbmVkLjRQYXltZW50RmFpbGVkCAEUaW5kZXg4AShTcGVuZEluZGV4AAEocGF5bWVudF9pZCgBZDxUOjpQYXltYXN0ZXIgYXMgUGF5Pjo6SWQACgSQQSBwYXltZW50IGZhaWxlZCBhbmQgY2FuIGJlIHJldHJpZWQuOFNwZW5kUHJvY2Vzc2VkBAEUaW5kZXg4AShTcGVuZEluZGV4AAsITQFBIHNwZW5kIHdhcyBwcm9jZXNzZWQgYW5kIHJlbW92ZWQgZnJvbSB0aGUgc3RvcmFnZS4gSXQgbWlnaHQgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseXBwYWlkIG9yIGl0IG1heSBoYXZlIGV4cGlyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV07QgMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxhwYWxsZXQURXZlbnQIBFQABEkAARQkRGVsZWdhdGVkDAAEATBUOjpBY2NvdW50SWQAAAQBMFQ6OkFjY291bnRJZAAA0QMBNENsYXNzT2Y8VCwgST4AAAQdAUFuIGFjY291bnQgaGFzIGRlbGVnYXRlZCB0aGVpciB2b3RlIHRvIGFub3RoZXIgYWNjb3VudC4gXFt3aG8sIHRhcmdldFxdLFVuZGVsZWdhdGVkCAAEATBUOjpBY2NvdW50SWQAANEDATRDbGFzc09mPFQsIEk+AAEE9EFuIFxbYWNjb3VudFxdIGhhcyBjYW5jZWxsZWQgYSBwcmV2aW91cyBkZWxlZ2F0aW9uIG9wZXJhdGlvbi4UVm90ZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAARB2b3Rl1QQBcEFjY291bnRWb3RlPEJhbGFuY2VPZjxULCBJPj4AAShwb2xsX2luZGV4OAFEUG9sbEluZGV4T2Y8VCwgST4AAgRQQW4gYWNjb3VudCBoYXMgdm90ZWQsVm90ZVJlbW92ZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAARB2b3Rl1QQBcEFjY291bnRWb3RlPEJhbGFuY2VPZjxULCBJPj4AAShwb2xsX2luZGV4OAFEUG9sbEluZGV4T2Y8VCwgST4AAwRcQSB2b3RlIGhhcyBiZWVuIHJlbW92ZWQwVm90ZVVubG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEUY2xhc3PRAwE0Q2xhc3NPZjxULCBJPgAEBEUBVGhlIGxvY2t1cCBwZXJpb2Qgb2YgYSBjb252aWN0aW9uIHZvdGUgZXhwaXJlZCwgYW5kIHRoZSBmdW5kcyBoYXZlIGJlZW4gdW5sb2NrZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV08QgMQHBhbGxldF9yZWZlcmVuZGEYcGFsbGV0FEV2ZW50CARUAARJAAFAJFN1Ym1pdHRlZAwBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRyYWNr0QMBPFRyYWNrSWRPZjxULCBJPgQlAVRoZSB0cmFjayAoYW5kIGJ5IGV4dGVuc2lvbiBwcm9wb3NhbCBkaXNwYXRjaCBvcmlnaW4pIG9mIHRoaXMgcmVmZXJlbmR1bS4BIHByb3Bvc2Fs6QQBTEJvdW5kZWRDYWxsT2Y8VCwgST4EgFRoZSBwcm9wb3NhbCBmb3IgdGhlIHJlZmVyZW5kdW0uAASAQSByZWZlcmVuZHVtIGhhcyBiZWVuIHN1Ym1pdHRlZC5URGVjaXNpb25EZXBvc2l0UGxhY2VkDAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEMd2hvBAEwVDo6QWNjb3VudElkBIxUaGUgYWNjb3VudCB3aG8gcGxhY2VkIHRoZSBkZXBvc2l0LgEYYW1vdW50VQEBPEJhbGFuY2VPZjxULCBJPgSEVGhlIGFtb3VudCBwbGFjZWQgYnkgdGhlIGFjY291bnQuAQSUVGhlIGRlY2lzaW9uIGRlcG9zaXQgaGFzIGJlZW4gcGxhY2VkLlxEZWNpc2lvbkRlcG9zaXRSZWZ1bmRlZAwBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BDHdobwQBMFQ6OkFjY291bnRJZASMVGhlIGFjY291bnQgd2hvIHBsYWNlZCB0aGUgZGVwb3NpdC4BGGFtb3VudFUBATxCYWxhbmNlT2Y8VCwgST4EhFRoZSBhbW91bnQgcGxhY2VkIGJ5IHRoZSBhY2NvdW50LgIEnFRoZSBkZWNpc2lvbiBkZXBvc2l0IGhhcyBiZWVuIHJlZnVuZGVkLjhEZXBvc2l0U2xhc2hlZAgBDHdobwQBMFQ6OkFjY291bnRJZASMVGhlIGFjY291bnQgd2hvIHBsYWNlZCB0aGUgZGVwb3NpdC4BGGFtb3VudFUBATxCYWxhbmNlT2Y8VCwgST4EhFRoZSBhbW91bnQgcGxhY2VkIGJ5IHRoZSBhY2NvdW50LgMEbEEgZGVwb3NpdCBoYXMgYmVlbiBzbGFzaGVkLjxEZWNpc2lvblN0YXJ0ZWQQARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0cmFja9EDATxUcmFja0lkT2Y8VCwgST4EJQFUaGUgdHJhY2sgKGFuZCBieSBleHRlbnNpb24gcHJvcG9zYWwgZGlzcGF0Y2ggb3JpZ2luKSBvZiB0aGlzIHJlZmVyZW5kdW0uASBwcm9wb3NhbOkEAUxCb3VuZGVkQ2FsbE9mPFQsIEk+BIBUaGUgcHJvcG9zYWwgZm9yIHRoZSByZWZlcmVuZHVtLgEUdGFsbHn1CAEgVDo6VGFsbHkEuFRoZSBjdXJyZW50IHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4EBLxBIHJlZmVyZW5kdW0gaGFzIG1vdmVkIGludG8gdGhlIGRlY2lkaW5nIHBoYXNlLjhDb25maXJtU3RhcnRlZAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4FADhDb25maXJtQWJvcnRlZAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4GACRDb25maXJtZWQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxsefUIASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4HBCEBQSByZWZlcmVuZHVtIGhhcyBlbmRlZCBpdHMgY29uZmlybWF0aW9uIHBoYXNlIGFuZCBpcyByZWFkeSBmb3IgYXBwcm92YWwuIEFwcHJvdmVkBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLggEDQFBIHJlZmVyZW5kdW0gaGFzIGJlZW4gYXBwcm92ZWQgYW5kIGl0cyBwcm9wb3NhbCBoYXMgYmVlbiBzY2hlZHVsZWQuIFJlamVjdGVkCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdGFsbHn1CAEgVDo6VGFsbHkEsFRoZSBmaW5hbCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uCQSsQSBwcm9wb3NhbCBoYXMgYmVlbiByZWplY3RlZCBieSByZWZlcmVuZHVtLiBUaW1lZE91dAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRhbGx59QgBIFQ6OlRhbGx5BLBUaGUgZmluYWwgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgoE2EEgcmVmZXJlbmR1bSBoYXMgYmVlbiB0aW1lZCBvdXQgd2l0aG91dCBiZWluZyBkZWNpZGVkLiRDYW5jZWxsZWQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxsefUIASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4LBIBBIHJlZmVyZW5kdW0gaGFzIGJlZW4gY2FuY2VsbGVkLhhLaWxsZWQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxsefUIASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4MBHRBIHJlZmVyZW5kdW0gaGFzIGJlZW4ga2lsbGVkLmRTdWJtaXNzaW9uRGVwb3NpdFJlZnVuZGVkDAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEMd2hvBAEwVDo6QWNjb3VudElkBIxUaGUgYWNjb3VudCB3aG8gcGxhY2VkIHRoZSBkZXBvc2l0LgEYYW1vdW50VQEBPEJhbGFuY2VPZjxULCBJPgSEVGhlIGFtb3VudCBwbGFjZWQgYnkgdGhlIGFjY291bnQuDQSkVGhlIHN1Ym1pc3Npb24gZGVwb3NpdCBoYXMgYmVlbiByZWZ1bmRlZC4sTWV0YWRhdGFTZXQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARBoYXNoPAEcVDo6SGFzaAQ4UHJlaW1hZ2UgaGFzaC4OBJxNZXRhZGF0YSBmb3IgYSByZWZlcmVuZHVtIGhhcyBiZWVuIHNldC48TWV0YWRhdGFDbGVhcmVkCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEQaGFzaDwBHFQ6Okhhc2gEOFByZWltYWdlIGhhc2guDwSsTWV0YWRhdGEgZm9yIGEgcmVmZXJlbmR1bSBoYXMgYmVlbiBjbGVhcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldPUIDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcUdHlwZXMUVGFsbHkIFFZvdGVzAVUBFFRvdGFsAAAMARBheWVzVQEBFFZvdGVzAAEQbmF5c1UBARRWb3RlcwABHHN1cHBvcnRVAQEUVm90ZXMAAPkIDEBwYWxsZXRfd2hpdGVsaXN0GHBhbGxldBRFdmVudAQEVAABDDxDYWxsV2hpdGVsaXN0ZWQEASRjYWxsX2hhc2g8ARxUOjpIYXNoAAAAWFdoaXRlbGlzdGVkQ2FsbFJlbW92ZWQEASRjYWxsX2hhc2g8ARxUOjpIYXNoAAEAZFdoaXRlbGlzdGVkQ2FsbERpc3BhdGNoZWQIASRjYWxsX2hhc2g8ARxUOjpIYXNoAAEYcmVzdWx0/QgBaERpc3BhdGNoUmVzdWx0V2l0aFBvc3RJbmZvAAIABHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0/QgEGFJlc3VsdAgEVAEBCQRFAQUJAQgIT2sEAAEJAAAAAAxFcnIEAAUJAAABAAABCQw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQb3N0RGlzcGF0Y2hJbmZvAAAIATRhY3R1YWxfd2VpZ2h0DQEBOE9wdGlvbjxXZWlnaHQ+AAEgcGF5c19mZWXRBwEQUGF5cwAABQkIKHNwX3J1bnRpbWVkRGlzcGF0Y2hFcnJvcldpdGhQb3N0SW5mbwQQSW5mbwEBCQAIASRwb3N0X2luZm8BCQEQSW5mbwABFGVycm9y1QcBNERpc3BhdGNoRXJyb3IAAAkJDDxwYWxsZXRfYm91bnRpZXMYcGFsbGV0FEV2ZW50CARUAARJAAEwOEJvdW50eVByb3Bvc2VkBAEUaW5kZXg4ASxCb3VudHlJbmRleAAABFBOZXcgYm91bnR5IHByb3Bvc2FsLjhCb3VudHlSZWplY3RlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAARBib25kVQEBPEJhbGFuY2VPZjxULCBJPgABBMxBIGJvdW50eSBwcm9wb3NhbCB3YXMgcmVqZWN0ZWQ7IGZ1bmRzIHdlcmUgc2xhc2hlZC5IQm91bnR5QmVjYW1lQWN0aXZlBAEUaW5kZXg4ASxCb3VudHlJbmRleAACBLhBIGJvdW50eSBwcm9wb3NhbCBpcyBmdW5kZWQgYW5kIGJlY2FtZSBhY3RpdmUuNEJvdW50eUF3YXJkZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQAAwSUQSBib3VudHkgaXMgYXdhcmRlZCB0byBhIGJlbmVmaWNpYXJ5LjRCb3VudHlDbGFpbWVkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABGHBheW91dFUBATxCYWxhbmNlT2Y8VCwgST4AASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAAEBIxBIGJvdW50eSBpcyBjbGFpbWVkIGJ5IGJlbmVmaWNpYXJ5LjhCb3VudHlDYW5jZWxlZAQBFGluZGV4OAEsQm91bnR5SW5kZXgABQRYQSBib3VudHkgaXMgY2FuY2VsbGVkLjhCb3VudHlFeHRlbmRlZAQBFGluZGV4OAEsQm91bnR5SW5kZXgABgRwQSBib3VudHkgZXhwaXJ5IGlzIGV4dGVuZGVkLjhCb3VudHlBcHByb3ZlZAQBFGluZGV4OAEsQm91bnR5SW5kZXgABwRUQSBib3VudHkgaXMgYXBwcm92ZWQuPEN1cmF0b3JQcm9wb3NlZAgBJGJvdW50eV9pZDgBLEJvdW50eUluZGV4AAEcY3VyYXRvcgQBMFQ6OkFjY291bnRJZAAIBHRBIGJvdW50eSBjdXJhdG9yIGlzIHByb3Bvc2VkLkRDdXJhdG9yVW5hc3NpZ25lZAQBJGJvdW50eV9pZDgBLEJvdW50eUluZGV4AAkEfEEgYm91bnR5IGN1cmF0b3IgaXMgdW5hc3NpZ25lZC48Q3VyYXRvckFjY2VwdGVkCAEkYm91bnR5X2lkOAEsQm91bnR5SW5kZXgAARxjdXJhdG9yBAEwVDo6QWNjb3VudElkAAoEdEEgYm91bnR5IGN1cmF0b3IgaXMgYWNjZXB0ZWQuMERlcG9zaXRQb2tlZBABJGJvdW50eV9pZDgBLEJvdW50eUluZGV4AAEgcHJvcG9zZXIEATBUOjpBY2NvdW50SWQAASxvbGRfZGVwb3NpdFUBATxCYWxhbmNlT2Y8VCwgST4AASxuZXdfZGVwb3NpdFUBATxCYWxhbmNlT2Y8VCwgST4ACwSAQSBib3VudHkgZGVwb3NpdCBoYXMgYmVlbiBwb2tlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQNCQxUcGFsbGV0X2NoaWxkX2JvdW50aWVzGHBhbGxldBRFdmVudAQEVAABEBRBZGRlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleDgBLEJvdW50eUluZGV4AAAEYEEgY2hpbGQtYm91bnR5IGlzIGFkZGVkLhxBd2FyZGVkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV4OAEsQm91bnR5SW5kZXgAASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAABBKxBIGNoaWxkLWJvdW50eSBpcyBhd2FyZGVkIHRvIGEgYmVuZWZpY2lhcnkuHENsYWltZWQQARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXg4ASxCb3VudHlJbmRleAABGHBheW91dFUBATBCYWxhbmNlT2Y8VD4AASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAACBKRBIGNoaWxkLWJvdW50eSBpcyBjbGFpbWVkIGJ5IGJlbmVmaWNpYXJ5LiBDYW5jZWxlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleDgBLEJvdW50eUluZGV4AAMEcEEgY2hpbGQtYm91bnR5IGlzIGNhbmNlbGxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQRCQxEcGFsbGV0X2Fzc2V0X3JhdGUYcGFsbGV0FEV2ZW50BARUAAEMQEFzc2V0UmF0ZUNyZWF0ZWQIAShhc3NldF9raW5kyQQBMFQ6OkFzc2V0S2luZAABEHJhdGUJBQEkRml4ZWRVMTI4AAAAQEFzc2V0UmF0ZVJlbW92ZWQEAShhc3NldF9raW5kyQQBMFQ6OkFzc2V0S2luZAABAEBBc3NldFJhdGVVcGRhdGVkDAEoYXNzZXRfa2luZMkEATBUOjpBc3NldEtpbmQAAQxvbGQJBQEkRml4ZWRVMTI4AAEMbmV3CQUBJEZpeGVkVTEyOAACAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBUJDGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMYcGFsbGV0FEV2ZW50CARUAARJAAEwNEJvdW50eUNyZWF0ZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAAE4EEgbmV3IGJvdW50eSB3YXMgY3JlYXRlZCBhbmQgZnVuZGluZyBoYXMgYmVlbiBpbml0aWF0ZWQuSENoaWxkQm91bnR5Q3JlYXRlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleDgBLEJvdW50eUluZGV4AAEE+EEgbmV3IGNoaWxkLWJvdW50eSB3YXMgY3JlYXRlZCBhbmQgZnVuZGluZyBoYXMgYmVlbiBpbml0aWF0ZWQuSEJvdW50eUJlY2FtZUFjdGl2ZQwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOABTE9wdGlvbjxCb3VudHlJbmRleD4AARxjdXJhdG9yBAEwVDo6QWNjb3VudElkAAIE6FRoZSBjdXJhdG9yIGFjY2VwdGVkIHJvbGUgYW5kIGNoaWxkLS9ib3VudHkgYmVjYW1lIGFjdGl2ZS40Qm91bnR5QXdhcmRlZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOABTE9wdGlvbjxCb3VudHlJbmRleD4AASxiZW5lZmljaWFyec0EAThUOjpCZW5lZmljaWFyeQADBLRBIGNoaWxkLS9ib3VudHkgd2FzIGF3YXJkZWQgdG8gYSBiZW5lZmljaWFyeS5UQm91bnR5UGF5b3V0UHJvY2Vzc2VkFAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV44AFMT3B0aW9uPEJvdW50eUluZGV4PgABKGFzc2V0X2tpbmTJBAEwVDo6QXNzZXRLaW5kAAEUdmFsdWVVAQEoVDo6QmFsYW5jZQABLGJlbmVmaWNpYXJ5zQQBOFQ6OkJlbmVmaWNpYXJ5AAQE9FBheW91dCBwYXltZW50IHRvIHRoZSBiZW5lZmljaWFyeSBoYXMgY29uY2x1ZGVkIHN1Y2Nlc3NmdWxseS5YQm91bnR5RnVuZGluZ1Byb2Nlc3NlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOABTE9wdGlvbjxCb3VudHlJbmRleD4ABQSsRnVuZGluZyBwYXltZW50IGhhcyBjb25jbHVkZWQgc3VjY2Vzc2Z1bGx5LlRCb3VudHlSZWZ1bmRQcm9jZXNzZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjgAUxPcHRpb248Qm91bnR5SW5kZXg+AAYEqFJlZnVuZCBwYXltZW50IGhhcyBjb25jbHVkZWQgc3VjY2Vzc2Z1bGx5LjhCb3VudHlDYW5jZWxlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOABTE9wdGlvbjxCb3VudHlJbmRleD4ABwR4QSBjaGlsZC0vYm91bnR5IHdhcyBjYW5jZWxsZWQuREN1cmF0b3JVbmFzc2lnbmVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV44AFMT3B0aW9uPEJvdW50eUluZGV4PgAIBJxBIGNoaWxkLS9ib3VudHkgY3VyYXRvciB3YXMgdW5hc3NpZ25lZC48Q3VyYXRvclByb3Bvc2VkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV44AFMT3B0aW9uPEJvdW50eUluZGV4PgABHGN1cmF0b3IEATBUOjpBY2NvdW50SWQACQSUQSBjaGlsZC0vYm91bnR5IGN1cmF0b3Igd2FzIHByb3Bvc2VkLjRQYXltZW50RmFpbGVkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV44AFMT3B0aW9uPEJvdW50eUluZGV4PgABKHBheW1lbnRfaWQoAURQYXltZW50SWRPZjxULCBJPgAKBJBBIHBheW1lbnQgZmFpbGVkIGFuZCBjYW4gYmUgcmV0cmllZC4QUGFpZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOABTE9wdGlvbjxCb3VudHlJbmRleD4AAShwYXltZW50X2lkKAFEUGF5bWVudElkT2Y8VCwgST4ACwSYQSBwYXltZW50IGhhcHBlbmVkIGFuZCBjYW4gYmUgY2hlY2tlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQZCQwocGFsbGV0X2RhcBhwYWxsZXQURXZlbnQEBFQAARA4SXNzdWFuY2VNaW50ZWQIATB0b3RhbF9taW50ZWRVAQEwQmFsYW5jZU9mPFQ+BIRUb3RhbCBhbW91bnQgbWludGVkIGluIHRoaXMgZHJpcC4BOGVsYXBzZWRfbWlsbGlzKAEMdTY0BIhFbGFwc2VkIHRpbWUgKG1zKSBzaW5jZSBsYXN0IGRyaXAuAATcSW5mbGF0aW9uIGRyaXBwZWQgYW5kIGRpc3RyaWJ1dGVkIHRvIGJ1ZGdldCByZWNpcGllbnRzLlxCdWRnZXRBbGxvY2F0aW9uVXBkYXRlZAQBLGFsbG9jYXRpb25zFQUBTEJ1ZGdldEFsbG9jYXRpb25NYXAEeFRoZSBuZXcgYnVkZ2V0IGFsbG9jYXRpb24gbWFwLgEEtEJ1ZGdldCBhbGxvY2F0aW9uIHdhcyB1cGRhdGVkIHZpYSBnb3Zlcm5hbmNlLjhTdGFnaW5nRHJhaW5lZAQBGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4EPEFtb3VudCBkcmFpbmVkLgIEAQFGdW5kcyB3ZXJlIGRyYWluZWQgZnJvbSB0aGUgc3RhZ2luZyBhY2NvdW50IGludG8gdGhlIERBUCBidWZmZXIuKFVuZXhwZWN0ZWQEAB0JAThVbmV4cGVjdGVkS2luZAADBLBBbiB1bmV4cGVjdGVkL2RlZmVuc2l2ZSBldmVudCB3YXMgdHJpZ2dlcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldB0JDChwYWxsZXRfZGFwGHBhbGxldDhVbmV4cGVjdGVkS2luZAABCChNaW50RmFpbGVkAAAAOEVsYXBzZWRDbGFtcGVkCAE4YWN0dWFsX2VsYXBzZWQoAQx1NjQAARxjZWlsaW5nKAEMdTY0AAEAACEJDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0FEV2ZW50BARUAAEQIE1pZ3JhdGVkDAEMdG9wOAEMdTMyAAEUY2hpbGQ4AQx1MzIAARxjb21wdXRlJQkBQE1pZ3JhdGlvbkNvbXB1dGUAAAg5AUdpdmVuIG51bWJlciBvZiBgKHRvcCwgY2hpbGQpYCBrZXlzIHdlcmUgbWlncmF0ZWQgcmVzcGVjdGl2ZWx5LCB3aXRoIHRoZSBnaXZlbihgY29tcHV0ZWAuHFNsYXNoZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEwQmFsYW5jZU9mPFQ+AAEEtFNvbWUgYWNjb3VudCBnb3Qgc2xhc2hlZCBieSB0aGUgZ2l2ZW4gYW1vdW50LlRBdXRvTWlncmF0aW9uRmluaXNoZWQAAgSEVGhlIGF1dG8gbWlncmF0aW9uIHRhc2sgZmluaXNoZWQuGEhhbHRlZAQBFGVycm9yKQkBIEVycm9yPFQ+AAME7E1pZ3JhdGlvbiBnb3QgaGFsdGVkIGR1ZSB0byBhbiBlcnJvciBvciBtaXNzLWNvbmZpZ3VyYXRpb24uBHBJbm5lciBldmVudHMgb2YgdGhpcyBwYWxsZXQuJQkMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXRATWlncmF0aW9uQ29tcHV0ZQABCBhTaWduZWQAAAAQQXV0bwABAAApCQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldBRFcnJvcgQEVAABGDxNYXhTaWduZWRMaW1pdHMAAASATWF4IHNpZ25lZCBsaW1pdHMgbm90IHJlc3BlY3RlZC4oS2V5VG9vTG9uZwABHLRBIGtleSB3YXMgbG9uZ2VyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgbWF4aW11bS4AEQFUaGlzIG1lYW5zIHRoYXQgdGhlIG1pZ3JhdGlvbiBoYWx0ZWQgYXQgdGhlIGN1cnJlbnQgW2BQcm9ncmVzc2BdIGFuZAEBY2FuIGJlIHJlc3VtZWQgd2l0aCBhIGxhcmdlciBbYGNyYXRlOjpDb25maWc6Ok1heEtleUxlbmBdIHZhbHVlLiEBUmV0cnlpbmcgd2l0aCB0aGUgc2FtZSBbYGNyYXRlOjpDb25maWc6Ok1heEtleUxlbmBdIHZhbHVlIHdpbGwgbm90IHdvcmsuRQFUaGUgdmFsdWUgc2hvdWxkIG9ubHkgYmUgaW5jcmVhc2VkIHRvIGF2b2lkIGEgc3RvcmFnZSBtaWdyYXRpb24gZm9yIHRoZSBjdXJyZW50bHmQc3RvcmVkIFtgY3JhdGU6OlByb2dyZXNzOjpMYXN0S2V5YF0uOE5vdEVub3VnaEZ1bmRzAAIElHN1Ym1pdHRlciBkb2VzIG5vdCBoYXZlIGVub3VnaCBmdW5kcy4oQmFkV2l0bmVzcwADBGhCYWQgd2l0bmVzcyBkYXRhIHByb3ZpZGVkLmRTaWduZWRNaWdyYXRpb25Ob3RBbGxvd2VkAAQEJQFTaWduZWQgbWlncmF0aW9uIGlzIG5vdCBhbGxvd2VkIGJlY2F1c2UgdGhlIG1heGltdW0gbGltaXQgaXMgbm90IHNldCB5ZXQuMEJhZENoaWxkUm9vdAAFBGBCYWQgY2hpbGQgcm9vdCBwcm92aWRlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuLQkMXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldBRFdmVudAQEVAABXBxDcmVhdGVkCAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAAABGBBIHBvb2wgaGFzIGJlZW4gY3JlYXRlZC4YQm9uZGVkEAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAABGGJvbmRlZFUBATBCYWxhbmNlT2Y8VD4AARhqb2luZWRZAQEQYm9vbAABBJRBIG1lbWJlciBoYXMgYmVjYW1lIGJvbmRlZCBpbiBhIHBvb2wuHFBhaWRPdXQMARhtZW1iZXIEATBUOjpBY2NvdW50SWQAARxwb29sX2lkOAEYUG9vbElkAAEYcGF5b3V0VQEBMEJhbGFuY2VPZjxUPgACBIxBIHBheW91dCBoYXMgYmVlbiBtYWRlIHRvIGEgbWVtYmVyLiBVbmJvbmRlZBQBGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABHHBvb2xfaWQ4ARhQb29sSWQAARxiYWxhbmNlVQEBMEJhbGFuY2VPZjxUPgABGHBvaW50c1UBATBCYWxhbmNlT2Y8VD4AAQxlcmE4ASBFcmFJbmRleAADLJhBIG1lbWJlciBoYXMgdW5ib25kZWQgZnJvbSB0aGVpciBwb29sLgA5AS0gYGJhbGFuY2VgIGlzIHRoZSBjb3JyZXNwb25kaW5nIGJhbGFuY2Ugb2YgdGhlIG51bWJlciBvZiBwb2ludHMgdGhhdCBoYXMgYmVlblUBICByZXF1ZXN0ZWQgdG8gYmUgdW5ib25kZWQgKHRoZSBhcmd1bWVudCBvZiB0aGUgYHVuYm9uZGAgdHJhbnNhY3Rpb24pIGZyb20gdGhlIGJvbmRlZBwgIHBvb2wuRQEtIGBwb2ludHNgIGlzIHRoZSBudW1iZXIgb2YgcG9pbnRzIHRoYXQgYXJlIGlzc3VlZCBhcyBhIHJlc3VsdCBvZiBgYmFsYW5jZWAgYmVpbmfAZGlzc29sdmVkIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgdW5ib25kaW5nIHBvb2wu5C0gYGVyYWAgaXMgdGhlIGVyYSBpbiB3aGljaCB0aGUgYmFsYW5jZSB3aWxsIGJlIHVuYm9uZGVkLlUBSW4gdGhlIGFic2VuY2Ugb2Ygc2xhc2hpbmcsIHRoZXNlIHZhbHVlcyB3aWxsIG1hdGNoLiBJbiB0aGUgcHJlc2VuY2Ugb2Ygc2xhc2hpbmcsIHRoZU0BbnVtYmVyIG9mIHBvaW50cyB0aGF0IGFyZSBpc3N1ZWQgaW4gdGhlIHVuYm9uZGluZyBwb29sIHdpbGwgYmUgbGVzcyB0aGFuIHRoZSBhbW91bnRkcmVxdWVzdGVkIHRvIGJlIHVuYm9uZGVkLiRXaXRoZHJhd24QARhtZW1iZXIEATBUOjpBY2NvdW50SWQAARxwb29sX2lkOAEYUG9vbElkAAEcYmFsYW5jZVUBATBCYWxhbmNlT2Y8VD4AARhwb2ludHNVAQEwQmFsYW5jZU9mPFQ+AAQYnEEgbWVtYmVyIGhhcyB3aXRoZHJhd24gZnJvbSB0aGVpciBwb29sLgAhAVRoZSBnaXZlbiBudW1iZXIgb2YgYHBvaW50c2AgaGF2ZSBiZWVuIGRpc3NvbHZlZCBpbiByZXR1cm4gb2YgYGJhbGFuY2VgLgBZAVNpbWlsYXIgdG8gYFVuYm9uZGVkYCBldmVudCwgaW4gdGhlIGFic2VuY2Ugb2Ygc2xhc2hpbmcsIHRoZSByYXRpbyBvZiBwb2ludCB0byBiYWxhbmNlKHdpbGwgYmUgMS4kRGVzdHJveWVkBAEccG9vbF9pZDgBGFBvb2xJZAAFBGhBIHBvb2wgaGFzIGJlZW4gZGVzdHJveWVkLjBTdGF0ZUNoYW5nZWQIARxwb29sX2lkOAEYUG9vbElkAAEkbmV3X3N0YXRlSQUBJFBvb2xTdGF0ZQAGBHxUaGUgc3RhdGUgb2YgYSBwb29sIGhhcyBjaGFuZ2VkNE1lbWJlclJlbW92ZWQMARxwb29sX2lkOAEYUG9vbElkAAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAFAcmVsZWFzZWRfYmFsYW5jZVUBATBCYWxhbmNlT2Y8VD4ABxSYQSBtZW1iZXIgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIGEgcG9vbC4AUQFUaGUgcmVtb3ZhbCBjYW4gYmUgdm9sdW50YXJ5ICh3aXRoZHJhd24gYWxsIHVuYm9uZGVkIGZ1bmRzKSBvciBpbnZvbHVudGFyeSAoa2lja2VkKS5JAUFueSBmdW5kcyB0aGF0IGFyZSBzdGlsbCBkZWxlZ2F0ZWQgKGkuZS4gZGFuZ2xpbmcgZGVsZWdhdGlvbikgYXJlIHJlbGVhc2VkIGFuZCBhcmWIcmVwcmVzZW50ZWQgYnkgYHJlbGVhc2VkX2JhbGFuY2VgLjBSb2xlc1VwZGF0ZWQMARByb290jQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEcYm91bmNlco0BAVBPcHRpb248VDo6QWNjb3VudElkPgABJG5vbWluYXRvco0BAVBPcHRpb248VDo6QWNjb3VudElkPgAICFUBVGhlIHJvbGVzIG9mIGEgcG9vbCBoYXZlIGJlZW4gdXBkYXRlZCB0byB0aGUgZ2l2ZW4gbmV3IHJvbGVzLiBOb3RlIHRoYXQgdGhlIGRlcG9zaXRvckRjYW4gbmV2ZXIgY2hhbmdlLixQb29sU2xhc2hlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARxiYWxhbmNlVQEBMEJhbGFuY2VPZjxUPgAJBA0BVGhlIGFjdGl2ZSBiYWxhbmNlIG9mIHBvb2wgYHBvb2xfaWRgIGhhcyBiZWVuIHNsYXNoZWQgdG8gYGJhbGFuY2VgLlBVbmJvbmRpbmdQb29sU2xhc2hlZAwBHHBvb2xfaWQ4ARhQb29sSWQAAQxlcmE4ASBFcmFJbmRleAABHGJhbGFuY2VVAQEwQmFsYW5jZU9mPFQ+AAoEJQFUaGUgdW5ib25kIHBvb2wgYXQgYGVyYWAgb2YgcG9vbCBgcG9vbF9pZGAgaGFzIGJlZW4gc2xhc2hlZCB0byBgYmFsYW5jZWAuVFBvb2xDb21taXNzaW9uVXBkYXRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARxjdXJyZW50YQUBfE9wdGlvbjwoUGVyYmlsbCwgVDo6QWNjb3VudElkKT4ACwS0QSBwb29sJ3MgY29tbWlzc2lvbiBzZXR0aW5nIGhhcyBiZWVuIGNoYW5nZWQuYFBvb2xNYXhDb21taXNzaW9uVXBkYXRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAAThtYXhfY29tbWlzc2lvbhkFARxQZXJiaWxsAAwE1EEgcG9vbCdzIG1heGltdW0gY29tbWlzc2lvbiBzZXR0aW5nIGhhcyBiZWVuIGNoYW5nZWQufFBvb2xDb21taXNzaW9uQ2hhbmdlUmF0ZVVwZGF0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEsY2hhbmdlX3JhdGVpBQGcQ29tbWlzc2lvbkNoYW5nZVJhdGU8QmxvY2tOdW1iZXJGb3I8VD4+AA0EzEEgcG9vbCdzIGNvbW1pc3Npb24gYGNoYW5nZV9yYXRlYCBoYXMgYmVlbiBjaGFuZ2VkLpBQb29sQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvblVwZGF0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEocGVybWlzc2lvbm0FAbxPcHRpb248Q29tbWlzc2lvbkNsYWltUGVybWlzc2lvbjxUOjpBY2NvdW50SWQ+PgAOBMhQb29sIGNvbW1pc3Npb24gY2xhaW0gcGVybWlzc2lvbiBoYXMgYmVlbiB1cGRhdGVkLlRQb29sQ29tbWlzc2lvbkNsYWltZWQIARxwb29sX2lkOAEYUG9vbElkAAEoY29tbWlzc2lvblUBATBCYWxhbmNlT2Y8VD4ADwSEUG9vbCBjb21taXNzaW9uIGhhcyBiZWVuIGNsYWltZWQuZE1pbkJhbGFuY2VEZWZpY2l0QWRqdXN0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEYYW1vdW50VQEBMEJhbGFuY2VPZjxUPgAQBMhUb3BwZWQgdXAgZGVmaWNpdCBpbiBmcm96ZW4gRUQgb2YgdGhlIHJld2FyZCBwb29sLmBNaW5CYWxhbmNlRXhjZXNzQWRqdXN0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEYYW1vdW50VQEBMEJhbGFuY2VPZjxUPgARBLxDbGFpbWVkIGV4Y2VzcyBmcm96ZW4gRUQgb2YgYWYgdGhlIHJld2FyZCBwb29sLnBNZW1iZXJDbGFpbVBlcm1pc3Npb25VcGRhdGVkCAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEocGVybWlzc2lvbl0FATxDbGFpbVBlcm1pc3Npb24AEgTIQSBwb29sIG1lbWJlcidzIGNsYWltIHBlcm1pc3Npb24gaGFzIGJlZW4gdXBkYXRlZC48TWV0YWRhdGFVcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABGGNhbGxlcgQBMFQ6OkFjY291bnRJZAATBHhBIHBvb2wncyBtZXRhZGF0YSB3YXMgdXBkYXRlZC5IUG9vbE5vbWluYXRpb25NYWRlCAEccG9vbF9pZDgBGFBvb2xJZAABGGNhbGxlcgQBMFQ6OkFjY291bnRJZAAUCFkBQSBwb29sJ3Mgbm9taW5hdGluZyBhY2NvdW50IChvciB0aGUgcG9vbCdzIHJvb3QgYWNjb3VudCkgaGFzIG5vbWluYXRlZCBhIHZhbGlkYXRvciBzZXRYb24gYmVoYWxmIG9mIHRoZSBwb29sLlBQb29sTm9taW5hdG9yQ2hpbGxlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARhjYWxsZXIEATBUOjpBY2NvdW50SWQAFQS4VGhlIHBvb2wgaXMgY2hpbGxlZCBpLmUuIG5vIGxvbmdlciBub21pbmF0aW5nLkxHbG9iYWxQYXJhbXNVcGRhdGVkGAE0bWluX2pvaW5fYm9uZFUBATBCYWxhbmNlT2Y8VD4AATxtaW5fY3JlYXRlX2JvbmRVAQEwQmFsYW5jZU9mPFQ+AAEkbWF4X3Bvb2xz4AEsT3B0aW9uPHUzMj4AASxtYXhfbWVtYmVyc+ABLE9wdGlvbjx1MzI+AAFQbWF4X21lbWJlcnNfcGVyX3Bvb2zgASxPcHRpb248dTMyPgABVGdsb2JhbF9tYXhfY29tbWlzc2lvbjEJATxPcHRpb248UGVyYmlsbD4AFgQBAUdsb2JhbCBwYXJhbWV0ZXJzIHJlZ3VsYXRpbmcgbm9taW5hdGlvbiBwb29scyBoYXZlIGJlZW4gdXBkYXRlZC4EWEV2ZW50cyBvZiB0aGlzIHBhbGxldC4xCQQYT3B0aW9uBARUARkFAQgQTm9uZQAAABBTb21lBAAZBQAAAQAANQkMQHBhbGxldF9iYWdzX2xpc3QYcGFsbGV0FEV2ZW50CARUAARJAAEIIFJlYmFnZ2VkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEQZnJvbSgBIFQ6OlNjb3JlAAEIdG8oASBUOjpTY29yZQAABKRNb3ZlZCBhbiBhY2NvdW50IGZyb20gb25lIGJhZyB0byBhbm90aGVyLjBTY29yZVVwZGF0ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAASRuZXdfc2NvcmUoASBUOjpTY29yZQABBNhVcGRhdGVkIHRoZSBzY29yZSBvZiBzb21lIGFjY291bnQgdG8gdGhlIGdpdmVuIGFtb3VudC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQ5CQxgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nGHBhbGxldBRFdmVudAQEVAABECREZWxlZ2F0ZWQMARRhZ2VudAQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4AAAR8RnVuZHMgZGVsZWdhdGVkIGJ5IGEgZGVsZWdhdG9yLiBSZWxlYXNlZAwBFGFnZW50BAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBMEJhbGFuY2VPZjxUPgABBHhGdW5kcyByZWxlYXNlZCB0byBhIGRlbGVnYXRvci4cU2xhc2hlZAwBFGFnZW50BAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBMEJhbGFuY2VPZjxUPgACBHxGdW5kcyBzbGFzaGVkIGZyb20gYSBkZWxlZ2F0b3IuSE1pZ3JhdGVkRGVsZWdhdGlvbgwBFGFnZW50BAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBMEJhbGFuY2VPZjxUPgADBMRVbmNsYWltZWQgZGVsZWdhdGlvbiBmdW5kcyBtaWdyYXRlZCB0byBkZWxlZ2F0b3IuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0PQkMeHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudBhwYWxsZXQURXZlbnQEBFQAARBUU2Vzc2lvblJlcG9ydFJlY2VpdmVkEAEkZW5kX2luZGV4OAEwU2Vzc2lvbkluZGV4AAFQYWN0aXZhdGlvbl90aW1lc3RhbXCJBQFIT3B0aW9uPCh1NjQsIHUzMik+AAFcdmFsaWRhdG9yX3BvaW50c19jb3VudHM4AQx1MzIAASBsZWZ0b3ZlclkBARBib29sAAAEjEEgc2FpZCBzZXNzaW9uIHJlcG9ydCB3YXMgcmVjZWl2ZWQuPE9mZmVuY2VSZWNlaXZlZAgBNHNsYXNoX3Nlc3Npb244ATBTZXNzaW9uSW5kZXgAAThvZmZlbmNlc19jb3VudDgBDHUzMgABBGxBIG5ldyBvZmZlbmNlIHdhcyByZXBvcnRlZC4gRmVlc1BhaWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARBmZWVzVQEBMEJhbGFuY2VPZjxUPgACDAEBRmVlcyB3ZXJlIGNoYXJnZWQgZm9yIGEgdXNlciBvcGVyYXRpb24gKHNldF9rZXlzIG9yIHB1cmdlX2tleXMpLgAZAVRoZSBmZWUgaW5jbHVkZXMgYm90aCBYQ00gZGVsaXZlcnkgZmVlIGFuZCByZWxheSBjaGFpbiBleGVjdXRpb24gY29zdC4oVW5leHBlY3RlZAQAQQkBOFVuZXhwZWN0ZWRLaW5kAAMIDQFTb21ldGhpbmcgb2NjdXJyZWQgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuIHVuZGVyIG5vcm1hbCBvcGVyYXRpb24uvExvZ2dlZCBhcyBhbiBldmVudCBmb3IgZmFpbC1zYWZlIG9ic2VydmFiaWxpdHkuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0QQkMeHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudBhwYWxsZXQ4VW5leHBlY3RlZEtpbmQAARhwU2Vzc2lvblJlcG9ydEludGVncml0eUZhaWxlZAAAAGxWYWxpZGF0b3JTZXRJbnRlZ3JpdHlGYWlsZWQAAQA4U2Vzc2lvblNraXBwZWQAAgBcU2Vzc2lvbkFscmVhZHlQcm9jZXNzZWQAAwBYVmFsaWRhdG9yU2V0U2VuZEZhaWxlZAAEAExWYWxpZGF0b3JTZXREcm9wcGVkAAUAAEUJDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYcGFsbGV0FEV2ZW50BARUAAEURFBoYXNlVHJhbnNpdGlvbmVkCAEQZnJvbaUFASBQaGFzZTxUPgRAdGhlIHNvdXJjZSBwaGFzZQEIdG+lBQEgUGhhc2U8VD4EQFRoZSB0YXJnZXQgcGhhc2UACF0BQSBwaGFzZSB0cmFuc2l0aW9uIGhhcHBlbmVkLiBPbmx5IGNoZWNrcyBtYWpvciBjaGFuZ2VzIGluIHRoZSB2YXJpYW50cywgbm90IG1pbm9yIGlubmVyHHZhbHVlcy54VW5leHBlY3RlZFRhcmdldFNuYXBzaG90RmFpbGVkAAEEgFRhcmdldCBzbmFwc2hvdCBjcmVhdGlvbiBmYWlsZWQudFVuZXhwZWN0ZWRWb3RlclNuYXBzaG90RmFpbGVkAAIEfFZvdGVyIHNuYXBzaG90IGNyZWF0aW9uIGZhaWxlZC6QVW5leHBlY3RlZFBoYXNlVHJhbnNpdGlvbk91dE9mV2VpZ2h0EAEQZnJvbaUFASBQaGFzZTxUPgABCHRvpQUBIFBoYXNlPFQ+AAEgcmVxdWlyZWQRAQEYV2VpZ2h0AAEMaGFkEQEBGFdlaWdodAADBPhQaGFzZSB0cmFuc2l0aW9uIGNvdWxkIG5vdCBwcm9jZWVkIGR1ZSB0byBiZWluZyBvdXQgb2Ygd2VpZ2h0LnRVbmV4cGVjdGVkUGhhc2VUcmFuc2l0aW9uSGFsdAgBIHJlcXVpcmVkEQEBGFdlaWdodAABDGhhZBEBARhXZWlnaHQABAQVAVBoYXNlIHRyYW5zaXRpb24gY291bGQgbm90IGV2ZW4gYmVnaW4gYmVjYXNldSBvZiBiZWluZyBvdXQgb2Ygd2VpZ2h0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldEkJFJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sgdmVyaWZpZXIUaW1wbHMYcGFsbGV0FEV2ZW50BARUAAEMSFZlcmlmaWNhdGlvbkZhaWxlZAgAOAEkUGFnZUluZGV4AABNCQFARmVhc2liaWxpdHlFcnJvcgAAEKBBIHZlcmlmaWNhdGlvbiBmYWlsZWQgYXQgdGhlIGdpdmVuIHBhZ2UuAFUBTk9URTogaWYgdGhlIGluZGV4IGlzIDAsIHRoZW4gdGhpcyBjb3VsZCBtZWFuIGVpdGhlciB0aGUgZmVhc2liaWxpdHkgb2YgdGhlIGxhc3QgcGFnZQUBd2FzIHdyb25nLCBvciB0aGUgZmluYWwgY2hlY2tzIG9mIGBmaW5hbGl6ZV92ZXJpZmljYXRpb25gIGZhaWxlZC4gVmVyaWZpZWQIADgBJFBhZ2VJbmRleAAAOAEMdTMyAAEIWQFUaGUgZ2l2ZW4gcGFnZSBvZiBhIHNvbHV0aW9uIGhhcyBiZWVuIHZlcmlmaWVkLCB3aXRoIHRoZSBnaXZlbiBudW1iZXIgb2Ygd2lubmVycyBiZWluZzBmb3VuZCBpbiBpdC4YUXVldWVkCADNBQE0RWxlY3Rpb25TY29yZQAAVQkBVE9wdGlvbjxFbGVjdGlvblNjb3JlPgACBB0BQSBzb2x1dGlvbiB3aXRoIHRoZSBnaXZlbiBzY29yZSBoYXMgcmVwbGFjZWQgb3VyIGN1cnJlbnQgYmVzdCBzb2x1dGlvbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRNCQyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyQEZlYXNpYmlsaXR5RXJyb3IAASxAV3JvbmdXaW5uZXJDb3VudAAAAExTbmFwc2hvdFVuYXZhaWxhYmxlAAEALEludmFsaWRWb3RlAAIAMEludmFsaWRWb3RlcgADADRJbnZhbGlkV2lubmVyAAQAMEludmFsaWRTY29yZQAFADBJbnZhbGlkUm91bmQABgAsU2NvcmVUb29Mb3cABwBQRmFpbGVkVG9Cb3VuZFN1cHBvcnQACAAwTnBvc0VsZWN0aW9uBABRCQFgc3BfbnBvc19lbGVjdGlvbnM6OkVycm9yAAkAKEluY29tcGxldGUACgAAUQkIRHNwX25wb3NfZWxlY3Rpb25zFEVycm9yAAEoWFNvbHV0aW9uV2VpZ2h0T3ZlcmZsb3cAAABYU29sdXRpb25UYXJnZXRPdmVyZmxvdwABAFBTb2x1dGlvbkludmFsaWRJbmRleAACAGBTb2x1dGlvbkludmFsaWRQYWdlSW5kZXgAAwA8QXJpdGhtZXRpY0Vycm9yAAQASEludmFsaWRTdXBwb3J0RWRnZQAFADRUb29NYW55Vm90ZXJzAAYAOEJvdW5kc0V4Y2VlZGVkAAcAOER1cGxpY2F0ZVZvdGVyAAgAPER1cGxpY2F0ZVRhcmdldAAJAABVCQQYT3B0aW9uBARUAc0FAQgQTm9uZQAAABBTb21lBADNBQAAAQAAWQkQkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhzaWduZWQYcGFsbGV0FEV2ZW50BARUAAEcKFJlZ2lzdGVyZWQMADgBDHUzMgAABAEwVDo6QWNjb3VudElkAADNBQE0RWxlY3Rpb25TY29yZQAABFEBVXBjb21pbmcgc3VibWlzc2lvbiBoYXMgYmVlbiByZWdpc3RlcmVkIGZvciB0aGUgZ2l2ZW4gYWNjb3VudCwgd2l0aCB0aGUgZ2l2ZW4gc2NvcmUuGFN0b3JlZAwAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQAADgBJFBhZ2VJbmRleAABBF0BQSBwYWdlIG9mIHNvbHV0aW9uIHNvbHV0aW9uIHdpdGggdGhlIGdpdmVuIGluZGV4IGhhcyBiZWVuIHN0b3JlZCBmb3IgdGhlIGdpdmVuIGFjY291bnQuIFJld2FyZGVkDAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAAVQEBMEJhbGFuY2VPZjxUPgACBOhUaGUgZ2l2ZW4gYWNjb3VudCBoYXMgYmVlbiByZXdhcmRlZCB3aXRoIHRoZSBnaXZlbiBhbW91bnQuHFNsYXNoZWQMADgBDHUzMgAABAEwVDo6QWNjb3VudElkAABVAQEwQmFsYW5jZU9mPFQ+AAME5FRoZSBnaXZlbiBhY2NvdW50IGhhcyBiZWVuIHNsYXNoZWQgd2l0aCB0aGUgZ2l2ZW4gYW1vdW50LhxFamVjdGVkCAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAEBNRUaGUgZ2l2ZW4gc29sdXRpb24sIGZvciB0aGUgZ2l2ZW4gcm91bmQsIHdhcyBlamVjdGVkLiREaXNjYXJkZWQIADgBDHUzMgAABAEwVDo6QWNjb3VudElkAAUElFRoZSBnaXZlbiBhY2NvdW50IGhhcyBiZWVuIGRpc2NhcmRlZC4YQmFpbGVkCAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAGBHRUaGUgZ2l2ZW4gYWNjb3VudCBoYXMgYmFpbGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldF0JEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0FEV2ZW50BARUAAFsHEVyYVBhaWQMASRlcmFfaW5kZXg4ASBFcmFJbmRleAABQHZhbGlkYXRvcl9wYXlvdXRVAQEwQmFsYW5jZU9mPFQ+AAEkcmVtYWluZGVyVQEBMEJhbGFuY2VPZjxUPgAAFHBUaGUgZXJhIHBheW91dCBoYXMgYmVlbiBzZXQuAA0BSW4gbm9uLW1pbnRpbmcgbW9kZSwgYHZhbGlkYXRvcl9wYXlvdXRgIGlzIHRoZSBzdGFrZXIgcmV3YXJkIGJ1ZGdldAUBc25hcHNob3R0ZWQgZnJvbSB0aGUgZ2VuZXJhbCBwb3QsIGFuZCBgcmVtYWluZGVyYCBpcyBhbHdheXMgemVyby4hAUluIGxlZ2FjeSBtaW50aW5nIG1vZGUsIGJvdGggZmllbGRzIHJlZmxlY3QgdGhlIGBFcmFQYXlvdXRgIGNvbXB1dGF0aW9uLiBSZXdhcmRlZAwBFHN0YXNoBAEwVDo6QWNjb3VudElkAAEQZGVzdLkGAXxSZXdhcmREZXN0aW5hdGlvbjxUOjpBY2NvdW50SWQ+AAEYYW1vdW50VQEBMEJhbGFuY2VPZjxUPgABBA0BVGhlIG5vbWluYXRvciBoYXMgYmVlbiByZXdhcmRlZCBieSB0aGlzIGFtb3VudCB0byB0aGlzIGRlc3RpbmF0aW9uLhxTbGFzaGVkCAEYc3Rha2VyBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBMEJhbGFuY2VPZjxUPgACBB0BQSBzdGFrZXIgKHZhbGlkYXRvciBvciBub21pbmF0b3IpIGhhcyBiZWVuIHNsYXNoZWQgYnkgdGhlIGdpdmVuIGFtb3VudC5oT2xkU2xhc2hpbmdSZXBvcnREaXNjYXJkZWQEATRzZXNzaW9uX2luZGV4OAEwU2Vzc2lvbkluZGV4AAMIGQFBbiBvbGQgc2xhc2hpbmcgcmVwb3J0IGZyb20gYSBwcmlvciBlcmEgd2FzIGRpc2NhcmRlZCBiZWNhdXNlIGl0IGNvdWxkRG5vdCBiZSBwcm9jZXNzZWQuGEJvbmRlZAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBMEJhbGFuY2VPZjxUPgAEENBBbiBhY2NvdW50IGhhcyBib25kZWQgdGhpcyBhbW91bnQuIFxbc3Rhc2gsIGFtb3VudFxdAE0BTk9URTogVGhpcyBldmVudCBpcyBvbmx5IGVtaXR0ZWQgd2hlbiBmdW5kcyBhcmUgYm9uZGVkIHZpYSBhIGRpc3BhdGNoYWJsZS4gTm90YWJseSwhAWl0IHdpbGwgbm90IGJlIGVtaXR0ZWQgZm9yIHN0YWtpbmcgcmV3YXJkcyB3aGVuIHRoZXkgYXJlIGFkZGVkIHRvIHN0YWtlLiBVbmJvbmRlZAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBMEJhbGFuY2VPZjxUPgAFBJBBbiBhY2NvdW50IGhhcyB1bmJvbmRlZCB0aGlzIGFtb3VudC4kV2l0aGRyYXduCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEwQmFsYW5jZU9mPFQ+AAYIWQFBbiBhY2NvdW50IGhhcyBjYWxsZWQgYHdpdGhkcmF3X3VuYm9uZGVkYCBhbmQgcmVtb3ZlZCB1bmJvbmRpbmcgY2h1bmtzIHdvcnRoIGBCYWxhbmNlYGRmcm9tIHRoZSB1bmxvY2tpbmcgcXVldWUuNFN0YWtlclJlbW92ZWQEARRzdGFzaAQBMFQ6OkFjY291bnRJZAAHCFUBQSBzdWJzZXF1ZW50IGV2ZW50IG9mIGBXaXRoZHJhd25gLCBpbmRpY2F0aW5nIHRoYXQgYHN0YXNoYCB3YXMgZnVsbHkgcmVtb3ZlZCBmcm9tIHRoZRxzeXN0ZW0uGEtpY2tlZAgBJG5vbWluYXRvcgQBMFQ6OkFjY291bnRJZAABFHN0YXNoBAEwVDo6QWNjb3VudElkAAgEtEEgbm9taW5hdG9yIGhhcyBiZWVuIGtpY2tlZCBmcm9tIGEgdmFsaWRhdG9yLhxDaGlsbGVkBAEUc3Rhc2gEATBUOjpBY2NvdW50SWQACQQhAUFuIGFjY291bnQgaGFzIHN0b3BwZWQgcGFydGljaXBhdGluZyBhcyBlaXRoZXIgYSB2YWxpZGF0b3Igb3Igbm9taW5hdG9yLjRQYXlvdXRTdGFydGVkEAEkZXJhX2luZGV4OAEgRXJhSW5kZXgAATx2YWxpZGF0b3Jfc3Rhc2gEATBUOjpBY2NvdW50SWQAARBwYWdlOAEQUGFnZQABEG5leHTgATBPcHRpb248UGFnZT4ACgRZAUEgUGFnZSBvZiBzdGFrZXJzIHJld2FyZHMgYXJlIGdldHRpbmcgcGFpZC4gYG5leHRgIGlzIGBOb25lYCBpZiBhbGwgcGFnZXMgYXJlIGNsYWltZWQuRFZhbGlkYXRvclByZWZzU2V0CAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARRwcmVmc70GAThWYWxpZGF0b3JQcmVmcwALBJhBIHZhbGlkYXRvciBoYXMgc2V0IHRoZWlyIHByZWZlcmVuY2VzLmhTbmFwc2hvdFZvdGVyc1NpemVFeGNlZWRlZAQBEHNpemU4AQx1MzIADARoVm90ZXJzIHNpemUgbGltaXQgcmVhY2hlZC5sU25hcHNob3RUYXJnZXRzU2l6ZUV4Y2VlZGVkBAEQc2l6ZTgBDHUzMgANBGxUYXJnZXRzIHNpemUgbGltaXQgcmVhY2hlZC4gRm9yY2VFcmEEARBtb2RlYQkBHEZvcmNpbmcADgBkQ29udHJvbGxlckJhdGNoRGVwcmVjYXRlZAQBIGZhaWx1cmVzOAEMdTMyAA8EpFJlcG9ydCBvZiBhIGNvbnRyb2xsZXIgYmF0Y2ggZGVwcmVjYXRpb24uQEN1cnJlbmN5TWlncmF0ZWQIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABOGZvcmNlX3dpdGhkcmF3VQEBMEJhbGFuY2VPZjxUPgAQCFUBU3Rha2luZyBiYWxhbmNlIG1pZ3JhdGVkIGZyb20gbG9ja3MgdG8gaG9sZHMsIHdpdGggYW55IGJhbGFuY2UgdGhhdCBjb3VsZCBub3QgYmUgaGVsZExpcyBmb3JjZSB3aXRoZHJhd24uWFBhZ2VkRWxlY3Rpb25Qcm9jZWVkZWQIARBwYWdlOAEkUGFnZUluZGV4AAEYcmVzdWx0ZQkBQFJlc3VsdDx1MzIsIHUzMj4AESRBAUEgcGFnZSBmcm9tIGEgbXVsdGktcGFnZSBlbGVjdGlvbiB3YXMgZmV0Y2hlZC4gQSBudW1iZXIgb2YgdGhlc2UgYXJlIGZvbGxvd2VkIGJ5RGBTdGFrZXJzRWxlY3RlZGAuAPBgT2soY291bnQpYCBpbmRpY2F0ZXMgdGhlIGdpdmUgbnVtYmVyIG9mIHN0YXNoZXMgd2VyZSBhZGRlZC4FAWBFcnIoaW5kZXgpYCBpbmRpY2F0ZXMgdGhhdCB0aGUgc3Rhc2hlcyBhZnRlciBpbmRleCB3ZXJlIGRyb3BwZWQuQQFgRXJyKDApYCBpbmRpY2F0ZXMgdGhhdCBhbiBlcnJvciBoYXBwZW5lZCBidXQgbm8gc3Rhc2hlcyB3ZXJlIGRyb3BwZWQgbm9yIGFkZGVkLgBRAVRoZSBlcnJvciBpbmRpY2F0ZXMgdGhhdCBhIG51bWJlciBvZiB2YWxpZGF0b3JzIHdlcmUgZHJvcHBlZCBkdWUgdG8gZXhjZXNzIHNpemUsIGJ1dIx0aGUgb3ZlcmFsbCBlbGVjdGlvbiB3aWxsIGNvbnRpbnVlLjxPZmZlbmNlUmVwb3J0ZWQMASxvZmZlbmNlX2VyYTgBIEVyYUluZGV4AAEkdmFsaWRhdG9yBAEwVDo6QWNjb3VudElkAAEgZnJhY3Rpb24ZBQEcUGVyYmlsbAASCE0BQW4gb2ZmZW5jZSBmb3IgdGhlIGdpdmVuIHZhbGlkYXRvciwgZm9yIHRoZSBnaXZlbiBwZXJjZW50YWdlIG9mIHRoZWlyIHN0YWtlLCBhdCB0aGVsZ2l2ZW4gZXJhIGFzIGJlZW4gcmVwb3J0ZWQuNFNsYXNoQ29tcHV0ZWQQASxvZmZlbmNlX2VyYTgBIEVyYUluZGV4AAEkc2xhc2hfZXJhOAEgRXJhSW5kZXgAASBvZmZlbmRlcgQBMFQ6OkFjY291bnRJZAABEHBhZ2U4AQx1MzIAEwQxAUFuIG9mZmVuY2UgaGFzIGJlZW4gcHJvY2Vzc2VkIGFuZCB0aGUgY29ycmVzcG9uZGluZyBzbGFzaCBoYXMgYmVlbiBjb21wdXRlZC44U2xhc2hDYW5jZWxsZWQIASRzbGFzaF9lcmE4ASBFcmFJbmRleAABJHZhbGlkYXRvcgQBMFQ6OkFjY291bnRJZAAUBJhBbiB1bmFwcGxpZWQgc2xhc2ggaGFzIGJlZW4gY2FuY2VsbGVkLjhTZXNzaW9uUm90YXRlZAwBQHN0YXJ0aW5nX3Nlc3Npb244ATBTZXNzaW9uSW5kZXgAAShhY3RpdmVfZXJhOAEgRXJhSW5kZXgAASxwbGFubmVkX2VyYTgBIEVyYUluZGV4ABUQiFNlc3Npb24gY2hhbmdlIGhhcyBiZWVuIHRyaWdnZXJlZC4AWQFJZiBwbGFubmVkX2VyYSBpcyBvbmUgZXJhIGFoZWFkIG9mIGFjdGl2ZV9lcmEsIGl0IGltcGxpZXMgbmV3IGVyYSBpcyBiZWluZyBwbGFubmVkIGFuZFBlbGVjdGlvbiBpcyBvbmdvaW5nLihVbmV4cGVjdGVkBABpCQFEVW5leHBlY3RlZEtpbmQ8VD4AFggNAVNvbWV0aGluZyBvY2N1cnJlZCB0aGF0IHNob3VsZCBuZXZlciBoYXBwZW4gdW5kZXIgbm9ybWFsIG9wZXJhdGlvbi68TG9nZ2VkIGFzIGFuIGV2ZW50IGZvciBmYWlsLXNhZmUgb2JzZXJ2YWJpbGl0eS40T2ZmZW5jZVRvb09sZAwBLG9mZmVuY2VfZXJhOAEgRXJhSW5kZXgAASR2YWxpZGF0b3IEATBUOjpBY2NvdW50SWQAASBmcmFjdGlvbhkFARxQZXJiaWxsABcEPQFBbiBvZmZlbmNlIHdhcyByZXBvcnRlZCB0aGF0IHdhcyB0b28gb2xkIHRvIGJlIHByb2Nlc3NlZCwgYW5kIHRodXMgd2FzIGRyb3BwZWQuJEVyYVBydW5lZAQBFGluZGV4OAEgRXJhSW5kZXgAGASsQW4gb2xkIGVyYSB3aXRoIHRoZSBnaXZlbiBpbmRleCB3YXMgcHJ1bmVkLlhWYWxpZGF0b3JJbmNlbnRpdmVQYWlkEAEMZXJhOAEgRXJhSW5kZXgAATx2YWxpZGF0b3Jfc3Rhc2gEATBUOjpBY2NvdW50SWQAARBkZXN0uQYBfFJld2FyZERlc3RpbmF0aW9uPFQ6OkFjY291bnRJZD4AARhhbW91bnRVAQEwQmFsYW5jZU9mPFQ+ABkE9FRoZSB2YWxpZGF0b3IgaGFzIGJlZW4gcGFpZCB0aGVpciBzZWxmLXN0YWtlIGluY2VudGl2ZSBib251cy5sVmFsaWRhdG9ySW5jZW50aXZlQ29uZmlnU2V0DAFIb3B0aW11bV9zZWxmX3N0YWtlVQEBMEJhbGFuY2VPZjxUPgABTGhhcmRfY2FwX3NlbGZfc3Rha2VVAQEwQmFsYW5jZU9mPFQ+AAEwc2xvcGVfZmFjdG9yGQUBHFBlcmJpbGwAGgT4VmFsaWRhdG9yIHNlbGYtc3Rha2UgaW5jZW50aXZlIGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gdXBkYXRlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRhCQhQcGFsbGV0X3N0YWtpbmdfYXN5bmMcRm9yY2luZwABEChOb3RGb3JjaW5nAAAAIEZvcmNlTmV3AAEAJEZvcmNlTm9uZQACACxGb3JjZUFsd2F5cwADAABlCQQYUmVzdWx0CARUATgERQE4AQgIT2sEADgAAAAADEVycgQAOAAAAQAAaQkQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQ4VW5leHBlY3RlZEtpbmQEBFQAARhgRXJhRHVyYXRpb25Cb3VuZEV4Y2VlZGVkAAAAaFVua25vd25WYWxpZGF0b3JBY3RpdmF0aW9uAAEAYFBhZ2VkRWxlY3Rpb25PdXRPZldlaWdodAwBEHBhZ2U4ASRQYWdlSW5kZXgAASByZXF1aXJlZBEBARhXZWlnaHQAAQxoYWQRAQEYV2VpZ2h0AAIAME1pc3NpbmdQYXllZQgBDGVyYTgBIEVyYUluZGV4AAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAAwCAVmFsaWRhdG9ySW5jZW50aXZlV2VpZ2h0TWlzbWF0Y2gEAQxlcmE4ASBFcmFJbmRleAAEAIBWYWxpZGF0b3JJbmNlbnRpdmVUcmFuc2ZlckZhaWxlZAQBDGVyYTgBIEVyYUluZGV4AAUAAG0JDHxpbmRpdl9wYWxsZXRfbWVtYmVyc19zdWJzY3JpYmVyGHBhbGxldBRFdmVudAQEVAABGFBSaW5nUm9vdHNJbml0aWFsaXplZAgBFGNvdW50OAEMdTMyBIROdW1iZXIgb2YgcmluZyByb290cyBpbml0aWFsaXplZC4BIHNlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIEsFNlcXVlbmNlIG51bWJlciBvZiB0aGUgaW5pdGlhbGl6YXRpb24gYmF0Y2guAATMUmluZyByb290cyBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgZnJvbSB0aGUgbm90aWZpZXIuQFJpbmdSb290c1VwZGF0ZWQIARRjb3VudDgBDHUzMgRwTnVtYmVyIG9mIHVwZGF0ZXMgcHJvY2Vzc2VkLgEgc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgR0U2VxdWVuY2UgbnVtYmVyIG9mIHRoZSBiYXRjaC4BBJhSaW5nIHJvb3QgdXBkYXRlcyBoYXZlIGJlZW4gcHJvY2Vzc2VkLlhTdWJzY3JpcHRpb25UZXJtaW5hdGVkBAFEbm90aWZpZXJfbm90aWZpZWRZAQEQYm9vbATQV2hldGhlciB0aGUgdW5zdWJzY3JpYmUgWENNIHdhcyBzdWNjZXNzZnVsbHkgcXVldWVkLgIEhFN1YnNjcmlwdGlvbiBoYXMgYmVlbiB0ZXJtaW5hdGVkLlBNaXNzaW5nUmluZ3NEZXRlY3RlZAgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyBGxSaW5nIGNvbGxlY3Rpb24gaWRlbnRpZmllci4BFGNvdW50OAEMdTMyBLhOdW1iZXIgb2YgbmV3bHkgZGV0ZWN0ZWQgbWlzc2luZyByaW5nIGluZGljZXMuAwTgTmV3IG1pc3NpbmcgcmluZyByb290cyBkZXRlY3RlZCBkdXJpbmcgYmF0Y2ggcHJvY2Vzc2luZy5EUmVwbGF5UmVxdWVzdFNlbnQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgRsUmluZyBjb2xsZWN0aW9uIGlkZW50aWZpZXIuATRpbmRpY2VzX2NvdW50OAEMdTMyBKBOdW1iZXIgb2YgbWlzc2luZyBpbmRpY2VzIGluIHRoaXMgY2h1bmsuBAS0UmVwbGF5IHJlcXVlc3Qgc3VjY2Vzc2Z1bGx5IHNlbnQgdG8gbm90aWZpZXIuYERlbGV0ZWRJbmRpY2VzQXRDYXBhY2l0eQQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyBGxSaW5nIGNvbGxlY3Rpb24gaWRlbnRpZmllci4FBA0BTWlzc2luZyByaW5nIHNjYW4gc2tpcHBlZCBiZWNhdXNlIGRlbGV0ZWRfaW5kaWNlcyByZWFjaGVkIGNhcGFjaXR5LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldHEJDGxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHMYcGFsbGV0FEV2ZW50BARUAAEQPEFsaWFzQWNjb3VudFNldAwBHGFjY291bnQEATBUOjpBY2NvdW50SWQEcFRoZSBhY2NvdW50IHRoYXQgd2FzIGxpbmtlZC4BKGNvbGxlY3Rpb24IAShJZGVudGlmaWVyBGhUaGUgY29sbGVjdGlvbiBpZGVudGlmaWVyLgEUYWxpYXMIARRBbGlhcwRUVGhlIGNvbnRleHR1YWwgYWxpYXMuAASkQW4gYWxpYXMgYWNjb3VudCBoYXMgYmVlbiBzZXQgb3IgdXBkYXRlZC5EQWxpYXNBY2NvdW50VW5zZXQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkBHhUaGUgYWNjb3VudCB0aGF0IHdhcyB1bmxpbmtlZC4BBIhBbiBhbGlhcyBhY2NvdW50IGhhcyBiZWVuIHJlbW92ZWQuTFN0YWxlQWxpYXNDbGVhbmVkVXAMARxhY2NvdW50BAEwVDo6QWNjb3VudElkBHhUaGUgYWNjb3VudCB0aGF0IHdhcyB1bmxpbmtlZC4BKGNvbGxlY3Rpb24IAShJZGVudGlmaWVyBGhUaGUgY29sbGVjdGlvbiBpZGVudGlmaWVyLgEUYWxpYXMIARRBbGlhcwRUVGhlIGNvbnRleHR1YWwgYWxpYXMuAgSUQSBzdGFsZSBhbGlhcyBtYXBwaW5nIHdhcyBjbGVhbmVkIHVwLjxQYWlkQWxpYXNGZWVTZXQEAQxmZWVVAQEwQmFsYW5jZU9mPFQ+AAME2FRoZSBQR0FTIGZlZSBmb3IgcGFpZCBhbGlhcyByZWdpc3RyYXRpb25zIHdhcyBjaGFuZ2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldHUJDERpbmRpdl9wYWxsZXRfcGdhcxhwYWxsZXQURXZlbnQEBFQAAQwsUGdhc0NsYWltZWQUARRhbGlhcwgBFEFsaWFzAAEYdGFyZ2V0BAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBIQE8PFQgYXMgQ29uZmlnPjo6RnVuZ2libGVzIGFzIGZ1bmdpYmxlczo6SW5zcGVjdDxUOjpBY2NvdW50SWQ+Pjo6CkJhbGFuY2UAAShjb2xsZWN0aW9u/QMBOFBnYXNDb2xsZWN0aW9uAAEMZGF5OAEMdTMyAAAEdFBHQVMgd2FzIGNsYWltZWQgYnkgYSBwZXJzb24uQFBnYXNBc3NldENyZWF0ZWQAAQRsVGhlIFBHQVMgYXNzZXQgd2FzIGNyZWF0ZWQuXFBnYXNDbGFpbVJlY29yZHNDbGVhbmVkCAEkZGF5X2luZGV4OAEMdTMyAAEUY291bnQ4AQx1MzIAAgScT2xkIFBHQVMgY2xhaW0gcmVjb3JkcyB3ZXJlIGNsZWFuZWQgdXAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0eQkMNHBhbGxldF9yZXZpdmUYcGFsbGV0FEV2ZW50BARUAAEMPENvbnRyYWN0RW1pdHRlZAwBIGNvbnRyYWN0NQcBEEgxNjAEkFRoZSBjb250cmFjdCB0aGF0IGVtaXR0ZWQgdGhlIGV2ZW50LgEQZGF0YRgBHFZlYzx1OD4INQFEYXRhIHN1cHBsaWVkIGJ5IHRoZSBjb250cmFjdC4gTWV0YWRhdGEgZ2VuZXJhdGVkIGR1cmluZyBjb250cmFjdCBjb21waWxhdGlvblxpcyBuZWVkZWQgdG8gZGVjb2RlIGl0LgEYdG9waWNzwAEkVmVjPEgyNTY+CKRBIGxpc3Qgb2YgdG9waWNzIHVzZWQgdG8gaW5kZXggdGhlIGV2ZW50LuxOdW1iZXIgb2YgdG9waWNzIGlzIGNhcHBlZCBieSBbYGxpbWl0czo6TlVNX0VWRU5UX1RPUElDU2BdLgAEnEEgY3VzdG9tIGV2ZW50IGVtaXR0ZWQgYnkgdGhlIGNvbnRyYWN0LjBJbnN0YW50aWF0ZWQIASBkZXBsb3llcjUHARBIMTYwAAEgY29udHJhY3Q1BwEQSDE2MAABBNxDb250cmFjdCBkZXBsb3llZCBieSBkZXBsb3llciBhdCB0aGUgc3BlY2lmaWVkIGFkZHJlc3MuSEV0aEV4dHJpbnNpY1JldmVydAQBOGRpc3BhdGNoX2Vycm9y1QcBNERpc3BhdGNoRXJyb3IAAhi0RW1pdHRlZCB3aGVuIGFuIEV0aGVyZXVtIHRyYW5zYWN0aW9uIHJldmVydHMuACkBRXRoZXJldW0gdHJhbnNhY3Rpb25zIGFsd2F5cyBjb21wbGV0ZSBzdWNjZXNzZnVsbHkgYXQgdGhlIGV4dHJpbnNpYyBsZXZlbCzYYXMgZXZlbiByZXZlcnRlZCBjYWxscyBtdXN0IHN0b3JlIHRoZWlyIGBSZWNlaXB0SW5mb2AuJQFUbyBkaXN0aW5ndWlzaCByZXZlcnRlZCBjYWxscyBmcm9tIHN1Y2Nlc3NmdWwgb25lcywgdGhpcyBldmVudCBpcyBlbWl0dGVkhGZvciBmYWlsZWQgRXRoZXJldW0gdHJhbnNhY3Rpb25zLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldH0JDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRhwYWxsZXQURXZlbnQEBFQAARQwTmFtZVJlc2VydmVkFAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkBJhUaGUgY2FuZGlkYXRlIHdob3NlIG5hbWUgd2FzIHJlc2VydmVkLgEgYXR0ZXN0ZXIEATBUOjpBY2NvdW50SWQErFRoZSBhdHRlc3RlciB3aG8gcGVyZm9ybWVkIHRoZSByZXNlcnZhdGlvbi4BKGxpdGVfbGFiZWxJBwEkQmFzZUxhYmVsBLhUaGUgbGl0ZS1wZXJzb24gbGFiZWwgKGA8ZG5zLXN0ZW0+LjxkaWdpdHM+YCkuASBjaGF0X2tleU0HARxDaGF0S2V5BORUaGUgRUNESCBjaGF0IGtleSBzdG9yZWQgYWxvbmdzaWRlIHRoZSBsaXRlLXBlcnNvbiBsYWJlbC4BTHJlc2VydmVkX2Jhc2VfbGFiZWxRBwFET3B0aW9uPEJhc2VMYWJlbD4EBQFUaGUgb3B0aW9uYWwgYmFzZSBsYWJlbCByZXNlcnZlZCBmb3IgZnV0dXJlIGZ1bGwtcGVyc29uIGNsYWltaW5nLgAE8EEgdXNlcm5hbWUgaGFzIGJlZW4gcmVzZXJ2ZWQgZm9yIGEgY2FuZGlkYXRlIGJ5IGFuIGF0dGVzdGVyLjhOYW1lUmVnaXN0ZXJlZBABFGFsaWFzCAEUQWxpYXMEmFRoZSBhbGlhcyBkZXJpdmVkIGZyb20gdGhlIHJpbmcgcHJvb2YuARxhY2NvdW50BAEwVDo6QWNjb3VudElkBLBUaGUgYWNjb3VudCB0aGF0IGluaXRpYXRlZCB0aGUgcmVnaXN0cmF0aW9uLgEUbGFiZWxJBwEkQmFzZUxhYmVsBIRUaGUgcmVnaXN0ZXJlZCBmdWxsLXBlcnNvbiBsYWJlbC4BEGxpbmtVBwEQTGluawTkSG93IHRoZSBmdWxsLXBlcnNvbiBsYWJlbCByZWxhdGVzIHRvIGEgbGl0ZS1wZXJzb24gbGFiZWwuAQTQQSB1c2VybmFtZSBoYXMgYmVlbiByZWdpc3RlcmVkIGJ5IGEgdmVyaWZpZWQgcGVyc29uLnRBdHRlc3RhdGlvbkFsbG93YW5jZUluY3JlYXNlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQEVFRoZSBhdHRlc3RlciBhY2NvdW50LgEUY291bnQ4AQx1MzIEhFRoZSBudW1iZXIgb2YgYXR0ZXN0YXRpb25zIGFkZGVkLgIEzEF0dGVzdGF0aW9uIGFsbG93YW5jZSB3YXMgaW5jcmVhc2VkIGZvciBhbiBhY2NvdW50LnhBbGxBdHRlc3RhdGlvbkFsbG93YW5jZUNsZWFyZWQEASBhdHRlc3RlcgQBMFQ6OkFjY291bnRJZARUVGhlIGF0dGVzdGVyIGFjY291bnQuAwTwQWxsIGF0dGVzdGF0aW9uIGFsbG93YW5jZSBoYXMgYmVlbiByZW1vdmVkIGZvciB0aGUgYXR0ZXN0ZXIuXFBvcENvbnRyb2xsZXJBZGRyZXNzU2V0BAEcYWRkcmVzczUHARBIMTYwBGRUaGUgbmV3IGNvbnRyYWN0IGFkZHJlc3MuBATIVGhlIGBEb3Ruc1BvcENvbnRyb2xsZXJgIGNvbnRyYWN0IGFkZHJlc3Mgd2FzIHNldC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSBCQwscGFsbGV0X3N1ZG8YcGFsbGV0FEV2ZW50BARUAAEQFFN1ZGlkBAEsc3Vkb19yZXN1bHT5BwE4RGlzcGF0Y2hSZXN1bHQEtFRoZSByZXN1bHQgb2YgdGhlIGNhbGwgbWFkZSBieSB0aGUgc3VkbyB1c2VyLgAEcEEgc3VkbyBjYWxsIGp1c3QgdG9vayBwbGFjZS4oS2V5Q2hhbmdlZAgBDG9sZI0BAVBPcHRpb248VDo6QWNjb3VudElkPgS0VGhlIG9sZCBzdWRvIGtleSAoaWYgb25lIHdhcyBwcmV2aW91c2x5IHNldCkuAQxuZXcEATBUOjpBY2NvdW50SWQEiFRoZSBuZXcgc3VkbyBrZXkgKGlmIG9uZSB3YXMgc2V0KS4BBHhUaGUgc3VkbyBrZXkgaGFzIGJlZW4gdXBkYXRlZC4oS2V5UmVtb3ZlZAACBIBUaGUga2V5IHdhcyBwZXJtYW5lbnRseSByZW1vdmVkLihTdWRvQXNEb25lBAEsc3Vkb19yZXN1bHT5BwE4RGlzcGF0Y2hSZXN1bHQEtFRoZSByZXN1bHQgb2YgdGhlIGNhbGwgbWFkZSBieSB0aGUgc3VkbyB1c2VyLgMEyEEgW3N1ZG9fYXNdKFBhbGxldDo6c3Vkb19hcykgY2FsbCBqdXN0IHRvb2sgcGxhY2UuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0hQkMVHBhbGxldF9wZ2FzX2FsbG93YW5jZRhwYWxsZXQURXZlbnQEBFQAAQQsUEdBU0ZlZVBhaWQIAQx3aG8EATBUOjpBY2NvdW50SWQAAShhY3R1YWxfZmVlVQEBMEJhbGFuY2VPZjxUPgAACEUBQSB0cmFuc2FjdGlvbiBmZWUgYGFjdHVhbF9mZWVgIGhhcyBiZWVuIHBhaWQgYnkgYHdob2AgaW4gUEdBUyBhbmQgYnVybmVkLiBNaXJyb3Jz6FtgcGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQ6OkV2ZW50OjpUcmFuc2FjdGlvbkZlZVBhaWRgXS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSJCQgwZnJhbWVfc3lzdGVtFFBoYXNlAAEMOEFwcGx5RXh0cmluc2ljBAA4AQx1MzIAAAAwRmluYWxpemF0aW9uAAEAOEluaXRpYWxpemF0aW9uAAIAAI0JAAACzACRCQgwZnJhbWVfc3lzdGVtWExhc3RSdW50aW1lVXBncmFkZUluZm8AAAgBMHNwZWNfdmVyc2lvbmABTGNvZGVjOjpDb21wYWN0PHUzMj4AASRzcGVjX25hbWWVCQFEQ293PCdzdGF0aWMsIHN0cj4AAJUJBAxDb3cEBFQBmQkABACZCQAAAJkJAAAFAgCdCQgwZnJhbWVfc3lzdGVtYENvZGVVcGdyYWRlQXV0aG9yaXphdGlvbgQEVAAACAEkY29kZV9oYXNoPAEcVDo6SGFzaAABNGNoZWNrX3ZlcnNpb25ZAQEQYm9vbAAAoQkMMGZyYW1lX3N5c3RlbRhsaW1pdHMwQmxvY2tXZWlnaHRzAAAMAShiYXNlX2Jsb2NrEQEBGFdlaWdodAABJG1heF9ibG9jaxEBARhXZWlnaHQAASRwZXJfY2xhc3OlCQGEUGVyRGlzcGF0Y2hDbGFzczxXZWlnaHRzUGVyQ2xhc3M+AAClCQw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUAakJAAwBGG5vcm1hbKkJAQRUAAEsb3BlcmF0aW9uYWypCQEEVAABJG1hbmRhdG9yeakJAQRUAACpCQwwZnJhbWVfc3lzdGVtGGxpbWl0czxXZWlnaHRzUGVyQ2xhc3MAABABOGJhc2VfZXh0cmluc2ljEQEBGFdlaWdodAABNG1heF9leHRyaW5zaWMNAQE4T3B0aW9uPFdlaWdodD4AASRtYXhfdG90YWwNAQE4T3B0aW9uPFdlaWdodD4AASByZXNlcnZlZA0BAThPcHRpb248V2VpZ2h0PgAArQkMMGZyYW1lX3N5c3RlbRhsaW1pdHMsQmxvY2tMZW5ndGgAAAgBDG1heLEJAVRQZXJEaXNwYXRjaENsYXNzPHUzMj4AATxtYXhfaGVhZGVyX3NpemXgASxPcHRpb248dTMyPgAAsQkMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAE4AAwBGG5vcm1hbDgBBFQAASxvcGVyYXRpb25hbDgBBFQAASRtYW5kYXRvcnk4AQRUAAC1CQgoc3Bfd2VpZ2h0czxSdW50aW1lRGJXZWlnaHQAAAgBEHJlYWQoAQx1NjQAARR3cml0ZSgBDHU2NAAAuQkIKHNwX3ZlcnNpb244UnVudGltZVZlcnNpb24AACABJHNwZWNfbmFtZZUJAURDb3c8J3N0YXRpYywgc3RyPgABJGltcGxfbmFtZZUJAURDb3c8J3N0YXRpYywgc3RyPgABRGF1dGhvcmluZ192ZXJzaW9uOAEMdTMyAAEwc3BlY192ZXJzaW9uOAEMdTMyAAEwaW1wbF92ZXJzaW9uOAEMdTMyAAEQYXBpc70JARxBcGlzVmVjAAFMdHJhbnNhY3Rpb25fdmVyc2lvbjgBDHUzMgABOHN5c3RlbV92ZXJzaW9uDAEIdTgAAL0JBAxDb3cEBFQBwQkABADBCQAAAMEJAAACxQkAxQkAAAQIWQI4AMkJDDBmcmFtZV9zeXN0ZW0YcGFsbGV0FEVycm9yBARUAAEkPEludmFsaWRTcGVjTmFtZQAACBEBVGhlIG5hbWUgb2Ygc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBtYXRjaCBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS5oU3BlY1ZlcnNpb25OZWVkc1RvSW5jcmVhc2UAAQhBAVRoZSBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaXMgbm90IGFsbG93ZWQgdG8gZGVjcmVhc2UgYmV0d2VlbiB0aGUgY3VycmVudCBydW50aW1lUGFuZCB0aGUgbmV3IHJ1bnRpbWUudEZhaWxlZFRvRXh0cmFjdFJ1bnRpbWVWZXJzaW9uAAIM7EZhaWxlZCB0byBleHRyYWN0IHRoZSBydW50aW1lIHZlcnNpb24gZnJvbSB0aGUgbmV3IHJ1bnRpbWUuAAkBRWl0aGVyIGNhbGxpbmcgYENvcmVfdmVyc2lvbmAgb3IgZGVjb2RpbmcgYFJ1bnRpbWVWZXJzaW9uYCBmYWlsZWQuTE5vbkRlZmF1bHRDb21wb3NpdGUAAwT8U3VpY2lkZSBjYWxsZWQgd2hlbiB0aGUgYWNjb3VudCBoYXMgbm9uLWRlZmF1bHQgY29tcG9zaXRlIGRhdGEuPE5vblplcm9SZWZDb3VudAAEBDUBVGhlcmUgaXMgYSBub24temVybyByZWZlcmVuY2UgY291bnQgcHJldmVudGluZyB0aGUgYWNjb3VudCBmcm9tIGJlaW5nIHB1cmdlZC4wQ2FsbEZpbHRlcmVkAAUE0FRoZSBvcmlnaW4gZmlsdGVyIHByZXZlbnQgdGhlIGNhbGwgdG8gYmUgZGlzcGF0Y2hlZC5sTXVsdGlCbG9ja01pZ3JhdGlvbnNPbmdvaW5nAAYEVQFBIG11bHRpLWJsb2NrIG1pZ3JhdGlvbiBpcyBvbmdvaW5nIGFuZCBwcmV2ZW50cyB0aGUgY3VycmVudCBjb2RlIGZyb20gYmVpbmcgcmVwbGFjZWQuRE5vdGhpbmdBdXRob3JpemVkAAcEWE5vIHVwZ3JhZGUgYXV0aG9yaXplZC4wVW5hdXRob3JpemVkAAgElFRoZSBzdWJtaXR0ZWQgY29kZSBpcyBub3QgYXV0aG9yaXplZC4EbEVycm9yIGZvciB0aGUgU3lzdGVtIHBhbGxldM0JEChzcF9ydW50aW1lHGdlbmVyaWMUYmxvY2sUQmxvY2sIGEhlYWRlcgFcJEV4dHJpbnNpYwHRCQAIARhoZWFkZXJcARhIZWFkZXIAAShleHRyaW5zaWNz4QkBOFZlYzxFeHRyaW5zaWM+AADRCRAoc3BfcnVudGltZRxnZW5lcmljTHVuY2hlY2tlZF9leHRyaW5zaWNIVW5jaGVja2VkRXh0cmluc2ljEBxBZGRyZXNzAQAQQ2FsbAEgJFNpZ25hdHVyZQGdBBRFeHRyYQHVCQAEABgAAADVCQh0Y3VtdWx1c19wYWxsZXRfd2VpZ2h0X3JlY2xhaW1QU3RvcmFnZVdlaWdodFJlY2xhaW0IBFQABFMB2QkABADZCQEEUwAA2QkAAAQs3Ql5B30HgQeFB4kHkQeVB5kHnQelBwDdCQAABAxdB2EHbQcA4QkAAALRCQDlCQx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbTBibG9ja193ZWlnaHQ8QmxvY2tXZWlnaHRNb2RlBARUAAEMIEZ1bGxDb3JlBAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAAARFBvdGVudGlhbEZ1bGxDb3JlDAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAFcZmlyc3RfdHJhbnNhY3Rpb25faW5kZXjgASxPcHRpb248dTMyPgABNHRhcmdldF93ZWlnaHQRAQEYV2VpZ2h0AAEAOEZyYWN0aW9uT2ZDb3JlCAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAFcZmlyc3RfdHJhbnNhY3Rpb25faW5kZXjgASxPcHRpb248dTMyPgACAADpCQAAAu0JAO0JDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudCBBbmNlc3RvcgQESAE8AAwBOHVzZWRfYmFuZHdpZHRo8QkBNFVzZWRCYW5kd2lkdGgAAThwYXJhX2hlYWRfaGFzaPUEASRPcHRpb248SD4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWwFCgGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AAPEJDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudDRVc2VkQmFuZHdpZHRoAAAMATR1bXBfbXNnX2NvdW50OAEMdTMyAAE8dW1wX3RvdGFsX2J5dGVzOAEMdTMyAAE0aHJtcF9vdXRnb2luZ/UJAYxCVHJlZU1hcDxQYXJhSWQsIEhybXBDaGFubmVsVXBkYXRlPgAA9QkEIEJUcmVlTWFwCARLAZwEVgH5CQAEAP0JAAAA+QkMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50REhybXBDaGFubmVsVXBkYXRlAAAIASRtc2dfY291bnQ4AQx1MzIAASx0b3RhbF9ieXRlczgBDHUzMgAA/QkAAAIBCgABCgAABAic+QkABQoEGE9wdGlvbgQEVAEJCgEIEE5vbmUAAAAQU29tZQQACQoAAAEAAAkKDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5OFVwZ3JhZGVHb0FoZWFkAAEIFEFib3J0AAAAHEdvQWhlYWQAAQAADQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50OFNlZ21lbnRUcmFja2VyBARIATwADAE4dXNlZF9iYW5kd2lkdGjxCQE0VXNlZEJhbmR3aWR0aAABOGhybXBfd2F0ZXJtYXJr4AGAT3B0aW9uPHJlbGF5X2NoYWluOjpCbG9ja051bWJlcj4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWwFCgGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AABEKBBhPcHRpb24EBFQBFQoBCBBOb25lAAAAEFNvbWUEABUKAAABAAAVCgxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUhVcGdyYWRlUmVzdHJpY3Rpb24AAQQcUHJlc2VudAAAAAAZCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdFhNZXNzYWdpbmdTdGF0ZVNuYXBzaG90AAAQATBkbXFfbXFjX2hlYWQ8AURyZWxheV9jaGFpbjo6SGFzaAABnHJlbGF5X2Rpc3BhdGNoX3F1ZXVlX3JlbWFpbmluZ19jYXBhY2l0eR0KAYxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQABQGluZ3Jlc3NfY2hhbm5lbHMhCgGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgABPGVncmVzc19jaGFubmVscyEKAYhWZWM8KFBhcmFJZCwgQWJyaWRnZWRIcm1wQ2hhbm5lbCk+AAAdCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdIxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQAACAE8cmVtYWluaW5nX2NvdW50OAEMdTMyAAE4cmVtYWluaW5nX3NpemU4AQx1MzIAACEKAAACJQoAJQoAAAQInCkKACkKDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5TEFicmlkZ2VkSHJtcENoYW5uZWwAABgBMG1heF9jYXBhY2l0eTgBDHUzMgABOG1heF90b3RhbF9zaXplOAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZTgBDHUzMgABJG1zZ19jb3VudDgBDHUzMgABKHRvdGFsX3NpemU4AQx1MzIAASBtcWNfaGVhZPUEATBPcHRpb248SGFzaD4AAC0KDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5ZEFicmlkZ2VkSG9zdENvbmZpZ3VyYXRpb24AACgBNG1heF9jb2RlX3NpemU4AQx1MzIAAUhtYXhfaGVhZF9kYXRhX3NpemU4AQx1MzIAAVhtYXhfdXB3YXJkX3F1ZXVlX2NvdW50OAEMdTMyAAFUbWF4X3Vwd2FyZF9xdWV1ZV9zaXplOAEMdTMyAAFcbWF4X3Vwd2FyZF9tZXNzYWdlX3NpemU4AQx1MzIAAZBtYXhfdXB3YXJkX21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGU4AQx1MzIAAYhocm1wX21heF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAFsdmFsaWRhdGlvbl91cGdyYWRlX2Nvb2xkb3duOAEsQmxvY2tOdW1iZXIAAWB2YWxpZGF0aW9uX3VwZ3JhZGVfZGVsYXk4ASxCbG9ja051bWJlcgABUGFzeW5jX2JhY2tpbmdfcGFyYW1zMQoBSEFzeW5jQmFja2luZ1BhcmFtcwAAMQoQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk0YXN5bmNfYmFja2luZ0hBc3luY0JhY2tpbmdQYXJhbXMAAAgBTG1heF9jYW5kaWRhdGVfZGVwdGg4AQx1MzIAAVBhbGxvd2VkX2FuY2VzdHJ5X2xlbjgBDHUzMgAANQoIlGN1bXVsdXNfcHJpbWl0aXZlc19wYXJhY2hhaW5faW5oZXJlbnRETWVzc2FnZVF1ZXVlQ2hhaW4AAAQAPAEkUmVsYXlIYXNoAAA5CgQgQlRyZWVNYXAIBEsBnARWATUKAAQAPQoAAAA9CgAAAkEKAEEKAAAECJw1CgBFCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRASW5ib3VuZE1lc3NhZ2VJZAAACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEscmV2ZXJzZV9pZHg4AQx1MzIAAEkKAAACTQoATQoIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0xPdXRib3VuZEhybXBNZXNzYWdlBAhJZAGcAAgBJHJlY2lwaWVudJwBCElkAAEQZGF0YRgBTGFsbG9jOjp2ZWM6OlZlYzx1OD4AAFEKCHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtLFBvVk1lc3NhZ2VzAAAYAWhyZWxheV9zdG9yYWdlX3Jvb3Rfb3JfaGFzaDwBRHJlbGF5X2NoYWluOjpIYXNoAAE0Y29yZV9zZWxlY3RvcgwBCHU4AAEwYnVuZGxlX2luZGV4DAEIdTgAATR1bXBfbXNnX2NvdW50OAEMdTMyAAFMaHJtcF9vdXRib3VuZF9jb3VudDgBDHUzMgABYGhybXBfb3V0Ym91bmRfcmVjaXBpZW50c1UKASxWZWM8UGFyYUlkPgAAVQoAAAKcAFkKDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFcnJvcgQEVAABGExPdmVybGFwcGluZ1VwZ3JhZGVzAAAEGQFBdHRlbXB0IHRvIHVwZ3JhZGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3aGlsZSBleGlzdGluZyB1cGdyYWRlIHBlbmRpbmcuUFByb2hpYml0ZWRCeVBvbGthZG90AAEETQFQb2xrYWRvdCBjdXJyZW50bHkgcHJvaGliaXRzIHRoaXMgcGFyYWNoYWluIGZyb20gdXBncmFkaW5nIGl0cyB2YWxpZGF0aW9uIGZ1bmN0aW9uLhhUb29CaWcAAghFAVRoZSBzdXBwbGllZCB2YWxpZGF0aW9uIGZ1bmN0aW9uIGhhcyBjb21waWxlZCBpbnRvIGEgYmxvYiBsYXJnZXIgdGhhbiBQb2xrYWRvdCBpczx3aWxsaW5nIHRvIHJ1bi5oVmFsaWRhdGlvbkRhdGFOb3RBdmFpbGFibGUAAwQdAVRoZSBpbmhlcmVudCB3aGljaCBzdXBwbGllcyB0aGUgdmFsaWRhdGlvbiBkYXRhIGRpZCBub3QgcnVuIHRoaXMgYmxvY2sudEhvc3RDb25maWd1cmF0aW9uTm90QXZhaWxhYmxlAAQEKQFUaGUgaW5oZXJlbnQgd2hpY2ggc3VwcGxpZXMgdGhlIGhvc3QgY29uZmlndXJhdGlvbiBkaWQgbm90IHJ1biB0aGlzIGJsb2NrLjBOb3RTY2hlZHVsZWQABQTYTm8gdmFsaWRhdGlvbiBmdW5jdGlvbiB1cGdyYWRlIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Ll0KCDxwYWxsZXRfcHJlaW1hZ2VAT2xkUmVxdWVzdFN0YXR1cwgkQWNjb3VudElkAQQcQmFsYW5jZQFVAQEILFVucmVxdWVzdGVkCAEcZGVwb3NpdMEFAVAoQWNjb3VudElkLCBCYWxhbmNlKQABDGxlbjgBDHUzMgAAACRSZXF1ZXN0ZWQMARxkZXBvc2l0YQoBcE9wdGlvbjwoQWNjb3VudElkLCBCYWxhbmNlKT4AARRjb3VudDgBDHUzMgABDGxlbuABLE9wdGlvbjx1MzI+AAEAAGEKBBhPcHRpb24EBFQBwQUBCBBOb25lAAAAEFNvbWUEAMEFAAABAABlCgg8cGFsbGV0X3ByZWltYWdlNFJlcXVlc3RTdGF0dXMIJEFjY291bnRJZAEEGFRpY2tldAFpCgEILFVucmVxdWVzdGVkCAEYdGlja2V0bQoBTChBY2NvdW50SWQsIFRpY2tldCkAAQxsZW44AQx1MzIAAAAkUmVxdWVzdGVkDAEwbWF5YmVfdGlja2V0cQoBbE9wdGlvbjwoQWNjb3VudElkLCBUaWNrZXQpPgABFGNvdW50OAEMdTMyAAEkbWF5YmVfbGVu4AEsT3B0aW9uPHUzMj4AAQAAaQoUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQAVQEBKEY6OkJhbGFuY2UAAG0KAAAECARpCgBxCgQYT3B0aW9uBARUAW0KAQgQTm9uZQAAABBTb21lBABtCgAAAQAAdQoAAAQIPDgAeQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAB9Cgw8cGFsbGV0X3ByZWltYWdlGHBhbGxldBRFcnJvcgQEVAABIBhUb29CaWcAAASgUHJlaW1hZ2UgaXMgdG9vIGxhcmdlIHRvIHN0b3JlIG9uLWNoYWluLjBBbHJlYWR5Tm90ZWQAAQSkUHJlaW1hZ2UgaGFzIGFscmVhZHkgYmVlbiBub3RlZCBvbi1jaGFpbi40Tm90QXV0aG9yaXplZAACBMhUaGUgdXNlciBpcyBub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgYWN0aW9uLiBOb3ROb3RlZAADBPxUaGUgcHJlaW1hZ2UgY2Fubm90IGJlIHJlbW92ZWQgc2luY2UgaXQgaGFzIG5vdCB5ZXQgYmVlbiBub3RlZC4kUmVxdWVzdGVkAAQECQFBIHByZWltYWdlIG1heSBub3QgYmUgcmVtb3ZlZCB3aGVuIHRoZXJlIGFyZSBvdXRzdGFuZGluZyByZXF1ZXN0cy4wTm90UmVxdWVzdGVkAAUELQFUaGUgcHJlaW1hZ2UgcmVxdWVzdCBjYW5ub3QgYmUgcmVtb3ZlZCBzaW5jZSBubyBvdXRzdGFuZGluZyByZXF1ZXN0cyBleGlzdC4cVG9vTWFueQAGBFUBTW9yZSB0aGFuIGBNQVhfSEFTSF9VUEdSQURFX0JVTEtfQ09VTlRgIGhhc2hlcyB3ZXJlIHJlcXVlc3RlZCB0byBiZSB1cGdyYWRlZCBhdCBvbmNlLhhUb29GZXcABwTkVG9vIGZldyBoYXNoZXMgd2VyZSByZXF1ZXN0ZWQgdG8gYmUgdXBncmFkZWQgKGkuZS4gemVybykuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LoEKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBhQoEUwAABACNCgEYVmVjPFQ+AACFCgQYT3B0aW9uBARUAYkKAQgQTm9uZQAAABBTb21lBACJCgAAAQAAiQoIQHBhbGxldF9zY2hlZHVsZXIkU2NoZWR1bGVkFBBOYW1lAQgQQ2FsbAHpBCxCbG9ja051bWJlcgE4NFBhbGxldHNPcmlnaW4B1QMkQWNjb3VudElkAQQAFAEgbWF5YmVfaWQ5BwEwT3B0aW9uPE5hbWU+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxs6QQBEENhbGwAAThtYXliZV9wZXJpb2RpY8gBlE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyPj4AARhvcmlnaW7VAwE0UGFsbGV0c09yaWdpbgAAjQoAAAKFCgCRCghAcGFsbGV0X3NjaGVkdWxlcixSZXRyeUNvbmZpZwQYUGVyaW9kATgADAE0dG90YWxfcmV0cmllcwwBCHU4AAEkcmVtYWluaW5nDAEIdTgAARhwZXJpb2Q4ARhQZXJpb2QAAJUKDEBwYWxsZXRfc2NoZWR1bGVyGHBhbGxldBRFcnJvcgQEVAABFEBGYWlsZWRUb1NjaGVkdWxlAAAEZEZhaWxlZCB0byBzY2hlZHVsZSBhIGNhbGwgTm90Rm91bmQAAQR8Q2Fubm90IGZpbmQgdGhlIHNjaGVkdWxlZCBjYWxsLlxUYXJnZXRCbG9ja051bWJlckluUGFzdAACBKRHaXZlbiB0YXJnZXQgYmxvY2sgbnVtYmVyIGlzIGluIHRoZSBwYXN0LkhSZXNjaGVkdWxlTm9DaGFuZ2UAAwTwUmVzY2hlZHVsZSBmYWlsZWQgYmVjYXVzZSBpdCBkb2VzIG5vdCBjaGFuZ2Ugc2NoZWR1bGVkIHRpbWUuFE5hbWVkAAQE0EF0dGVtcHQgdG8gdXNlIGEgbm9uLW5hbWVkIGZ1bmN0aW9uIG9uIGEgbmFtZWQgdGFzay4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQumQoMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFcnJvcgQEVAABBBxPbmdvaW5nAAAE6FRoZSBvcGVyYXRpb24gY2Fubm90IGNvbXBsZXRlIHNpbmNlIHNvbWUgTUJNcyBhcmUgb25nb2luZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQunQoIRHBhbGxldF9taWdyYXRpb25zME1ibUlzT25nb2luZwABDAxZZXMAAAAITm8AAQAUU3R1Y2sAAgAAoQoEGE9wdGlvbgQEVAGlCgEIEE5vbmUAAAAQU29tZQQApQoAAAEAAKUKCERwYWxsZXRfbWlncmF0aW9ucyxNYm1Qcm9ncmVzcwAAEAFEY3VycmVudF9taWdyYXRpb244AQx1MzIAAUB0b3RhbF9taWdyYXRpb25zOAEMdTMyAAFcY3VycmVudF9taWdyYXRpb25fc3RlcHM4AQx1MzIAAWxjdXJyZW50X21pZ3JhdGlvbl9tYXhfc3RlcHPgASxPcHRpb248dTMyPgAAqQoIRHBhbGxldF9taWdyYXRpb25zJE1ibVN0YXR1cwAADAEcb25nb2luZ50KATBNYm1Jc09uZ29pbmcAASBwcm9ncmVzc6EKAUxPcHRpb248TWJtUHJvZ3Jlc3M+AAEgcHJlZml4ZXM0ATBWZWM8VmVjPHU4Pj4AAK0KDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBsQoEUwAABAC5CgEYVmVjPFQ+AACxCgw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLEJhbGFuY2VMb2NrBBxCYWxhbmNlAVUBAAwBCGlkWQIBOExvY2tJZGVudGlmaWVyAAEYYW1vdW50VQEBHEJhbGFuY2UAARxyZWFzb25ztQoBHFJlYXNvbnMAALUKDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMcUmVhc29ucwABDAxGZWUAAAAQTWlzYwABAAxBbGwAAgAAuQoAAAKxCgC9CgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAcEKBFMAAAQAxQoBGFZlYzxUPgAAwQoMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxSZXNlcnZlRGF0YQhEUmVzZXJ2ZUlkZW50aWZpZXIBWQIcQmFsYW5jZQFVAQAIAQhpZFkCAURSZXNlcnZlSWRlbnRpZmllcgABGGFtb3VudFUBARxCYWxhbmNlAADFCgAAAsEKAMkKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBzQoEUwAABADRCgEYVmVjPFQ+AADNChQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2MgSWRBbW91bnQICElkATEIHEJhbGFuY2UBVQEACAEIaWQxCAEISWQAARhhbW91bnRVAQEcQmFsYW5jZQAA0QoAAALNCgDVCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAdkKBFMAAAQA6QoBGFZlYzxUPgAA2QoUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjIElkQW1vdW50CAhJZAHdChxCYWxhbmNlAVUBAAgBCGlk3QoBCElkAAEYYW1vdW50VQEBHEJhbGFuY2UAAN0KCHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lTFJ1bnRpbWVGcmVlemVSZWFzb24AAQg8Tm9taW5hdGlvblBvb2xzBADhCgGUcGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkZyZWV6ZVJlYXNvbgBQABhSZXZpdmUEAOUKAWxwYWxsZXRfcmV2aXZlOjpGcmVlemVSZWFzb24AZAAA4QoMXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldDBGcmVlemVSZWFzb24AAQQ4UG9vbE1pbkJhbGFuY2UAAAAA5QoMNHBhbGxldF9yZXZpdmUYcGFsbGV0MEZyZWV6ZVJlYXNvbgABBDhQR2FzTWluQmFsYW5jZQAAAADpCgAAAtkKAO0KDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0FEVycm9yCARUAARJAAEwOFZlc3RpbmdCYWxhbmNlAAAEnFZlc3RpbmcgYmFsYW5jZSB0b28gaGlnaCB0byBzZW5kIHZhbHVlLlRMaXF1aWRpdHlSZXN0cmljdGlvbnMAAQTIQWNjb3VudCBsaXF1aWRpdHkgcmVzdHJpY3Rpb25zIHByZXZlbnQgd2l0aGRyYXdhbC5MSW5zdWZmaWNpZW50QmFsYW5jZQACBHhCYWxhbmNlIHRvbyBsb3cgdG8gc2VuZCB2YWx1ZS5IRXhpc3RlbnRpYWxEZXBvc2l0AAME7FZhbHVlIHRvbyBsb3cgdG8gY3JlYXRlIGFjY291bnQgZHVlIHRvIGV4aXN0ZW50aWFsIGRlcG9zaXQuNEV4cGVuZGFiaWxpdHkABASQVHJhbnNmZXIvcGF5bWVudCB3b3VsZCBraWxsIGFjY291bnQuXEV4aXN0aW5nVmVzdGluZ1NjaGVkdWxlAAUEzEEgdmVzdGluZyBzY2hlZHVsZSBhbHJlYWR5IGV4aXN0cyBmb3IgdGhpcyBhY2NvdW50LixEZWFkQWNjb3VudAAGBIxCZW5lZmljaWFyeSBhY2NvdW50IG11c3QgcHJlLWV4aXN0LjxUb29NYW55UmVzZXJ2ZXMABwS4TnVtYmVyIG9mIG5hbWVkIHJlc2VydmVzIGV4Y2VlZCBgTWF4UmVzZXJ2ZXNgLjBUb29NYW55SG9sZHMACAT4TnVtYmVyIG9mIGhvbGRzIGV4Y2VlZCBgVmFyaWFudENvdW50T2Y8VDo6UnVudGltZUhvbGRSZWFzb24+YC44VG9vTWFueUZyZWV6ZXMACQSYTnVtYmVyIG9mIGZyZWV6ZXMgZXhjZWVkIGBNYXhGcmVlemVzYC5MSXNzdWFuY2VEZWFjdGl2YXRlZAAKBAEBVGhlIGlzc3VhbmNlIGNhbm5vdCBiZSBtb2RpZmllZCBzaW5jZSBpdCBpcyBhbHJlYWR5IGRlYWN0aXZhdGVkLiREZWx0YVplcm8ACwRkVGhlIGRlbHRhIGNhbm5vdCBiZSB6ZXJvLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7xCghocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQgUmVsZWFzZXMAAQgkVjFBbmNpZW50AAAACFYyAAEAAPUKEDRmcmFtZV9zdXBwb3J0GHRyYWl0cxxzdG9yYWdlGE5vRHJvcAQEVAH5CgAEAPkKAQRUAAD5Chg0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlJGltYmFsYW5jZSRJbWJhbGFuY2UMBEIBVQEYT25Ecm9wADhPcHBvc2l0ZU9uRHJvcAAABAEYYW1vdW50VQEBBEIAAP0KDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBaQEEUwAABAABCwEYVmVjPFQ+AAABCwAAAmkBAAULCDhwYWxsZXRfdmVzdGluZyBSZWxlYXNlcwABCAhWMAAAAAhWMQABAAAJCww4cGFsbGV0X3Zlc3RpbmcYcGFsbGV0FEVycm9yBARUAAEUKE5vdFZlc3RpbmcAAASEVGhlIGFjY291bnQgZ2l2ZW4gaXMgbm90IHZlc3RpbmcuVEF0TWF4VmVzdGluZ1NjaGVkdWxlcwABCCUBVGhlIGFjY291bnQgYWxyZWFkeSBoYXMgYE1heFZlc3RpbmdTY2hlZHVsZXNgIGNvdW50IG9mIHNjaGVkdWxlcyBhbmQgdGh1c1EBY2Fubm90IGFkZCBhbm90aGVyIG9uZS4gQ29uc2lkZXIgbWVyZ2luZyBleGlzdGluZyBzY2hlZHVsZXMgaW4gb3JkZXIgdG8gYWRkIGFub3RoZXIuJEFtb3VudExvdwACBAUBQW1vdW50IGJlaW5nIHRyYW5zZmVycmVkIGlzIHRvbyBsb3cgdG8gY3JlYXRlIGEgdmVzdGluZyBzY2hlZHVsZS5gU2NoZWR1bGVJbmRleE91dE9mQm91bmRzAAME0EFuIGluZGV4IHdhcyBvdXQgb2YgYm91bmRzIG9mIHRoZSB2ZXN0aW5nIHNjaGVkdWxlcy5USW52YWxpZFNjaGVkdWxlUGFyYW1zAAQEDQFGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHNjaGVkdWxlIGJlY2F1c2Ugc29tZSBwYXJhbWV0ZXIgd2FzIGludmFsaWQuBHRFcnJvciBmb3IgdGhlIHZlc3RpbmcgcGFsbGV0Lg0LEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXMYcGFsbGV0FEVycm9yBARUAAEYYEludmFsaWRFdGhlcmV1bVNpZ25hdHVyZQAABGxJbnZhbGlkIEV0aGVyZXVtIHNpZ25hdHVyZS5AU2lnbmVySGFzTm9DbGFpbQABBHhFdGhlcmV1bSBhZGRyZXNzIGhhcyBubyBjbGFpbS5AU2VuZGVySGFzTm9DbGFpbQACBLBBY2NvdW50IElEIHNlbmRpbmcgdHJhbnNhY3Rpb24gaGFzIG5vIGNsYWltLjBQb3RVbmRlcmZsb3cAAwhJAVRoZXJlJ3Mgbm90IGVub3VnaCBpbiB0aGUgcG90IHRvIHBheSBvdXQgc29tZSB1bnZlc3RlZCBhbW91bnQuIEdlbmVyYWxseSBpbXBsaWVzIGEwbG9naWMgZXJyb3IuQEludmFsaWRTdGF0ZW1lbnQABASQQSBuZWVkZWQgc3RhdGVtZW50IHdhcyBub3QgaW5jbHVkZWQuTFZlc3RlZEJhbGFuY2VFeGlzdHMABQSkVGhlIGFjY291bnQgYWxyZWFkeSBoYXMgYSB2ZXN0ZWQgYmFsYW5jZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuEQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAXQEBGFZlYzxUPgAAFQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEZCwRTAAAEAB0LARhWZWM8VD4AABkLDGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldDRDYW5kaWRhdGVJbmZvCCRBY2NvdW50SWQBBBxCYWxhbmNlAVUBAAgBDHdobwQBJEFjY291bnRJZAABHGRlcG9zaXRVAQEcQmFsYW5jZQAAHQsAAAIZCwAhCwg0ZnJhbWVfc3VwcG9ydCBQYWxsZXRJZAAABABZAgEcW3U4OyA4XQAAJQsMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEVycm9yBARUAAFERFRvb01hbnlDYW5kaWRhdGVzAAAEjFRoZSBwYWxsZXQgaGFzIHRvbyBtYW55IGNhbmRpZGF0ZXMuXFRvb0Zld0VsaWdpYmxlQ29sbGF0b3JzAAEErExlYXZpbmcgd291bGQgcmVzdWx0IGluIHRvbyBmZXcgY2FuZGlkYXRlcy5AQWxyZWFkeUNhbmRpZGF0ZQACBHxBY2NvdW50IGlzIGFscmVhZHkgYSBjYW5kaWRhdGUuME5vdENhbmRpZGF0ZQADBGxBY2NvdW50IGlzIG5vdCBhIGNhbmRpZGF0ZS5QVG9vTWFueUludnVsbmVyYWJsZXMABASEVGhlcmUgYXJlIHRvbyBtYW55IEludnVsbmVyYWJsZXMuTEFscmVhZHlJbnZ1bG5lcmFibGUABQSMQWNjb3VudCBpcyBhbHJlYWR5IGFuIEludnVsbmVyYWJsZS48Tm90SW52dWxuZXJhYmxlAAYEfEFjY291bnQgaXMgbm90IGFuIEludnVsbmVyYWJsZS5cTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQABwScQWNjb3VudCBoYXMgbm8gYXNzb2NpYXRlZCB2YWxpZGF0b3IgSUQuWFZhbGlkYXRvck5vdFJlZ2lzdGVyZWQACASMVmFsaWRhdG9yIElEIGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZC5sSW5zZXJ0VG9DYW5kaWRhdGVMaXN0RmFpbGVkAAkEnENvdWxkIG5vdCBpbnNlcnQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LnRSZW1vdmVGcm9tQ2FuZGlkYXRlTGlzdEZhaWxlZAAKBKRDb3VsZCBub3QgcmVtb3ZlIGZyb20gdGhlIGNhbmRpZGF0ZSBsaXN0LjREZXBvc2l0VG9vTG93AAsE9E5ldyBkZXBvc2l0IGFtb3VudCB3b3VsZCBiZSBiZWxvdyB0aGUgbWluaW11bSBjYW5kaWRhY3kgYm9uZC5kVXBkYXRlQ2FuZGlkYXRlTGlzdEZhaWxlZAAMBJBDb3VsZCBub3QgdXBkYXRlIHRoZSBjYW5kaWRhdGUgbGlzdC5ASW5zdWZmaWNpZW50Qm9uZAANBCkBRGVwb3NpdCBhbW91bnQgaXMgdG9vIGxvdyB0byB0YWtlIHRoZSB0YXJnZXQncyBzbG90IGluIHRoZSBjYW5kaWRhdGUgbGlzdC5QVGFyZ2V0SXNOb3RDYW5kaWRhdGUADgQtAVRoZSB0YXJnZXQgYWNjb3VudCB0byBiZSByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgaXMgbm90IGEgY2FuZGlkYXRlLkBJZGVudGljYWxEZXBvc2l0AA8EDQFUaGUgdXBkYXRlZCBkZXBvc2l0IGFtb3VudCBpcyBlcXVhbCB0byB0aGUgYW1vdW50IGFscmVhZHkgcmVzZXJ2ZWQuQEludmFsaWRVbnJlc2VydmUAEAQ9AUNhbm5vdCBsb3dlciBjYW5kaWRhY3kgYm9uZCB3aGlsZSBvY2N1cHlpbmcgYSBmdXR1cmUgY29sbGF0b3Igc2xvdCBpbiB0aGUgbGlzdC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuKQsAAAItCwAtCwAABAgEmQEAMQsAAAI1CwA1CwAABAg4OQsAOQsMKHNwX3N0YWtpbmccb2ZmZW5jZTxPZmZlbmNlU2V2ZXJpdHkAAAQAGQUBHFBlcmJpbGwAAD0LAAAECEELGABBCwwcc3BfY29yZRhjcnlwdG8kS2V5VHlwZUlkAAAEAHABHFt1ODsgNF0AAEULDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXJyb3IEBFQAARQwSW52YWxpZFByb29mAAAEYEludmFsaWQgb3duZXJzaGlwIHByb29mLlxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAABBJxObyBhc3NvY2lhdGVkIHZhbGlkYXRvciBJRCBmb3IgYWNjb3VudC40RHVwbGljYXRlZEtleQACBGRSZWdpc3RlcmVkIGR1cGxpY2F0ZSBrZXkuGE5vS2V5cwADBKRObyBrZXlzIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBhY2NvdW50LiROb0FjY291bnQABAQZAUtleSBzZXR0aW5nIGFjY291bnQgaXMgbm90IGxpdmUsIHNvIGl0J3MgaW1wb3NzaWJsZSB0byBhc3NvY2lhdGUga2V5cy4EdEVycm9yIGZvciB0aGUgc2Vzc2lvbiBwYWxsZXQuSQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGdAQRTAAAEAE0LARhWZWM8VD4AAE0LAAACnQEAUQsISHNwX2NvbnNlbnN1c19zbG90cxBTbG90AAAEACgBDHU2NAAAVQsAAAQIUQs4AFkLDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAGcBFMAAAQAXQsBLEJUcmVlU2V0PFQ+AABdCwQgQlRyZWVTZXQEBFQBnAAEAFUKAAAAYQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFlCwRTAAAEAHELARhWZWM8VD4AAGULCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlWE91dGJvdW5kQ2hhbm5lbERldGFpbHMAABgBJHJlY2lwaWVudJwBGFBhcmFJZAABFHN0YXRlaQsBNE91dGJvdW5kU3RhdGUAATRzaWduYWxzX2V4aXN0WQEBEGJvb2wAASxmaXJzdF9pbmRleNEDAQx1MTYAAShsYXN0X2luZGV40QMBDHUxNgABFGZsYWdzbQsBUE91dGJvdW5kQ2hhbm5lbEZsYWdzAABpCwhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTRPdXRib3VuZFN0YXRlAAEICE9rAAAAJFN1c3BlbmRlZAABAABtCwhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZVBPdXRib3VuZENoYW5uZWxGbGFncwAABAEQYml0czgBDHUzMgAAcQsAAAJlCwB1CwAABAic0QMAeQsMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAB9CwhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTxRdWV1ZUNvbmZpZ0RhdGEAAAwBRHN1c3BlbmRfdGhyZXNob2xkOAEMdTMyAAE4ZHJvcF90aHJlc2hvbGQ4AQx1MzIAAUByZXN1bWVfdGhyZXNob2xkOAEMdTMyAACBCwxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQURXJyb3IEBFQAARQ4QmFkUXVldWVDb25maWcAAAQRAVNldHRpbmcgdGhlIHF1ZXVlIGNvbmZpZyBmYWlsZWQgc2luY2Ugb25lIG9mIGl0cyB2YWx1ZXMgd2FzIGludmFsaWQuQEFscmVhZHlTdXNwZW5kZWQAAQSMVGhlIGV4ZWN1dGlvbiBpcyBhbHJlYWR5IHN1c3BlbmRlZC44QWxyZWFkeVJlc3VtZWQAAgSEVGhlIGV4ZWN1dGlvbiBpcyBhbHJlYWR5IHJlc3VtZWQudFRvb01hbnlBY3RpdmVPdXRib3VuZENoYW5uZWxzAAMEsFRoZXJlIGFyZSB0b28gbWFueSBhY3RpdmUgb3V0Ym91bmQgY2hhbm5lbHMuGFRvb0JpZwAEBFxUaGUgbWVzc2FnZSBpcyB0b28gYmlnLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6FCwwocGFsbGV0X3hjbRhwYWxsZXQsUXVlcnlTdGF0dXMELEJsb2NrTnVtYmVyATgBDBxQZW5kaW5nEAEkcmVzcG9uZGVyqQEBRFZlcnNpb25lZExvY2F0aW9uAAFMbWF5YmVfbWF0Y2hfcXVlcmllcokLAWRPcHRpb248VmVyc2lvbmVkTG9jYXRpb24+AAEwbWF5YmVfbm90aWZ5jQsBQE9wdGlvbjwodTgsIHU4KT4AARx0aW1lb3V0OAEsQmxvY2tOdW1iZXIAAAA8VmVyc2lvbk5vdGlmaWVyCAEYb3JpZ2luqQEBRFZlcnNpb25lZExvY2F0aW9uAAEkaXNfYWN0aXZlWQEBEGJvb2wAAQAUUmVhZHkIASByZXNwb25zZZULAURWZXJzaW9uZWRSZXNwb25zZQABCGF0OAEsQmxvY2tOdW1iZXIAAgAAiQsEGE9wdGlvbgQEVAGpAQEIEE5vbmUAAAAQU29tZQQAqQEAAAEAAI0LBBhPcHRpb24EBFQBkQsBCBBOb25lAAAAEFNvbWUEAJELAAABAACRCwAABAgMDACVCwgMeGNtRFZlcnNpb25lZFJlc3BvbnNlAAEMCFYzBABhAgEwdjM6OlJlc3BvbnNlAAMACFY0BADNAgEwdjQ6OlJlc3BvbnNlAAQACFY1BAAZAwEwdjU6OlJlc3BvbnNlAAUAAJkLAAAECDipAQCdCwAABAwoEQE4AKELDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBpQsEUwAABACpCwEYVmVjPFQ+AAClCwAABAipATgAqQsAAAKlCwCtCwwocGFsbGV0X3hjbRhwYWxsZXRUVmVyc2lvbk1pZ3JhdGlvblN0YWdlAAEQXE1pZ3JhdGVTdXBwb3J0ZWRWZXJzaW9uAAAAXE1pZ3JhdGVWZXJzaW9uTm90aWZpZXJzAAEAUE5vdGlmeUN1cnJlbnRUYXJnZXRzBABJAQE8T3B0aW9uPFZlYzx1OD4+AAIAaE1pZ3JhdGVBbmROb3RpZnlPbGRUYXJnZXRzAAMAALELAAAEDDgEoQMAtQsMKHBhbGxldF94Y20YcGFsbGV0aFJlbW90ZUxvY2tlZEZ1bmdpYmxlUmVjb3JkCEhDb25zdW1lcklkZW50aWZpZXIBEDBNYXhDb25zdW1lcnMAABABGGFtb3VudFUBARB1MTI4AAEUb3duZXKpAQFEVmVyc2lvbmVkTG9jYXRpb24AARhsb2NrZXKpAQFEVmVyc2lvbmVkTG9jYXRpb24AASRjb25zdW1lcnO5CwHQQm91bmRlZFZlYzwoQ29uc3VtZXJJZGVudGlmaWVyLCB1MTI4KSwgTWF4Q29uc3VtZXJzPgAAuQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAG9CwRTAAAEAMELARhWZWM8VD4AAL0LAAAECBBVAQDBCwAAAr0LAMULDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQByQsEUwAABADNCwEYVmVjPFQ+AADJCwAABAhVAakBAM0LAAACyQsA0QsIKHBhbGxldF94Y21YQXV0aG9yaXplZEFsaWFzZXNFbnRyeQgYVGlja2V0AdULDE1BWAHZCwAIASBhbGlhc2Vyc90LAXhCb3VuZGVkVmVjPE9yaWdpbkFsaWFzZXIsIE1BWD4AARh0aWNrZXTVCwEYVGlja2V0AADVCxQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlREhvbGRDb25zaWRlcmF0aW9uFARBAARGAARSAAREAAhGcAAABABVAQEoRjo6QmFsYW5jZQAA2QsMKHBhbGxldF94Y20YcGFsbGV0UE1heEF1dGhvcml6ZWRBbGlhc2VzAAAAAN0LDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB4QsEUwAABADlCwEYVmVjPFQ+AADhCwxAeGNtX3J1bnRpbWVfYXBpc0hhdXRob3JpemVkX2FsaWFzZXM0T3JpZ2luQWxpYXNlcgAACAEgbG9jYXRpb26pAQFEVmVyc2lvbmVkTG9jYXRpb24AARhleHBpcnn8ASxPcHRpb248dTY0PgAA5QsAAALhCwDpCwwocGFsbGV0X3hjbRhwYWxsZXQURXJyb3IEBFQAAXAsVW5yZWFjaGFibGUAAAhdAVRoZSBkZXNpcmVkIGRlc3RpbmF0aW9uIHdhcyB1bnJlYWNoYWJsZSwgZ2VuZXJhbGx5IGJlY2F1c2UgdGhlcmUgaXMgYSBubyB3YXkgb2Ygcm91dGluZxh0byBpdC4sU2VuZEZhaWx1cmUAAQhBAVRoZXJlIHdhcyBzb21lIG90aGVyIGlzc3VlIChpLmUuIG5vdCB0byBkbyB3aXRoIHJvdXRpbmcpIGluIHNlbmRpbmcgdGhlIG1lc3NhZ2UuyFBlcmhhcHMgYSBsYWNrIG9mIHNwYWNlIGZvciBidWZmZXJpbmcgdGhlIG1lc3NhZ2UuIEZpbHRlcmVkAAIEnFRoZSBtZXNzYWdlIGV4ZWN1dGlvbiBmYWlscyB0aGUgZmlsdGVyLkhVbndlaWdoYWJsZU1lc3NhZ2UAAwS0VGhlIG1lc3NhZ2UncyB3ZWlnaHQgY291bGQgbm90IGJlIGRldGVybWluZWQuYERlc3RpbmF0aW9uTm90SW52ZXJ0aWJsZQAEBNxUaGUgZGVzdGluYXRpb24gYExvY2F0aW9uYCBwcm92aWRlZCBjYW5ub3QgYmUgaW52ZXJ0ZWQuFEVtcHR5AAUEgFRoZSBhc3NldHMgdG8gYmUgc2VudCBhcmUgZW1wdHkuOENhbm5vdFJlYW5jaG9yAAYENQFDb3VsZCBub3QgcmUtYW5jaG9yIHRoZSBhc3NldHMgdG8gZGVjbGFyZSB0aGUgZmVlcyBmb3IgdGhlIGRlc3RpbmF0aW9uIGNoYWluLjRUb29NYW55QXNzZXRzAAcExFRvbyBtYW55IGFzc2V0cyBoYXZlIGJlZW4gYXR0ZW1wdGVkIGZvciB0cmFuc2Zlci40SW52YWxpZE9yaWdpbgAIBHhPcmlnaW4gaXMgaW52YWxpZCBmb3Igc2VuZGluZy4oQmFkVmVyc2lvbgAJBCEBVGhlIHZlcnNpb24gb2YgdGhlIGBWZXJzaW9uZWRgIHZhbHVlIHVzZWQgaXMgbm90IGFibGUgdG8gYmUgaW50ZXJwcmV0ZWQuLEJhZExvY2F0aW9uAAoIQQFUaGUgZ2l2ZW4gbG9jYXRpb24gY291bGQgbm90IGJlIHVzZWQgKGUuZy4gYmVjYXVzZSBpdCBjYW5ub3QgYmUgZXhwcmVzc2VkIGluIHRoZWBkZXNpcmVkIHZlcnNpb24gb2YgWENNKS44Tm9TdWJzY3JpcHRpb24ACwS8VGhlIHJlZmVyZW5jZWQgc3Vic2NyaXB0aW9uIGNvdWxkIG5vdCBiZSBmb3VuZC5EQWxyZWFkeVN1YnNjcmliZWQADAQRAVRoZSBsb2NhdGlvbiBpcyBpbnZhbGlkIHNpbmNlIGl0IGFscmVhZHkgaGFzIGEgc3Vic2NyaXB0aW9uIGZyb20gdXMuWENhbm5vdENoZWNrT3V0VGVsZXBvcnQADQQpAUNvdWxkIG5vdCBjaGVjay1vdXQgdGhlIGFzc2V0cyBmb3IgdGVsZXBvcnRhdGlvbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4uKExvd0JhbGFuY2UADgRBAVRoZSBvd25lciBkb2VzIG5vdCBvd24gKGFsbCkgb2YgdGhlIGFzc2V0IHRoYXQgdGhleSB3aXNoIHRvIGRvIHRoZSBvcGVyYXRpb24gb24uMFRvb01hbnlMb2NrcwAPBMBUaGUgYXNzZXQgb3duZXIgaGFzIHRvbyBtYW55IGxvY2tzIG9uIHRoZSBhc3NldC5MQWNjb3VudE5vdFNvdmVyZWlnbgAQBDEBVGhlIGdpdmVuIGFjY291bnQgaXMgbm90IGFuIGlkZW50aWZpYWJsZSBzb3ZlcmVpZ24gYWNjb3VudCBmb3IgYW55IGxvY2F0aW9uLihGZWVzTm90TWV0ABEEKQFUaGUgb3BlcmF0aW9uIHJlcXVpcmVkIGZlZXMgdG8gYmUgcGFpZCB3aGljaCB0aGUgaW5pdGlhdG9yIGNvdWxkIG5vdCBtZWV0LjBMb2NrTm90Rm91bmQAEgT0QSByZW1vdGUgbG9jayB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGRhdGEgY291bGQgbm90IGJlIGZvdW5kLhRJblVzZQATBEkBVGhlIHVubG9jayBvcGVyYXRpb24gY2Fubm90IHN1Y2NlZWQgYmVjYXVzZSB0aGVyZSBhcmUgc3RpbGwgY29uc3VtZXJzIG9mIHRoZSBsb2NrLmhJbnZhbGlkQXNzZXRVbmtub3duUmVzZXJ2ZQAVBPBJbnZhbGlkIGFzc2V0LCByZXNlcnZlIGNoYWluIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIGZvciBpdC54SW52YWxpZEFzc2V0VW5zdXBwb3J0ZWRSZXNlcnZlABYERQFJbnZhbGlkIGFzc2V0LCBkbyBub3Qgc3VwcG9ydCByZW1vdGUgYXNzZXQgcmVzZXJ2ZXMgd2l0aCBkaWZmZXJlbnQgZmVlcyByZXNlcnZlcy48VG9vTWFueVJlc2VydmVzABcESQFUb28gbWFueSBhc3NldHMgd2l0aCBkaWZmZXJlbnQgcmVzZXJ2ZSBsb2NhdGlvbnMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuYExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZQAYBHxMb2NhbCBYQ00gZXhlY3V0aW9uIGluY29tcGxldGUuYFRvb01hbnlBdXRob3JpemVkQWxpYXNlcwAZBLhUb28gbWFueSBsb2NhdGlvbnMgYXV0aG9yaXplZCB0byBhbGlhcyBvcmlnaW4uNEV4cGlyZXNJblBhc3QAGgSMRXhwaXJ5IGJsb2NrIG51bWJlciBpcyBpbiB0aGUgcGFzdC40QWxpYXNOb3RGb3VuZAAbBNBUaGUgYWxpYXMgdG8gcmVtb3ZlIGF1dGhvcml6YXRpb24gZm9yIHdhcyBub3QgZm91bmQuhExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZVdpdGhFcnJvcggBFGluZGV4DAFASW5zdHJ1Y3Rpb25JbmRleAABFGVycm9y7QsBOEV4ZWN1dGlvbkVycm9yABwINQFMb2NhbCBYQ00gZXhlY3V0aW9uIGluY29tcGxldGUgd2l0aCB0aGUgYWN0dWFsIFhDTSBlcnJvciBhbmQgdGhlIGluZGV4IG9mIHRoZYhpbnN0cnVjdGlvbiB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lu0LDChwYWxsZXRfeGNtGGVycm9yczhFeGVjdXRpb25FcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIANFRvb01hbnlBc3NldHMAIwBMVW5oYW5kbGVkWGNtVmVyc2lvbgAkAEhXZWlnaHRMaW1pdFJlYWNoZWQAJQAcQmFycmllcgAmAExXZWlnaHROb3RDb21wdXRhYmxlACcAREV4Y2VlZHNTdGFja0xpbWl0ACgAAPELCGBicF94Y21fYnJpZGdlX2h1Yl9yb3V0ZXIsQnJpZGdlU3RhdGUAAAgBTGRlbGl2ZXJ5X2ZlZV9mYWN0b3IJBQEkRml4ZWRVMTI4AAEwaXNfY29uZ2VzdGVkWQEBEGJvb2wAAPULCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZSRCb29rU3RhdGUENE1lc3NhZ2VPcmlnaW4BsQMAGAEUYmVnaW44ASRQYWdlSW5kZXgAAQxlbmQ4ASRQYWdlSW5kZXgAARRjb3VudDgBJFBhZ2VJbmRleAABQHJlYWR5X25laWdoYm91cnP5CwGET3B0aW9uPE5laWdoYm91cnM8TWVzc2FnZU9yaWdpbj4+AAE0bWVzc2FnZV9jb3VudCgBDHU2NAABEHNpemUoAQx1NjQAAPkLBBhPcHRpb24EBFQB/QsBCBBOb25lAAAAEFNvbWUEAP0LAAABAAD9CwhQcGFsbGV0X21lc3NhZ2VfcXVldWUoTmVpZ2hib3VycwQ0TWVzc2FnZU9yaWdpbgGxAwAIARBwcmV2sQMBNE1lc3NhZ2VPcmlnaW4AARBuZXh0sQMBNE1lc3NhZ2VPcmlnaW4AAAEMAAAECLEDOAAFDAhQcGFsbGV0X21lc3NhZ2VfcXVldWUQUGFnZQgQU2l6ZQE4IEhlYXBTaXplAAAYASRyZW1haW5pbmc4ARBTaXplAAE4cmVtYWluaW5nX3NpemU4ARBTaXplAAEsZmlyc3RfaW5kZXg4ARBTaXplAAEUZmlyc3Q4ARBTaXplAAEQbGFzdDgBEFNpemUAARBoZWFwCQwBnEJvdW5kZWRWZWM8dTgsIEludG9VMzI8SGVhcFNpemUsIFNpemU+PgAACQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAANDAxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0FEVycm9yBARUAAEkLE5vdFJlYXBhYmxlAAAISQFQYWdlIGlzIG5vdCByZWFwYWJsZSBiZWNhdXNlIGl0IGhhcyBpdGVtcyByZW1haW5pbmcgdG8gYmUgcHJvY2Vzc2VkIGFuZCBpcyBub3Qgb2xkHGVub3VnaC4YTm9QYWdlAAEEhFBhZ2UgdG8gYmUgcmVhcGVkIGRvZXMgbm90IGV4aXN0LiROb01lc3NhZ2UAAgSoVGhlIHJlZmVyZW5jZWQgbWVzc2FnZSBjb3VsZCBub3QgYmUgZm91bmQuQEFscmVhZHlQcm9jZXNzZWQAAwQBAVRoZSBtZXNzYWdlIHdhcyBhbHJlYWR5IHByb2Nlc3NlZCBhbmQgY2Fubm90IGJlIHByb2Nlc3NlZCBhZ2Fpbi4YUXVldWVkAAQErFRoZSBtZXNzYWdlIGlzIHF1ZXVlZCBmb3IgZnV0dXJlIGV4ZWN1dGlvbi5ISW5zdWZmaWNpZW50V2VpZ2h0AAUEGQFUaGVyZSBpcyB0ZW1wb3JhcmlseSBub3QgZW5vdWdoIHdlaWdodCB0byBjb250aW51ZSBzZXJ2aWNpbmcgbWVzc2FnZXMuYFRlbXBvcmFyaWx5VW5wcm9jZXNzYWJsZQAGEKhUaGlzIG1lc3NhZ2UgaXMgdGVtcG9yYXJpbHkgdW5wcm9jZXNzYWJsZS4AWQFTdWNoIGVycm9ycyBhcmUgZXhwZWN0ZWQsIGJ1dCBub3QgZ3VhcmFudGVlZCwgdG8gcmVzb2x2ZSB0aGVtc2VsdmVzIGV2ZW50dWFsbHkgdGhyb3VnaCRyZXRyeWluZy4sUXVldWVQYXVzZWQABwzsVGhlIHF1ZXVlIGlzIHBhdXNlZCBhbmQgbm8gbWVzc2FnZSBjYW4gYmUgZXhlY3V0ZWQgZnJvbSBpdC4AHQFUaGlzIGNhbiBjaGFuZ2UgYXQgYW55IHRpbWUgYW5kIG1heSByZXNvbHZlIGluIHRoZSBmdXR1cmUgYnkgcmUtdHJ5aW5nLkxSZWN1cnNpdmVEaXNhbGxvd2VkAAgEMQFBbm90aGVyIGNhbGwgaXMgaW4gcHJvZ3Jlc3MgYW5kIG5lZWRzIHRvIGZpbmlzaCBiZWZvcmUgdGhpcyBjYWxsIGNhbiBoYXBwZW4uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LhEMDIRzbm93YnJpZGdlX3BhbGxldF9zeXN0ZW1fZnJvbnRlbmQYcGFsbGV0FEVycm9yBARUAAE0aFVuc3VwcG9ydGVkTG9jYXRpb25WZXJzaW9uAAAEiENvbnZlcnQgdmVyc2lvbmVkIGxvY2F0aW9uIGZhaWx1cmVESW52YWxpZEFzc2V0T3duZXIAAQQZAUNoZWNrIGxvY2F0aW9uIGZhaWx1cmUsIHNob3VsZCBzdGFydCBmcm9tIHRoZSBkaXNwYXRjaCBvcmlnaW4gYXMgb3duZXIsU2VuZEZhaWx1cmUAAgRgU2VuZCB4Y20gbWVzc2FnZSBmYWlsdXJlKEZlZXNOb3RNZXQAAwRoV2l0aGRyYXcgZmVlIGFzc2V0IGZhaWx1cmVgTG9jYXRpb25Db252ZXJzaW9uRmFpbGVkAAQEmENvbnZlcnQgdG8gcmVhbmNob3JlZCBsb2NhdGlvbiBmYWlsdXJlGEhhbHRlZAAFBGBNZXNzYWdlIGV4cG9ydCBpcyBoYWx0ZWQsVW5yZWFjaGFibGUABghdAVRoZSBkZXNpcmVkIGRlc3RpbmF0aW9uIHdhcyB1bnJlYWNoYWJsZSwgZ2VuZXJhbGx5IGJlY2F1c2UgdGhlcmUgaXMgYSBubyB3YXkgb2Ygcm91dGluZxh0byBpdC5AVW5zdXBwb3J0ZWRBc3NldAAHBLhUaGUgYXNzZXQgcHJvdmlkZWQgZm9yIHRoZSB0aXAgaXMgdW5zdXBwb3J0ZWQuNFdpdGhkcmF3RXJyb3IACARkVW5hYmxlIHRvIHdpdGhkcmF3IGFzc2V0LjhJbnZhbGlkQWNjb3VudAAJBLRBY2NvdW50IGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBsb2NhdGlvbi4kU3dhcEVycm9yAAoEyFByb3ZpZGVkIHRpcCBhc3NldCBjb3VsZCBub3QgYmUgc3dhcHBlZCBmb3IgZXRoZXIuJEJ1cm5FcnJvcgALBGhFdGhlciBjb3VsZCBub3QgYmUgYnVybmVkLjRUaXBBbW91bnRaZXJvAAwEZFRoZSB0aXAgcHJvdmlkZWQgaXMgemVyby4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuFQwMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFcnJvcgQEVAABBDBUb29NYW55Q2FsbHMAAARcVG9vIG1hbnkgY2FsbHMgYmF0Y2hlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuGQwAAAQIBAgAHQwIPHBhbGxldF9tdWx0aXNpZyBNdWx0aXNpZxAsQmxvY2tOdW1iZXIBOBxCYWxhbmNlAVUBJEFjY291bnRJZAEEME1heEFwcHJvdmFscwAAEAEQd2hlbhEEAVhUaW1lcG9pbnQ8QmxvY2tOdW1iZXI+AAEcZGVwb3NpdFUBARxCYWxhbmNlAAEkZGVwb3NpdG9yBAEkQWNjb3VudElkAAEkYXBwcm92YWxzIQwBjEJvdW5kZWRWZWM8QWNjb3VudElkLCBNYXhBcHByb3ZhbHM+AAAhDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABABdAQEYVmVjPFQ+AAAlDAw8cGFsbGV0X211bHRpc2lnGHBhbGxldBRFcnJvcgQEVAABOEBNaW5pbXVtVGhyZXNob2xkAAAEfFRocmVzaG9sZCBtdXN0IGJlIDIgb3IgZ3JlYXRlci48QWxyZWFkeUFwcHJvdmVkAAEErENhbGwgaXMgYWxyZWFkeSBhcHByb3ZlZCBieSB0aGlzIHNpZ25hdG9yeS5ETm9BcHByb3ZhbHNOZWVkZWQAAgScQ2FsbCBkb2Vzbid0IG5lZWQgYW55IChtb3JlKSBhcHByb3ZhbHMuRFRvb0Zld1NpZ25hdG9yaWVzAAMEqFRoZXJlIGFyZSB0b28gZmV3IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LkhUb29NYW55U2lnbmF0b3JpZXMABASsVGhlcmUgYXJlIHRvbyBtYW55IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LlRTaWduYXRvcmllc091dE9mT3JkZXIABQQNAVRoZSBzaWduYXRvcmllcyB3ZXJlIHByb3ZpZGVkIG91dCBvZiBvcmRlcjsgdGhleSBzaG91bGQgYmUgb3JkZXJlZC5MU2VuZGVySW5TaWduYXRvcmllcwAGBA0BVGhlIHNlbmRlciB3YXMgY29udGFpbmVkIGluIHRoZSBvdGhlciBzaWduYXRvcmllczsgaXQgc2hvdWxkbid0IGJlLiBOb3RGb3VuZAAHBKBNdWx0aXNpZyBvcGVyYXRpb24gbm90IGZvdW5kIGluIHN0b3JhZ2UuIE5vdE93bmVyAAgIUQFPbmx5IHRoZSBhY2NvdW50IHRoYXQgb3JpZ2luYWxseSBjcmVhdGVkIHRoZSBtdWx0aXNpZyBpcyBhYmxlIHRvIGNhbmNlbCBpdCBvciB1cGRhdGU0aXRzIGRlcG9zaXRzLixOb1RpbWVwb2ludAAJBB0BTm8gdGltZXBvaW50IHdhcyBnaXZlbiwgeWV0IHRoZSBtdWx0aXNpZyBvcGVyYXRpb24gaXMgYWxyZWFkeSB1bmRlcndheS44V3JvbmdUaW1lcG9pbnQACgQtAUEgZGlmZmVyZW50IHRpbWVwb2ludCB3YXMgZ2l2ZW4gdG8gdGhlIG11bHRpc2lnIG9wZXJhdGlvbiB0aGF0IGlzIHVuZGVyd2F5LkxVbmV4cGVjdGVkVGltZXBvaW50AAsE9EEgdGltZXBvaW50IHdhcyBnaXZlbiwgeWV0IG5vIG11bHRpc2lnIG9wZXJhdGlvbiBpcyB1bmRlcndheS48TWF4V2VpZ2h0VG9vTG93AAwE0FRoZSBtYXhpbXVtIHdlaWdodCBpbmZvcm1hdGlvbiBwcm92aWRlZCB3YXMgdG9vIGxvdy40QWxyZWFkeVN0b3JlZAANBKBUaGUgZGF0YSB0byBiZSBzdG9yZWQgaXMgYWxyZWFkeSBzdG9yZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LikMAAAECC0MVQEALQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAExDARTAAAEADUMARhWZWM8VD4AADEMCDBwYWxsZXRfcHJveHk8UHJveHlEZWZpbml0aW9uDCRBY2NvdW50SWQBBCRQcm94eVR5cGUBHQQsQmxvY2tOdW1iZXIBOAAMASBkZWxlZ2F0ZQQBJEFjY291bnRJZAABKHByb3h5X3R5cGUdBAEkUHJveHlUeXBlAAEUZGVsYXk4ASxCbG9ja051bWJlcgAANQwAAAIxDAA5DAAABAg9DFUBAD0MDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBQQwEUwAABABFDAEYVmVjPFQ+AABBDAgwcGFsbGV0X3Byb3h5MEFubm91bmNlbWVudAwkQWNjb3VudElkAQQQSGFzaAE8LEJsb2NrTnVtYmVyATgADAEQcmVhbAQBJEFjY291bnRJZAABJGNhbGxfaGFzaDwBEEhhc2gAARhoZWlnaHQ4ASxCbG9ja051bWJlcgAARQwAAAJBDABJDAwwcGFsbGV0X3Byb3h5GHBhbGxldBRFcnJvcgQEVAABIBxUb29NYW55AAAEIQFUaGVyZSBhcmUgdG9vIG1hbnkgcHJveGllcyByZWdpc3RlcmVkIG9yIHRvbyBtYW55IGFubm91bmNlbWVudHMgcGVuZGluZy4gTm90Rm91bmQAAQR0UHJveHkgcmVnaXN0cmF0aW9uIG5vdCBmb3VuZC4gTm90UHJveHkAAgTMU2VuZGVyIGlzIG5vdCBhIHByb3h5IG9mIHRoZSBhY2NvdW50IHRvIGJlIHByb3hpZWQuLFVucHJveHlhYmxlAAMEIQFBIGNhbGwgd2hpY2ggaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIHByb3h5IHR5cGUncyBmaWx0ZXIgd2FzIGF0dGVtcHRlZC4kRHVwbGljYXRlAAQEbEFjY291bnQgaXMgYWxyZWFkeSBhIHByb3h5LjBOb1Blcm1pc3Npb24ABQQVAUNhbGwgbWF5IG5vdCBiZSBtYWRlIGJ5IHByb3h5IGJlY2F1c2UgaXQgbWF5IGVzY2FsYXRlIGl0cyBwcml2aWxlZ2VzLixVbmFubm91bmNlZAAGBNBBbm5vdW5jZW1lbnQsIGlmIG1hZGUgYXQgYWxsLCB3YXMgbWFkZSB0b28gcmVjZW50bHkuLE5vU2VsZlByb3h5AAcEZENhbm5vdCBhZGQgc2VsZiBhcyBwcm94eS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuTQwAAAQMBFUBWQEAUQwMOHBhbGxldF9pbmRpY2VzGHBhbGxldBRFcnJvcgQEVAABFCxOb3RBc3NpZ25lZAAABIxUaGUgaW5kZXggd2FzIG5vdCBhbHJlYWR5IGFzc2lnbmVkLiBOb3RPd25lcgABBKRUaGUgaW5kZXggaXMgYXNzaWduZWQgdG8gYW5vdGhlciBhY2NvdW50LhRJblVzZQACBHBUaGUgaW5kZXggd2FzIG5vdCBhdmFpbGFibGUuLE5vdFRyYW5zZmVyAAMEyFRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFjY291bnRzIGFyZSBpZGVudGljYWwuJFBlcm1hbmVudAAEBNBUaGUgaW5kZXggaXMgcGVybWFuZW50IGFuZCBtYXkgbm90IGJlIGZyZWVkL2NoYW5nZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LlUMDDRwYWxsZXRfYXNzZXRzFHR5cGVzMEFzc2V0RGV0YWlscwwcQmFsYW5jZQFVASRBY2NvdW50SWQBBDhEZXBvc2l0QmFsYW5jZQFVAQAwARRvd25lcgQBJEFjY291bnRJZAABGGlzc3VlcgQBJEFjY291bnRJZAABFGFkbWluBAEkQWNjb3VudElkAAEcZnJlZXplcgQBJEFjY291bnRJZAABGHN1cHBseVUBARxCYWxhbmNlAAEcZGVwb3NpdFUBAThEZXBvc2l0QmFsYW5jZQABLG1pbl9iYWxhbmNlVQEBHEJhbGFuY2UAATRpc19zdWZmaWNpZW50WQEBEGJvb2wAASBhY2NvdW50czgBDHUzMgABLHN1ZmZpY2llbnRzOAEMdTMyAAEkYXBwcm92YWxzOAEMdTMyAAEYc3RhdHVzWQwBLEFzc2V0U3RhdHVzAABZDAw0cGFsbGV0X2Fzc2V0cxR0eXBlcyxBc3NldFN0YXR1cwABDBBMaXZlAAAAGEZyb3plbgABAChEZXN0cm95aW5nAAIAAF0MAAAECDgEAGEMDDRwYWxsZXRfYXNzZXRzFHR5cGVzMEFzc2V0QWNjb3VudBAcQmFsYW5jZQFVAThEZXBvc2l0QmFsYW5jZQFVARRFeHRyYQEQJEFjY291bnRJZAEEABABHGJhbGFuY2VVAQEcQmFsYW5jZQABGHN0YXR1c2UMATRBY2NvdW50U3RhdHVzAAEYcmVhc29uaQwBqEV4aXN0ZW5jZVJlYXNvbjxEZXBvc2l0QmFsYW5jZSwgQWNjb3VudElkPgABFGV4dHJhEAEURXh0cmEAAGUMDDRwYWxsZXRfYXNzZXRzFHR5cGVzNEFjY291bnRTdGF0dXMAAQwYTGlxdWlkAAAAGEZyb3plbgABABxCbG9ja2VkAAIAAGkMDDRwYWxsZXRfYXNzZXRzFHR5cGVzPEV4aXN0ZW5jZVJlYXNvbggcQmFsYW5jZQFVASRBY2NvdW50SWQBBAEUIENvbnN1bWVyAAAAKFN1ZmZpY2llbnQAAQAsRGVwb3NpdEhlbGQEAFUBARxCYWxhbmNlAAIAPERlcG9zaXRSZWZ1bmRlZAADACxEZXBvc2l0RnJvbQgABAEkQWNjb3VudElkAABVAQEcQmFsYW5jZQAEAABtDAAABAw4BAQAcQwMNHBhbGxldF9hc3NldHMUdHlwZXMgQXBwcm92YWwIHEJhbGFuY2UBVQE4RGVwb3NpdEJhbGFuY2UBVQEACAEYYW1vdW50VQEBHEJhbGFuY2UAARxkZXBvc2l0VQEBOERlcG9zaXRCYWxhbmNlAAB1DAw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBc3NldE1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQFVATRCb3VuZGVkU3RyaW5nAXkMABQBHGRlcG9zaXRVAQE4RGVwb3NpdEJhbGFuY2UAARBuYW1leQwBNEJvdW5kZWRTdHJpbmcAARhzeW1ib2x5DAE0Qm91bmRlZFN0cmluZwABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5ZAQEQYm9vbAAAeQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAB9DAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXJyb3IIBFQABEkAAWAoQmFsYW5jZUxvdwAABBUBQWNjb3VudCBiYWxhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0cmFuc2ZlciBhbW91bnQuJE5vQWNjb3VudAABBJBUaGUgYWNjb3VudCB0byBhbHRlciBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4cVW5rbm93bgADBHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi4YRnJvemVuAAQEdFRoZSBvcmlnaW4gYWNjb3VudCBpcyBmcm96ZW4uFEluVXNlAAUEeFRoZSBhc3NldCBJRCBpcyBhbHJlYWR5IHRha2VuLihCYWRXaXRuZXNzAAYEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLjhNaW5CYWxhbmNlWmVybwAHBIxNaW5pbXVtIGJhbGFuY2Ugc2hvdWxkIGJlIG5vbi16ZXJvLkxVbmF2YWlsYWJsZUNvbnN1bWVyAAgMWQFVbmFibGUgdG8gaW5jcmVtZW50IHRoZSBjb25zdW1lciByZWZlcmVuY2UgY291bnRlcnMgb24gdGhlIGFjY291bnQuIEVpdGhlciBubyBwcm92aWRlck0BcmVmZXJlbmNlIGV4aXN0cyB0byBhbGxvdyBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgYSBub24tc2VsZi1zdWZmaWNpZW50IGFzc2V0LCBvciBvbmXwZmV3ZXIgdGhlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGhhcyBiZWVuIHJlYWNoZWQuLEJhZE1ldGFkYXRhAAkEXEludmFsaWQgbWV0YWRhdGEgZ2l2ZW4uKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLiBXb3VsZERpZQALBDUBVGhlIHNvdXJjZSBhY2NvdW50IHdvdWxkIG5vdCBzdXJ2aXZlIHRoZSB0cmFuc2ZlciBhbmQgaXQgbmVlZHMgdG8gc3RheSBhbGl2ZS40QWxyZWFkeUV4aXN0cwAMBIRUaGUgYXNzZXQtYWNjb3VudCBhbHJlYWR5IGV4aXN0cy4kTm9EZXBvc2l0AA0E1FRoZSBhc3NldC1hY2NvdW50IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRlcG9zaXQuJFdvdWxkQnVybgAOBMRUaGUgb3BlcmF0aW9uIHdvdWxkIHJlc3VsdCBpbiBmdW5kcyBiZWluZyBidXJuZWQuJExpdmVBc3NldAAPCFkBVGhlIGFzc2V0IGlzIGEgbGl2ZSBhc3NldCBhbmQgaXMgYWN0aXZlbHkgYmVpbmcgdXNlZC4gVXN1YWxseSBlbWl0IGZvciBvcGVyYXRpb25zIHN1Y2gdAWFzIGBzdGFydF9kZXN0cm95YCB3aGljaCByZXF1aXJlIHRoZSBhc3NldCB0byBiZSBpbiBhIGRlc3Ryb3lpbmcgc3RhdGUuMEFzc2V0Tm90TGl2ZQAQBMhUaGUgYXNzZXQgaXMgbm90IGxpdmUsIGFuZCBsaWtlbHkgYmVpbmcgZGVzdHJveWVkLjxJbmNvcnJlY3RTdGF0dXMAEQSwVGhlIGFzc2V0IHN0YXR1cyBpcyBub3QgdGhlIGV4cGVjdGVkIHN0YXR1cy4kTm90RnJvemVuABIE2FRoZSBhc3NldCBzaG91bGQgYmUgZnJvemVuIGJlZm9yZSB0aGUgZ2l2ZW4gb3BlcmF0aW9uLjhDYWxsYmFja0ZhaWxlZAATBIRDYWxsYmFjayBhY3Rpb24gcmVzdWx0ZWQgaW4gZXJyb3IoQmFkQXNzZXRJZAAUBMhUaGUgYXNzZXQgSUQgbXVzdCBiZSBlcXVhbCB0byB0aGUgW2BOZXh0QXNzZXRJZGBdLjxDb250YWluc0ZyZWV6ZXMAFQRNAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGZyZWV6ZXMuNENvbnRhaW5zSG9sZHMAFgRFAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGhvbGRzLjxUb29NYW55UmVzZXJ2ZXMAFwSAVHJpZWQgc2V0dGluZyB0b28gbWFueSByZXNlcnZlcy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQugQwEGE9wdGlvbgQEVAFVDAEIEE5vbmUAAAAQU29tZQQAVQwAAAEAAIUMBBhPcHRpb24EBFQBdQwBCBBOb25lAAAAEFNvbWUEAHUMAAABAACJDAw4cGFsbGV0X3VuaXF1ZXMUdHlwZXNEQ29sbGVjdGlvbkRldGFpbHMIJEFjY291bnRJZAEEOERlcG9zaXRCYWxhbmNlAVUBACgBFG93bmVyBAEkQWNjb3VudElkAAEYaXNzdWVyBAEkQWNjb3VudElkAAEUYWRtaW4EASRBY2NvdW50SWQAARxmcmVlemVyBAEkQWNjb3VudElkAAE0dG90YWxfZGVwb3NpdFUBAThEZXBvc2l0QmFsYW5jZQABMGZyZWVfaG9sZGluZ1kBARBib29sAAEUaXRlbXM4AQx1MzIAAThpdGVtX21ldGFkYXRhczgBDHUzMgABKGF0dHJpYnV0ZXM4AQx1MzIAASRpc19mcm96ZW5ZAQEQYm9vbAAAjQwAAAQMBDg4AJEMDDhwYWxsZXRfdW5pcXVlcxR0eXBlcyxJdGVtRGV0YWlscwgkQWNjb3VudElkAQQ4RGVwb3NpdEJhbGFuY2UBVQEAEAEUb3duZXIEASRBY2NvdW50SWQAASBhcHByb3ZlZI0BAURPcHRpb248QWNjb3VudElkPgABJGlzX2Zyb3plblkBARBib29sAAEcZGVwb3NpdFUBAThEZXBvc2l0QmFsYW5jZQAAlQwMOHBhbGxldF91bmlxdWVzFHR5cGVzSENvbGxlY3Rpb25NZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBVQEsU3RyaW5nTGltaXQAAAwBHGRlcG9zaXRVAQE4RGVwb3NpdEJhbGFuY2UAARBkYXRhQQQBbEJvdW5kZWRWZWM8dTgsIFN0cmluZ0xpbWl0PgABJGlzX2Zyb3plblkBARBib29sAACZDAw4cGFsbGV0X3VuaXF1ZXMUdHlwZXMwSXRlbU1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQFVASxTdHJpbmdMaW1pdAAADAEcZGVwb3NpdFUBAThEZXBvc2l0QmFsYW5jZQABEGRhdGFBBAFsQm91bmRlZFZlYzx1OCwgU3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuWQEBEGJvb2wAAJ0MAAAEDDjgwQMAoQwAAAQIeFUBAKUMAAAECFUBjQEAqQwMOHBhbGxldF91bmlxdWVzGHBhbGxldBRFcnJvcggEVAAESQABWDBOb1Blcm1pc3Npb24AAAToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLkRVbmtub3duQ29sbGVjdGlvbgABBHRUaGUgZ2l2ZW4gaXRlbSBJRCBpcyB1bmtub3duLjRBbHJlYWR5RXhpc3RzAAIEuFRoZSBpdGVtIElEIGhhcyBhbHJlYWR5IGJlZW4gdXNlZCBmb3IgYW4gaXRlbS4oV3JvbmdPd25lcgADBOhUaGUgb3duZXIgdHVybmVkIG91dCB0byBiZSBkaWZmZXJlbnQgdG8gd2hhdCB3YXMgZXhwZWN0ZWQuKEJhZFdpdG5lc3MABARsSW52YWxpZCB3aXRuZXNzIGRhdGEgZ2l2ZW4uFEluVXNlAAUEdFRoZSBpdGVtIElEIGlzIGFscmVhZHkgdGFrZW4uGEZyb3plbgAGBIRUaGUgaXRlbSBvciBjb2xsZWN0aW9uIGlzIGZyb3plbi40V3JvbmdEZWxlZ2F0ZQAHBPRUaGUgZGVsZWdhdGUgdHVybmVkIG91dCB0byBiZSBkaWZmZXJlbnQgdG8gd2hhdCB3YXMgZXhwZWN0ZWQuKE5vRGVsZWdhdGUACAR4VGhlcmUgaXMgbm8gZGVsZWdhdGUgYXBwcm92ZWQuKFVuYXBwcm92ZWQACQTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLihVbmFjY2VwdGVkAAoEJQFUaGUgbmFtZWQgb3duZXIgaGFzIG5vdCBzaWduZWQgb3duZXJzaGlwIG9mIHRoZSBjb2xsZWN0aW9uIGlzIGFjY2VwdGFibGUuGExvY2tlZAALBExUaGUgaXRlbSBpcyBsb2NrZWQuQE1heFN1cHBseVJlYWNoZWQADARsQWxsIGl0ZW1zIGhhdmUgYmVlbiBtaW50ZWQuTE1heFN1cHBseUFscmVhZHlTZXQADQSQVGhlIG1heCBzdXBwbHkgaGFzIGFscmVhZHkgYmVlbiBzZXQuRE1heFN1cHBseVRvb1NtYWxsAA4EQQFUaGUgcHJvdmlkZWQgbWF4IHN1cHBseSBpcyBsZXNzIHRvIHRoZSBhbW91bnQgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGFscmVhZHkgaGFzLixVbmtub3duSXRlbQAPBHRUaGUgZ2l2ZW4gaXRlbSBJRCBpcyB1bmtub3duLihOb3RGb3JTYWxlABAEVEl0ZW0gaXMgbm90IGZvciBzYWxlLiRCaWRUb29Mb3cAEQRwVGhlIHByb3ZpZGVkIGJpZCBpcyB0b28gbG93LihOb01ldGFkYXRhABIEVE5vIG1ldGFkYXRhIGlzIGZvdW5kLjRXcm9uZ01ldGFkYXRhABMEoFdyb25nIG1ldGFkYXRhIGtleS92YWx1ZSBieXRlcyBzdXBwbGllZC5EQXR0cmlidXRlTm90Rm91bmQAFARoQW4gYXR0cmlidXRlIGlzIG5vdCBmb3VuZC44V3JvbmdBdHRyaWJ1dGUAFQSkV3JvbmcgYXR0cmlidXRlIGtleS92YWx1ZSBieXRlcyBzdXBwbGllZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQurQwMLHBhbGxldF9uZnRzFHR5cGVzRENvbGxlY3Rpb25EZXRhaWxzCCRBY2NvdW50SWQBBDhEZXBvc2l0QmFsYW5jZQFVAQAYARRvd25lcgQBJEFjY291bnRJZAABNG93bmVyX2RlcG9zaXRVAQE4RGVwb3NpdEJhbGFuY2UAARRpdGVtczgBDHUzMgABOGl0ZW1fbWV0YWRhdGFzOAEMdTMyAAEwaXRlbV9jb25maWdzOAEMdTMyAAEoYXR0cmlidXRlczgBDHUzMgAAsQwMLHBhbGxldF9uZnRzFHR5cGVzIEJpdEZsYWdzBARUAbUMAAQADAE4Q29sbGVjdGlvblJvbGUAALUMDCxwYWxsZXRfbmZ0cxR0eXBlczhDb2xsZWN0aW9uUm9sZQABDBhJc3N1ZXIAAQAcRnJlZXplcgACABRBZG1pbgAEAAC5DAwscGFsbGV0X25mdHMUdHlwZXMsSXRlbURldGFpbHMMJEFjY291bnRJZAEEHERlcG9zaXQBvQwkQXBwcm92YWxzAcEMAAwBFG93bmVyBAEkQWNjb3VudElkAAEkYXBwcm92YWxzwQwBJEFwcHJvdmFscwABHGRlcG9zaXS9DAEcRGVwb3NpdAAAvQwMLHBhbGxldF9uZnRzFHR5cGVzLEl0ZW1EZXBvc2l0CDhEZXBvc2l0QmFsYW5jZQFVASRBY2NvdW50SWQBBAAIARxhY2NvdW50BAEkQWNjb3VudElkAAEYYW1vdW50VQEBOERlcG9zaXRCYWxhbmNlAADBDAxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX21hcDxCb3VuZGVkQlRyZWVNYXAMBEsBBARWAeAEUwAABADFDAE4QlRyZWVNYXA8SywgVj4AAMUMBCBCVHJlZU1hcAgESwEEBFYB4AAEAMkMAAAAyQwAAALNDADNDAAABAgE4ADRDAwscGFsbGV0X25mdHMUdHlwZXNIQ29sbGVjdGlvbk1ldGFkYXRhCBxEZXBvc2l0AVUBLFN0cmluZ0xpbWl0AAAIARxkZXBvc2l0VQEBHERlcG9zaXQAARBkYXRhQQEBbEJvdW5kZWRWZWM8dTgsIFN0cmluZ0xpbWl0PgAA1QwMLHBhbGxldF9uZnRzFHR5cGVzMEl0ZW1NZXRhZGF0YQgcRGVwb3NpdAHZDCxTdHJpbmdMaW1pdAAACAEcZGVwb3NpdNkMARxEZXBvc2l0AAEQZGF0YUEBAWxCb3VuZGVkVmVjPHU4LCBTdHJpbmdMaW1pdD4AANkMDCxwYWxsZXRfbmZ0cxR0eXBlc0xJdGVtTWV0YWRhdGFEZXBvc2l0CDhEZXBvc2l0QmFsYW5jZQFVASRBY2NvdW50SWQBBAAIARxhY2NvdW50jQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEYYW1vdW50VQEBOERlcG9zaXRCYWxhbmNlAADdDAAABBA44HkEeADhDAAABAhBAeUMAOUMDCxwYWxsZXRfbmZ0cxR0eXBlc0BBdHRyaWJ1dGVEZXBvc2l0CDhEZXBvc2l0QmFsYW5jZQFVASRBY2NvdW50SWQBBAAIARxhY2NvdW50jQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEYYW1vdW50VQEBOERlcG9zaXRCYWxhbmNlAADpDAxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX3NldDxCb3VuZGVkQlRyZWVTZXQIBFQBBARTAAAEAO0MASxCVHJlZVNldDxUPgAA7QwEIEJUcmVlU2V0BARUAQQABABdAQAAAPEMDCxwYWxsZXRfbmZ0cxR0eXBlcyxQZW5kaW5nU3dhcBAwQ29sbGVjdGlvbklkATgYSXRlbUlkAThYSXRlbVByaWNlV2l0aERpcmVjdGlvbgGRBCBEZWFkbGluZQE4ABABSGRlc2lyZWRfY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABMGRlc2lyZWRfaXRlbeABOE9wdGlvbjxJdGVtSWQ+AAEUcHJpY2WNBAF4T3B0aW9uPEl0ZW1QcmljZVdpdGhEaXJlY3Rpb24+AAEgZGVhZGxpbmU4ASBEZWFkbGluZQAA9QwMLHBhbGxldF9uZnRzFHR5cGVzIEJpdEZsYWdzBARUAfkMAAQAKAE0UGFsbGV0RmVhdHVyZQAA+QwMLHBhbGxldF9uZnRzFHR5cGVzNFBhbGxldEZlYXR1cmUAARAcVHJhZGluZwABAChBdHRyaWJ1dGVzAAIAJEFwcHJvdmFscwAEABRTd2FwcwAIAAD9DAwscGFsbGV0X25mdHMYcGFsbGV0FEVycm9yCARUAARJAAG0ME5vUGVybWlzc2lvbgAABOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uRFVua25vd25Db2xsZWN0aW9uAAEEdFRoZSBnaXZlbiBpdGVtIElEIGlzIHVua25vd24uNEFscmVhZHlFeGlzdHMAAgS4VGhlIGl0ZW0gSUQgaGFzIGFscmVhZHkgYmVlbiB1c2VkIGZvciBhbiBpdGVtLjxBcHByb3ZhbEV4cGlyZWQAAwQ5AVRoZSBhcHByb3ZhbCBoYWQgYSBkZWFkbGluZSB0aGF0IGV4cGlyZWQsIHNvIHRoZSBhcHByb3ZhbCBpc24ndCB2YWxpZCBhbnltb3JlLihXcm9uZ093bmVyAAQE6FRoZSBvd25lciB0dXJuZWQgb3V0IHRvIGJlIGRpZmZlcmVudCB0byB3aGF0IHdhcyBleHBlY3RlZC4oQmFkV2l0bmVzcwAFBBUBVGhlIHdpdG5lc3MgZGF0YSBnaXZlbiBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgY2hhaW4uRENvbGxlY3Rpb25JZEluVXNlAAYEfENvbGxlY3Rpb24gSUQgaXMgYWxyZWFkeSB0YWtlbi5QSXRlbXNOb25UcmFuc2ZlcmFibGUABwTISXRlbXMgd2l0aGluIHRoYXQgY29sbGVjdGlvbiBhcmUgbm9uLXRyYW5zZmVyYWJsZS4sTm90RGVsZWdhdGUACAScVGhlIHByb3ZpZGVkIGFjY291bnQgaXMgbm90IGEgZGVsZWdhdGUuNFdyb25nRGVsZWdhdGUACQT0VGhlIGRlbGVnYXRlIHR1cm5lZCBvdXQgdG8gYmUgZGlmZmVyZW50IHRvIHdoYXQgd2FzIGV4cGVjdGVkLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4oVW5hY2NlcHRlZAALBBkBVGhlIG5hbWVkIG93bmVyIGhhcyBub3Qgc2lnbmVkIG93bmVyc2hpcCBhY2NlcHRhbmNlIG9mIHRoZSBjb2xsZWN0aW9uLihJdGVtTG9ja2VkAAwEmFRoZSBpdGVtIGlzIGxvY2tlZCAobm9uLXRyYW5zZmVyYWJsZSkuUExvY2tlZEl0ZW1BdHRyaWJ1dGVzAA0EdEl0ZW0ncyBhdHRyaWJ1dGVzIGFyZSBsb2NrZWQuaExvY2tlZENvbGxlY3Rpb25BdHRyaWJ1dGVzAA4EjENvbGxlY3Rpb24ncyBhdHRyaWJ1dGVzIGFyZSBsb2NrZWQuSExvY2tlZEl0ZW1NZXRhZGF0YQAPBGhJdGVtJ3MgbWV0YWRhdGEgaXMgbG9ja2VkLmBMb2NrZWRDb2xsZWN0aW9uTWV0YWRhdGEAEASAQ29sbGVjdGlvbidzIG1ldGFkYXRhIGlzIGxvY2tlZC5ATWF4U3VwcGx5UmVhY2hlZAARBGxBbGwgaXRlbXMgaGF2ZSBiZWVuIG1pbnRlZC48TWF4U3VwcGx5TG9ja2VkABIEuFRoZSBtYXggc3VwcGx5IGlzIGxvY2tlZCBhbmQgY2FuJ3QgYmUgY2hhbmdlZC5ETWF4U3VwcGx5VG9vU21hbGwAEwRJAVRoZSBwcm92aWRlZCBtYXggc3VwcGx5IGlzIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBhbHJlYWR5IGhhcy4sVW5rbm93bkl0ZW0AFAR0VGhlIGdpdmVuIGl0ZW0gSUQgaXMgdW5rbm93bi4sVW5rbm93blN3YXAAFQRMU3dhcCBkb2Vzbid0IGV4aXN0LkBNZXRhZGF0YU5vdEZvdW5kABYEjFRoZSBnaXZlbiBpdGVtIGhhcyBubyBtZXRhZGF0YSBzZXQuREF0dHJpYnV0ZU5vdEZvdW5kABcEmFRoZSBwcm92aWRlZCBhdHRyaWJ1dGUgY2FuJ3QgYmUgZm91bmQuKE5vdEZvclNhbGUAGARUSXRlbSBpcyBub3QgZm9yIHNhbGUuJEJpZFRvb0xvdwAZBHBUaGUgcHJvdmlkZWQgYmlkIGlzIHRvbyBsb3cuUFJlYWNoZWRBcHByb3ZhbExpbWl0ABoEoFRoZSBpdGVtIGhhcyByZWFjaGVkIGl0cyBhcHByb3ZhbCBsaW1pdC48RGVhZGxpbmVFeHBpcmVkABsEhFRoZSBkZWFkbGluZSBoYXMgYWxyZWFkeSBleHBpcmVkLjRXcm9uZ0R1cmF0aW9uABwEMQFUaGUgZHVyYXRpb24gcHJvdmlkZWQgc2hvdWxkIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTWF4RGVhZGxpbmVEdXJhdGlvbmAuOE1ldGhvZERpc2FibGVkAB0EqFRoZSBtZXRob2QgaXMgZGlzYWJsZWQgYnkgc3lzdGVtIHNldHRpbmdzLjBXcm9uZ1NldHRpbmcAHgSIVGhlIHByb3ZpZGVkIHNldHRpbmcgY2FuJ3QgYmUgc2V0LlhJbmNvbnNpc3RlbnRJdGVtQ29uZmlnAB8EFQFJdGVtJ3MgY29uZmlnIGFscmVhZHkgZXhpc3RzIGFuZCBzaG91bGQgYmUgZXF1YWwgdG8gdGhlIHByb3ZpZGVkIG9uZS4gTm9Db25maWcAIATIQ29uZmlnIGZvciBhIGNvbGxlY3Rpb24gb3IgYW4gaXRlbSBjYW4ndCBiZSBmb3VuZC48Um9sZXNOb3RDbGVhcmVkACEEcFNvbWUgcm9sZXMgd2VyZSBub3QgY2xlYXJlZC44TWludE5vdFN0YXJ0ZWQAIgRkTWludCBoYXMgbm90IHN0YXJ0ZWQgeWV0LiRNaW50RW5kZWQAIwRcTWludCBoYXMgYWxyZWFkeSBlbmRlZC44QWxyZWFkeUNsYWltZWQAJATAVGhlIHByb3ZpZGVkIEl0ZW0gd2FzIGFscmVhZHkgdXNlZCBmb3IgY2xhaW1pbmcuNEluY29ycmVjdERhdGEAJQR8VGhlIHByb3ZpZGVkIGRhdGEgaXMgaW5jb3JyZWN0LixXcm9uZ09yaWdpbgAmBKxUaGUgZXh0cmluc2ljIHdhcyBzZW50IGJ5IHRoZSB3cm9uZyBvcmlnaW4uOFdyb25nU2lnbmF0dXJlACcEkFRoZSBwcm92aWRlZCBzaWduYXR1cmUgaXMgaW5jb3JyZWN0LkRJbmNvcnJlY3RNZXRhZGF0YQAoBKBUaGUgcHJvdmlkZWQgbWV0YWRhdGEgbWlnaHQgYmUgdG9vIGxvbmcuZE1heEF0dHJpYnV0ZXNMaW1pdFJlYWNoZWQAKQScQ2FuJ3Qgc2V0IG1vcmUgYXR0cmlidXRlcyBwZXIgb25lIGNhbGwuOFdyb25nTmFtZXNwYWNlACoE0FRoZSBwcm92aWRlZCBuYW1lc3BhY2UgaXNuJ3Qgc3VwcG9ydGVkIGluIHRoaXMgY2FsbC5IQ29sbGVjdGlvbk5vdEVtcHR5ACsEjENhbid0IGRlbGV0ZSBub24tZW1wdHkgY29sbGVjdGlvbnMuPFdpdG5lc3NSZXF1aXJlZAAsBJBUaGUgd2l0bmVzcyBkYXRhIHNob3VsZCBiZSBwcm92aWRlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuAQ0AAAQI/QEEAAUNAAAEDP0BBAQACQ0MNHBhbGxldF9hc3NldHMUdHlwZXM0QXNzZXRNZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBVQE0Qm91bmRlZFN0cmluZwENDQAUARxkZXBvc2l0VQEBOERlcG9zaXRCYWxhbmNlAAEQbmFtZQ0NATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9sDQ0BNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVuWQEBEGJvb2wAAA0NDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAEQ0MNHBhbGxldF9hc3NldHMYcGFsbGV0FEVycm9yCARUAARJAAFgKEJhbGFuY2VMb3cAAAQVAUFjY291bnQgYmFsYW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdHJhbnNmZXIgYW1vdW50LiROb0FjY291bnQAAQSQVGhlIGFjY291bnQgdG8gYWx0ZXIgZG9lcyBub3QgZXhpc3QuME5vUGVybWlzc2lvbgACBOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uHFVua25vd24AAwR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uGEZyb3plbgAEBHRUaGUgb3JpZ2luIGFjY291bnQgaXMgZnJvemVuLhRJblVzZQAFBHhUaGUgYXNzZXQgSUQgaXMgYWxyZWFkeSB0YWtlbi4oQmFkV2l0bmVzcwAGBGxJbnZhbGlkIHdpdG5lc3MgZGF0YSBnaXZlbi44TWluQmFsYW5jZVplcm8ABwSMTWluaW11bSBiYWxhbmNlIHNob3VsZCBiZSBub24temVyby5MVW5hdmFpbGFibGVDb25zdW1lcgAIDFkBVW5hYmxlIHRvIGluY3JlbWVudCB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIGNvdW50ZXJzIG9uIHRoZSBhY2NvdW50LiBFaXRoZXIgbm8gcHJvdmlkZXJNAXJlZmVyZW5jZSBleGlzdHMgdG8gYWxsb3cgYSBub24temVybyBiYWxhbmNlIG9mIGEgbm9uLXNlbGYtc3VmZmljaWVudCBhc3NldCwgb3Igb25l8GZld2VyIHRoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBoYXMgYmVlbiByZWFjaGVkLixCYWRNZXRhZGF0YQAJBFxJbnZhbGlkIG1ldGFkYXRhIGdpdmVuLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4gV291bGREaWUACwQ1AVRoZSBzb3VyY2UgYWNjb3VudCB3b3VsZCBub3Qgc3Vydml2ZSB0aGUgdHJhbnNmZXIgYW5kIGl0IG5lZWRzIHRvIHN0YXkgYWxpdmUuNEFscmVhZHlFeGlzdHMADASEVGhlIGFzc2V0LWFjY291bnQgYWxyZWFkeSBleGlzdHMuJE5vRGVwb3NpdAANBNRUaGUgYXNzZXQtYWNjb3VudCBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBkZXBvc2l0LiRXb3VsZEJ1cm4ADgTEVGhlIG9wZXJhdGlvbiB3b3VsZCByZXN1bHQgaW4gZnVuZHMgYmVpbmcgYnVybmVkLiRMaXZlQXNzZXQADwhZAVRoZSBhc3NldCBpcyBhIGxpdmUgYXNzZXQgYW5kIGlzIGFjdGl2ZWx5IGJlaW5nIHVzZWQuIFVzdWFsbHkgZW1pdCBmb3Igb3BlcmF0aW9ucyBzdWNoHQFhcyBgc3RhcnRfZGVzdHJveWAgd2hpY2ggcmVxdWlyZSB0aGUgYXNzZXQgdG8gYmUgaW4gYSBkZXN0cm95aW5nIHN0YXRlLjBBc3NldE5vdExpdmUAEATIVGhlIGFzc2V0IGlzIG5vdCBsaXZlLCBhbmQgbGlrZWx5IGJlaW5nIGRlc3Ryb3llZC48SW5jb3JyZWN0U3RhdHVzABEEsFRoZSBhc3NldCBzdGF0dXMgaXMgbm90IHRoZSBleHBlY3RlZCBzdGF0dXMuJE5vdEZyb3plbgASBNhUaGUgYXNzZXQgc2hvdWxkIGJlIGZyb3plbiBiZWZvcmUgdGhlIGdpdmVuIG9wZXJhdGlvbi44Q2FsbGJhY2tGYWlsZWQAEwSEQ2FsbGJhY2sgYWN0aW9uIHJlc3VsdGVkIGluIGVycm9yKEJhZEFzc2V0SWQAFATIVGhlIGFzc2V0IElEIG11c3QgYmUgZXF1YWwgdG8gdGhlIFtgTmV4dEFzc2V0SWRgXS48Q29udGFpbnNGcmVlemVzABUETQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBmcmVlemVzLjRDb250YWluc0hvbGRzABYERQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBob2xkcy48VG9vTWFueVJlc2VydmVzABcEgFRyaWVkIHNldHRpbmcgdG9vIG1hbnkgcmVzZXJ2ZXMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LhUNBBhPcHRpb24EBFQBCQ0BCBBOb25lAAAAEFNvbWUEAAkNAAABAAAZDQw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBc3NldE1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQFVATRCb3VuZGVkU3RyaW5nAR0NABQBHGRlcG9zaXRVAQE4RGVwb3NpdEJhbGFuY2UAARBuYW1lHQ0BNEJvdW5kZWRTdHJpbmcAARhzeW1ib2wdDQE0Qm91bmRlZFN0cmluZwABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5ZAQEQYm9vbAAAHQ0MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAAhDQw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXJyb3IIBFQABEkAAWAoQmFsYW5jZUxvdwAABBUBQWNjb3VudCBiYWxhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0cmFuc2ZlciBhbW91bnQuJE5vQWNjb3VudAABBJBUaGUgYWNjb3VudCB0byBhbHRlciBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4cVW5rbm93bgADBHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi4YRnJvemVuAAQEdFRoZSBvcmlnaW4gYWNjb3VudCBpcyBmcm96ZW4uFEluVXNlAAUEeFRoZSBhc3NldCBJRCBpcyBhbHJlYWR5IHRha2VuLihCYWRXaXRuZXNzAAYEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLjhNaW5CYWxhbmNlWmVybwAHBIxNaW5pbXVtIGJhbGFuY2Ugc2hvdWxkIGJlIG5vbi16ZXJvLkxVbmF2YWlsYWJsZUNvbnN1bWVyAAgMWQFVbmFibGUgdG8gaW5jcmVtZW50IHRoZSBjb25zdW1lciByZWZlcmVuY2UgY291bnRlcnMgb24gdGhlIGFjY291bnQuIEVpdGhlciBubyBwcm92aWRlck0BcmVmZXJlbmNlIGV4aXN0cyB0byBhbGxvdyBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgYSBub24tc2VsZi1zdWZmaWNpZW50IGFzc2V0LCBvciBvbmXwZmV3ZXIgdGhlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGhhcyBiZWVuIHJlYWNoZWQuLEJhZE1ldGFkYXRhAAkEXEludmFsaWQgbWV0YWRhdGEgZ2l2ZW4uKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLiBXb3VsZERpZQALBDUBVGhlIHNvdXJjZSBhY2NvdW50IHdvdWxkIG5vdCBzdXJ2aXZlIHRoZSB0cmFuc2ZlciBhbmQgaXQgbmVlZHMgdG8gc3RheSBhbGl2ZS40QWxyZWFkeUV4aXN0cwAMBIRUaGUgYXNzZXQtYWNjb3VudCBhbHJlYWR5IGV4aXN0cy4kTm9EZXBvc2l0AA0E1FRoZSBhc3NldC1hY2NvdW50IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRlcG9zaXQuJFdvdWxkQnVybgAOBMRUaGUgb3BlcmF0aW9uIHdvdWxkIHJlc3VsdCBpbiBmdW5kcyBiZWluZyBidXJuZWQuJExpdmVBc3NldAAPCFkBVGhlIGFzc2V0IGlzIGEgbGl2ZSBhc3NldCBhbmQgaXMgYWN0aXZlbHkgYmVpbmcgdXNlZC4gVXN1YWxseSBlbWl0IGZvciBvcGVyYXRpb25zIHN1Y2gdAWFzIGBzdGFydF9kZXN0cm95YCB3aGljaCByZXF1aXJlIHRoZSBhc3NldCB0byBiZSBpbiBhIGRlc3Ryb3lpbmcgc3RhdGUuMEFzc2V0Tm90TGl2ZQAQBMhUaGUgYXNzZXQgaXMgbm90IGxpdmUsIGFuZCBsaWtlbHkgYmVpbmcgZGVzdHJveWVkLjxJbmNvcnJlY3RTdGF0dXMAEQSwVGhlIGFzc2V0IHN0YXR1cyBpcyBub3QgdGhlIGV4cGVjdGVkIHN0YXR1cy4kTm90RnJvemVuABIE2FRoZSBhc3NldCBzaG91bGQgYmUgZnJvemVuIGJlZm9yZSB0aGUgZ2l2ZW4gb3BlcmF0aW9uLjhDYWxsYmFja0ZhaWxlZAATBIRDYWxsYmFjayBhY3Rpb24gcmVzdWx0ZWQgaW4gZXJyb3IoQmFkQXNzZXRJZAAUBMhUaGUgYXNzZXQgSUQgbXVzdCBiZSBlcXVhbCB0byB0aGUgW2BOZXh0QXNzZXRJZGBdLjxDb250YWluc0ZyZWV6ZXMAFQRNAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGZyZWV6ZXMuNENvbnRhaW5zSG9sZHMAFgRFAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGhvbGRzLjxUb29NYW55UmVzZXJ2ZXMAFwSAVHJpZWQgc2V0dGluZyB0b28gbWFueSByZXNlcnZlcy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuJQ0EGE9wdGlvbgQEVAEZDQEIEE5vbmUAAAAQU29tZQQAGQ0AAAEAACkNDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhR0eXBlcyBQb29sSW5mbwQsUG9vbEFzc2V0SWQBOAAEASBscF90b2tlbjgBLFBvb2xBc3NldElkAAAtDQxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24YcGFsbGV0FEVycm9yBARUAAFgQEludmFsaWRBc3NldFBhaXIAAAS4UHJvdmlkZWQgYXNzZXQgcGFpciBpcyBub3Qgc3VwcG9ydGVkIGZvciBwb29sLihQb29sRXhpc3RzAAEEUFBvb2wgYWxyZWFkeSBleGlzdHMuSFdyb25nRGVzaXJlZEFtb3VudAACBHREZXNpcmVkIGFtb3VudCBjYW4ndCBiZSB6ZXJvLmBBbW91bnRPbmVMZXNzVGhhbk1pbmltYWwAAwhJAVByb3ZpZGVkIGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0L2Fzc2V0J3M8bWluaW1hbCBhbW91bnQuYEFtb3VudFR3b0xlc3NUaGFuTWluaW1hbAAECEkBUHJvdmlkZWQgYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQvYXNzZXQnczxtaW5pbWFsIGFtb3VudC5oUmVzZXJ2ZUxlZnRMZXNzVGhhbk1pbmltYWwABQhNAVJlc2VydmUgbmVlZHMgdG8gYWx3YXlzIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdC9hc3NldCdzPG1pbmltYWwgYW1vdW50LkBBbW91bnRPdXRUb29IaWdoAAYEyERlc2lyZWQgYW1vdW50IGNhbid0IGJlIGVxdWFsIHRvIHRoZSBwb29sIHJlc2VydmUuMFBvb2xOb3RGb3VuZAAHBFxUaGUgcG9vbCBkb2Vzbid0IGV4aXN0LiBPdmVyZmxvdwAIBFRBbiBvdmVyZmxvdyBoYXBwZW5lZC6AQXNzZXRPbmVEZXBvc2l0RGlkTm90TWVldE1pbmltdW0ACQQpAVRoZSBtaW5pbWFsIGFtb3VudCByZXF1aXJlbWVudCBmb3IgdGhlIGZpcnN0IHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQugEFzc2V0VHdvRGVwb3NpdERpZE5vdE1lZXRNaW5pbXVtAAoELQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBzZWNvbmQgdG9rZW4gaW4gdGhlIHBhaXIgd2Fzbid0IG1ldC6MQXNzZXRPbmVXaXRoZHJhd2FsRGlkTm90TWVldE1pbmltdW0ACwQpAVRoZSBtaW5pbWFsIGFtb3VudCByZXF1aXJlbWVudCBmb3IgdGhlIGZpcnN0IHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQujEFzc2V0VHdvV2l0aGRyYXdhbERpZE5vdE1lZXRNaW5pbXVtAAwELQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBzZWNvbmQgdG9rZW4gaW4gdGhlIHBhaXIgd2Fzbid0IG1ldC5wT3B0aW1hbEFtb3VudExlc3NUaGFuRGVzaXJlZAANBLxPcHRpbWFsIGNhbGN1bGF0ZWQgYW1vdW50IGlzIGxlc3MgdGhhbiBkZXNpcmVkLmxJbnN1ZmZpY2llbnRMaXF1aWRpdHlNaW50ZWQADgR4SW5zdWZmaWNpZW50IGxpcXVpZGl0eSBtaW50ZWQuNFplcm9MaXF1aWRpdHkADwSIUmVxdWVzdGVkIGxpcXVpZGl0eSBjYW4ndCBiZSB6ZXJvLihaZXJvQW1vdW50ABAEVEFtb3VudCBjYW4ndCBiZSB6ZXJvLoxQcm92aWRlZE1pbmltdW1Ob3RTdWZmaWNpZW50Rm9yU3dhcAARBOxDYWxjdWxhdGVkIGFtb3VudCBvdXQgaXMgbGVzcyB0aGFuIHByb3ZpZGVkIG1pbmltdW0gYW1vdW50LoxQcm92aWRlZE1heGltdW1Ob3RTdWZmaWNpZW50Rm9yU3dhcAASBMxQcm92aWRlZCBtYXhpbXVtIGFtb3VudCBpcyBub3Qgc3VmZmljaWVudCBmb3Igc3dhcC4sSW52YWxpZFBhdGgAEwTUVGhlIHByb3ZpZGVkIHBhdGggbXVzdCBjb25zaXN0cyBvZiAyIGFzc2V0cyBhdCBsZWFzdC40Tm9uVW5pcXVlUGF0aAAUBMRUaGUgcHJvdmlkZWQgcGF0aCBtdXN0IGNvbnNpc3RzIG9mIHVuaXF1ZSBhc3NldHMuUEluY29ycmVjdFBvb2xBc3NldElkABUE7El0IHdhcyBub3QgcG9zc2libGUgdG8gZ2V0IG9yIGluY3JlbWVudCB0aGUgSWQgb2YgdGhlIHBvb2wuMEJlbG93TWluaW11bQAWBPBUaGUgZGVzdGluYXRpb24gYWNjb3VudCBjYW5ub3QgZXhpc3Qgd2l0aCB0aGUgc3dhcHBlZCBmdW5kcy4kUG9vbEVtcHR5ABcEMQFUaGUgcG9vbCBleGlzdHMgYnV0IGhhcyBubyBsaXF1aWRpdHkgKGF0IGxlYXN0IG9uZSBvZiB0aGUgcmVzZXJ2ZXMgaXMgemVybykuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LjENBBhSZXN1bHQIBFQBNQ0ERQEtDQEICE9rBAA1DQAAAAAMRXJyBAAtDQAAAQAANQ0AAAQIVQFVAQA5DQxUcGFsbGV0X2Fzc2V0c19mcmVlemVyGHBhbGxldBRFcnJvcggEVAAESQABBDhUb29NYW55RnJlZXplcwAABOhOdW1iZXIgb2YgZnJlZXplcyBvbiBhbiBhY2NvdW50IHdvdWxkIGV4Y2VlZCBgTWF4RnJlZXplc2AuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lj0NDFBwYWxsZXRfYXNzZXRzX2hvbGRlchhwYWxsZXQURXJyb3IIBFQABEkAAQQwVG9vTWFueUhvbGRzAAAEMQFOdW1iZXIgb2YgaG9sZHMgb24gYW4gYWNjb3VudCB3b3VsZCBleGNlZWQgdGhlIGNvdW50IG9mIGBSdW50aW1lSG9sZFJlYXNvbmAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LkENCDxwYWxsZXRfdHJlYXN1cnkgUHJvcG9zYWwIJEFjY291bnRJZAEEHEJhbGFuY2UBVQEAEAEgcHJvcG9zZXIEASRBY2NvdW50SWQAARR2YWx1ZVUBARxCYWxhbmNlAAEsYmVuZWZpY2lhcnkEASRBY2NvdW50SWQAARBib25kVQEBHEJhbGFuY2UAAEUNDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAD0EARhWZWM8VD4AAEkNCDxwYWxsZXRfdHJlYXN1cnksU3BlbmRTdGF0dXMUJEFzc2V0S2luZAHJBDBBc3NldEJhbGFuY2UBVQEsQmVuZWZpY2lhcnkBzQQsQmxvY2tOdW1iZXIBOCRQYXltZW50SWQBKAAYAShhc3NldF9raW5kyQQBJEFzc2V0S2luZAABGGFtb3VudFUBATBBc3NldEJhbGFuY2UAASxiZW5lZmljaWFyec0EASxCZW5lZmljaWFyeQABKHZhbGlkX2Zyb204ASxCbG9ja051bWJlcgABJGV4cGlyZV9hdDgBLEJsb2NrTnVtYmVyAAEYc3RhdHVzTQ0BXFBheW1lbnRTdGF0ZTxQYXltZW50SWQ+AABNDQg8cGFsbGV0X3RyZWFzdXJ5MFBheW1lbnRTdGF0ZQQISWQBKAEMHFBlbmRpbmcAAAAkQXR0ZW1wdGVkBAEIaWQoAQhJZAABABhGYWlsZWQAAgAAUQ0MPHBhbGxldF90cmVhc3VyeRhwYWxsZXQURXJyb3IIBFQABEkAASwwSW52YWxpZEluZGV4AAAErE5vIHByb3Bvc2FsLCBib3VudHkgb3Igc3BlbmQgYXQgdGhhdCBpbmRleC5AVG9vTWFueUFwcHJvdmFscwABBIBUb28gbWFueSBhcHByb3ZhbHMgaW4gdGhlIHF1ZXVlLlhJbnN1ZmZpY2llbnRQZXJtaXNzaW9uAAIIRQFUaGUgc3BlbmQgb3JpZ2luIGlzIHZhbGlkIGJ1dCB0aGUgYW1vdW50IGl0IGlzIGFsbG93ZWQgdG8gc3BlbmQgaXMgbG93ZXIgdGhhbiB0aGVMYW1vdW50IHRvIGJlIHNwZW50LkxQcm9wb3NhbE5vdEFwcHJvdmVkAAMEfFByb3Bvc2FsIGhhcyBub3QgYmVlbiBhcHByb3ZlZC5YRmFpbGVkVG9Db252ZXJ0QmFsYW5jZQAEBFEBVGhlIGJhbGFuY2Ugb2YgdGhlIGFzc2V0IGtpbmQgaXMgbm90IGNvbnZlcnRpYmxlIHRvIHRoZSBiYWxhbmNlIG9mIHRoZSBuYXRpdmUgYXNzZXQuMFNwZW5kRXhwaXJlZAAFBLBUaGUgc3BlbmQgaGFzIGV4cGlyZWQgYW5kIGNhbm5vdCBiZSBjbGFpbWVkLixFYXJseVBheW91dAAGBKRUaGUgc3BlbmQgaXMgbm90IHlldCBlbGlnaWJsZSBmb3IgcGF5b3V0LkBBbHJlYWR5QXR0ZW1wdGVkAAcEnFRoZSBwYXltZW50IGhhcyBhbHJlYWR5IGJlZW4gYXR0ZW1wdGVkLixQYXlvdXRFcnJvcgAIBMxUaGVyZSB3YXMgc29tZSBpc3N1ZSB3aXRoIHRoZSBtZWNoYW5pc20gb2YgcGF5bWVudC4wTm90QXR0ZW1wdGVkAAkEpFRoZSBwYXlvdXQgd2FzIG5vdCB5ZXQgYXR0ZW1wdGVkL2NsYWltZWQuMEluY29uY2x1c2l2ZQAKBMRUaGUgcGF5bWVudCBoYXMgbmVpdGhlciBmYWlsZWQgbm9yIHN1Y2NlZWRlZCB5ZXQuBHhFcnJvciBmb3IgdGhlIHRyZWFzdXJ5IHBhbGxldC5VDQAABAgE0QMAWQ0MYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlGFZvdGluZxQcQmFsYW5jZQFVASRBY2NvdW50SWQBBCxCbG9ja051bWJlcgE4JFBvbGxJbmRleAE4IE1heFZvdGVzAAEIHENhc3RpbmcEAF0NAchDYXN0aW5nPEJhbGFuY2UsIEJsb2NrTnVtYmVyLCBQb2xsSW5kZXgsIE1heFZvdGVzPgAAAChEZWxlZ2F0aW5nBAB1DQGsRGVsZWdhdGluZzxCYWxhbmNlLCBBY2NvdW50SWQsIEJsb2NrTnVtYmVyPgABAABdDQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUcQ2FzdGluZxAcQmFsYW5jZQFVASxCbG9ja051bWJlcgE4JFBvbGxJbmRleAE4IE1heFZvdGVzAAAMARR2b3Rlc2ENAdxCb3VuZGVkVmVjPChQb2xsSW5kZXgsIEFjY291bnRWb3RlPEJhbGFuY2U+KSwgTWF4Vm90ZXM+AAEsZGVsZWdhdGlvbnNtDQFQRGVsZWdhdGlvbnM8QmFsYW5jZT4AARRwcmlvcnENAXxQcmlvckxvY2s8QmxvY2tOdW1iZXIsIEJhbGFuY2U+AABhDQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAWUNBFMAAAQAaQ0BGFZlYzxUPgAAZQ0AAAQIONUEAGkNAAACZQ0AbQ0MYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxR0eXBlcyxEZWxlZ2F0aW9ucwQcQmFsYW5jZQFVAQAIARR2b3Rlc1UBARxCYWxhbmNlAAEcY2FwaXRhbFUBARxCYWxhbmNlAABxDQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUkUHJpb3JMb2NrCCxCbG9ja051bWJlcgE4HEJhbGFuY2UBVQEACAA4ASxCbG9ja051bWJlcgAAVQEBHEJhbGFuY2UAAHUNDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZShEZWxlZ2F0aW5nDBxCYWxhbmNlAVUBJEFjY291bnRJZAEELEJsb2NrTnVtYmVyATgAFAEcYmFsYW5jZVUBARxCYWxhbmNlAAEYdGFyZ2V0BAEkQWNjb3VudElkAAEoY29udmljdGlvbt0EAShDb252aWN0aW9uAAEsZGVsZWdhdGlvbnNtDQFQRGVsZWdhdGlvbnM8QmFsYW5jZT4AARRwcmlvcnENAXxQcmlvckxvY2s8QmxvY2tOdW1iZXIsIEJhbGFuY2U+AAB5DQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAX0NBFMAAAQAgQ0BGFZlYzxUPgAAfQ0AAAQI0QNVAQCBDQAAAn0NAIUNDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcYcGFsbGV0FEVycm9yCARUAARJAAEwKE5vdE9uZ29pbmcAAARQUG9sbCBpcyBub3Qgb25nb2luZy4gTm90Vm90ZXIAAQSsVGhlIGdpdmVuIGFjY291bnQgZGlkIG5vdCB2b3RlIG9uIHRoZSBwb2xsLjBOb1Blcm1pc3Npb24AAgTIVGhlIGFjdG9yIGhhcyBubyBwZXJtaXNzaW9uIHRvIGNvbmR1Y3QgdGhlIGFjdGlvbi48Tm9QZXJtaXNzaW9uWWV0AAMEWQFUaGUgYWN0b3IgaGFzIG5vIHBlcm1pc3Npb24gdG8gY29uZHVjdCB0aGUgYWN0aW9uIHJpZ2h0IG5vdyBidXQgd2lsbCBkbyBpbiB0aGUgZnV0dXJlLkRBbHJlYWR5RGVsZWdhdGluZwAEBIhUaGUgYWNjb3VudCBpcyBhbHJlYWR5IGRlbGVnYXRpbmcuNEFscmVhZHlWb3RpbmcABQhVAVRoZSBhY2NvdW50IGN1cnJlbnRseSBoYXMgdm90ZXMgYXR0YWNoZWQgdG8gaXQgYW5kIHRoZSBvcGVyYXRpb24gY2Fubm90IHN1Y2NlZWQgdW50aWygdGhlc2UgYXJlIHJlbW92ZWQgdGhyb3VnaCBgcmVtb3ZlX3ZvdGVgLkRJbnN1ZmZpY2llbnRGdW5kcwAGBPxUb28gaGlnaCBhIGJhbGFuY2Ugd2FzIHByb3ZpZGVkIHRoYXQgdGhlIGFjY291bnQgY2Fubm90IGFmZm9yZC40Tm90RGVsZWdhdGluZwAHBKBUaGUgYWNjb3VudCBpcyBub3QgY3VycmVudGx5IGRlbGVnYXRpbmcuIE5vbnNlbnNlAAgElERlbGVnYXRpb24gdG8gb25lc2VsZiBtYWtlcyBubyBzZW5zZS48TWF4Vm90ZXNSZWFjaGVkAAkEgE1heGltdW0gbnVtYmVyIG9mIHZvdGVzIHJlYWNoZWQuLENsYXNzTmVlZGVkAAoEOQFUaGUgY2xhc3MgbXVzdCBiZSBzdXBwbGllZCBzaW5jZSBpdCBpcyBub3QgZWFzaWx5IGRldGVybWluYWJsZSBmcm9tIHRoZSBzdGF0ZS4gQmFkQ2xhc3MACwSEVGhlIGNsYXNzIElEIHN1cHBsaWVkIGlzIGludmFsaWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LokNDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzOFJlZmVyZW5kdW1JbmZvIBxUcmFja0lkAdEDNFJ1bnRpbWVPcmlnaW4B1QMYTW9tZW50ATgQQ2FsbAHpBBxCYWxhbmNlAVUBFFRhbGx5AfUIJEFjY291bnRJZAEEPFNjaGVkdWxlQWRkcmVzcwHMARgcT25nb2luZwQAjQ0BjQFSZWZlcmVuZHVtU3RhdHVzPFRyYWNrSWQsIFJ1bnRpbWVPcmlnaW4sIE1vbWVudCwgQ2FsbCwgQmFsYW5jZSwgVGFsbHksCkFjY291bnRJZCwgU2NoZWR1bGVBZGRyZXNzLD4AAAAgQXBwcm92ZWQMADgBGE1vbWVudAAAlQ0BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AACVDQGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAQAgUmVqZWN0ZWQMADgBGE1vbWVudAAAlQ0BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AACVDQGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAgAkQ2FuY2VsbGVkDAA4ARhNb21lbnQAAJUNAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAAlQ0BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAMAIFRpbWVkT3V0DAA4ARhNb21lbnQAAJUNAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAAlQ0BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAQAGEtpbGxlZAQAOAEYTW9tZW50AAUAAI0NDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzQFJlZmVyZW5kdW1TdGF0dXMgHFRyYWNrSWQB0QM0UnVudGltZU9yaWdpbgHVAxhNb21lbnQBOBBDYWxsAekEHEJhbGFuY2UBVQEUVGFsbHkB9QgkQWNjb3VudElkAQQ8U2NoZWR1bGVBZGRyZXNzAcwALAEUdHJhY2vRAwEcVHJhY2tJZAABGG9yaWdpbtUDATRSdW50aW1lT3JpZ2luAAEgcHJvcG9zYWzpBAEQQ2FsbAABJGVuYWN0bWVudPEEAVBEaXNwYXRjaFRpbWU8TW9tZW50PgABJHN1Ym1pdHRlZDgBGE1vbWVudAABSHN1Ym1pc3Npb25fZGVwb3NpdJENAWxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4AAUBkZWNpc2lvbl9kZXBvc2l0lQ0BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAEgZGVjaWRpbmeZDQF4T3B0aW9uPERlY2lkaW5nU3RhdHVzPE1vbWVudD4+AAEUdGFsbHn1CAEUVGFsbHkAASBpbl9xdWV1ZVkBARBib29sAAEUYWxhcm2hDQGET3B0aW9uPChNb21lbnQsIFNjaGVkdWxlQWRkcmVzcyk+AACRDQxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlcxxEZXBvc2l0CCRBY2NvdW50SWQBBBxCYWxhbmNlAVUBAAgBDHdobwQBJEFjY291bnRJZAABGGFtb3VudFUBARxCYWxhbmNlAACVDQQYT3B0aW9uBARUAZENAQgQTm9uZQAAABBTb21lBACRDQAAAQAAmQ0EGE9wdGlvbgQEVAGdDQEIEE5vbmUAAAAQU29tZQQAnQ0AAAEAAJ0NDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzOERlY2lkaW5nU3RhdHVzBCxCbG9ja051bWJlcgE4AAgBFHNpbmNlOAEsQmxvY2tOdW1iZXIAAShjb25maXJtaW5n4AFMT3B0aW9uPEJsb2NrTnVtYmVyPgAAoQ0EGE9wdGlvbgQEVAGlDQEIEE5vbmUAAAAQU29tZQQApQ0AAAEAAKUNAAAECDjMAKkNDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBrQ0EUwAABACxDQEYVmVjPFQ+AACtDQAABAg4VQEAsQ0AAAKtDQC1DQAAArkNALkNAAAECNEDvQ0AvQ0MQHBhbGxldF9yZWZlcmVuZGEUdHlwZXMwVHJhY2tEZXRhaWxzDBxCYWxhbmNlAVUBGE1vbWVudAE4EE5hbWUBmQkAJAEQbmFtZZkJARBOYW1lAAEwbWF4X2RlY2lkaW5nOAEMdTMyAAFAZGVjaXNpb25fZGVwb3NpdFUBARxCYWxhbmNlAAE4cHJlcGFyZV9wZXJpb2Q4ARhNb21lbnQAATxkZWNpc2lvbl9wZXJpb2Q4ARhNb21lbnQAAThjb25maXJtX3BlcmlvZDgBGE1vbWVudAABUG1pbl9lbmFjdG1lbnRfcGVyaW9kOAEYTW9tZW50AAEwbWluX2FwcHJvdmFswQ0BFEN1cnZlAAEsbWluX3N1cHBvcnTBDQEUQ3VydmUAAMENDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzFEN1cnZlAAEMQExpbmVhckRlY3JlYXNpbmcMARhsZW5ndGgZBQEcUGVyYmlsbAABFGZsb29yGQUBHFBlcmJpbGwAARBjZWlsGQUBHFBlcmJpbGwAAABEU3RlcHBlZERlY3JlYXNpbmcQARRiZWdpbhkFARxQZXJiaWxsAAEMZW5kGQUBHFBlcmJpbGwAARBzdGVwGQUBHFBlcmJpbGwAARhwZXJpb2QZBQEcUGVyYmlsbAABAChSZWNpcHJvY2FsDAEYZmFjdG9yxQ0BIEZpeGVkSTY0AAEgeF9vZmZzZXTFDQEgRml4ZWRJNjQAASB5X29mZnNldMUNASBGaXhlZEk2NAACAADFDQw0c3BfYXJpdGhtZXRpYyxmaXhlZF9wb2ludCBGaXhlZEk2NAAABADJDQEMaTY0AADJDQAABQwAzQ0MQHBhbGxldF9yZWZlcmVuZGEYcGFsbGV0FEVycm9yCARUAARJAAE4KE5vdE9uZ29pbmcAAARoUmVmZXJlbmR1bSBpcyBub3Qgb25nb2luZy4oSGFzRGVwb3NpdAABBLhSZWZlcmVuZHVtJ3MgZGVjaXNpb24gZGVwb3NpdCBpcyBhbHJlYWR5IHBhaWQuIEJhZFRyYWNrAAIEnFRoZSB0cmFjayBpZGVudGlmaWVyIGdpdmVuIHdhcyBpbnZhbGlkLhBGdWxsAAMEMQFUaGVyZSBhcmUgYWxyZWFkeSBhIGZ1bGwgY29tcGxlbWVudCBvZiByZWZlcmVuZGEgaW4gcHJvZ3Jlc3MgZm9yIHRoaXMgdHJhY2suKFF1ZXVlRW1wdHkABASAVGhlIHF1ZXVlIG9mIHRoZSB0cmFjayBpcyBlbXB0eS40QmFkUmVmZXJlbmR1bQAFBORUaGUgcmVmZXJlbmR1bSBpbmRleCBwcm92aWRlZCBpcyBpbnZhbGlkIGluIHRoaXMgY29udGV4dC4sTm90aGluZ1RvRG8ABgSsVGhlcmUgd2FzIG5vdGhpbmcgdG8gZG8gaW4gdGhlIGFkdmFuY2VtZW50LhxOb1RyYWNrAAcEoE5vIHRyYWNrIGV4aXN0cyBmb3IgdGhlIHByb3Bvc2FsIG9yaWdpbi4oVW5maW5pc2hlZAAIBAEBQW55IGRlcG9zaXQgY2Fubm90IGJlIHJlZnVuZGVkIHVudGlsIGFmdGVyIHRoZSBkZWNpc2lvbiBpcyBvdmVyLjBOb1Blcm1pc3Npb24ACQSoVGhlIGRlcG9zaXQgcmVmdW5kZXIgaXMgbm90IHRoZSBkZXBvc2l0b3IuJE5vRGVwb3NpdAAKBMxUaGUgZGVwb3NpdCBjYW5ub3QgYmUgcmVmdW5kZWQgc2luY2Ugbm9uZSB3YXMgbWFkZS4kQmFkU3RhdHVzAAsE0FRoZSByZWZlcmVuZHVtIHN0YXR1cyBpcyBpbnZhbGlkIGZvciB0aGlzIG9wZXJhdGlvbi5AUHJlaW1hZ2VOb3RFeGlzdAAMBHBUaGUgcHJlaW1hZ2UgZG9lcyBub3QgZXhpc3QuhFByZWltYWdlU3RvcmVkV2l0aERpZmZlcmVudExlbmd0aAANBBUBVGhlIHByZWltYWdlIGlzIHN0b3JlZCB3aXRoIGEgZGlmZmVyZW50IGxlbmd0aCB0aGFuIHRoZSBvbmUgcHJvdmlkZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LtENDEBwYWxsZXRfd2hpdGVsaXN0GHBhbGxldBRFcnJvcgQEVAABFExVbmF2YWlsYWJsZVByZUltYWdlAAAEyFRoZSBwcmVpbWFnZSBvZiB0aGUgY2FsbCBoYXNoIGNvdWxkIG5vdCBiZSBsb2FkZWQuPFVuZGVjb2RhYmxlQ2FsbAABBHhUaGUgY2FsbCBjb3VsZCBub3QgYmUgZGVjb2RlZC5gSW52YWxpZENhbGxXZWlnaHRXaXRuZXNzAAIE7FRoZSB3ZWlnaHQgb2YgdGhlIGRlY29kZWQgY2FsbCB3YXMgaGlnaGVyIHRoYW4gdGhlIHdpdG5lc3MuUENhbGxJc05vdFdoaXRlbGlzdGVkAAMEdFRoZSBjYWxsIHdhcyBub3Qgd2hpdGVsaXN0ZWQuWENhbGxBbHJlYWR5V2hpdGVsaXN0ZWQABASgVGhlIGNhbGwgd2FzIGFscmVhZHkgd2hpdGVsaXN0ZWQ7IE5vLU9wLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7VDQg8cGFsbGV0X2JvdW50aWVzGEJvdW50eQwkQWNjb3VudElkAQQcQmFsYW5jZQFVASxCbG9ja051bWJlcgE4ABgBIHByb3Bvc2VyBAEkQWNjb3VudElkAAEUdmFsdWVVAQEcQmFsYW5jZQABDGZlZVUBARxCYWxhbmNlAAE8Y3VyYXRvcl9kZXBvc2l0VQEBHEJhbGFuY2UAARBib25kVQEBHEJhbGFuY2UAARhzdGF0dXPZDQGQQm91bnR5U3RhdHVzPEFjY291bnRJZCwgQmxvY2tOdW1iZXI+AADZDQg8cGFsbGV0X2JvdW50aWVzMEJvdW50eVN0YXR1cwgkQWNjb3VudElkAQQsQmxvY2tOdW1iZXIBOAEcIFByb3Bvc2VkAAAAIEFwcHJvdmVkAAEAGEZ1bmRlZAACADxDdXJhdG9yUHJvcG9zZWQEARxjdXJhdG9yBAEkQWNjb3VudElkAAMAGEFjdGl2ZQgBHGN1cmF0b3IEASRBY2NvdW50SWQAASh1cGRhdGVfZHVlOAEsQmxvY2tOdW1iZXIABAA0UGVuZGluZ1BheW91dAwBHGN1cmF0b3IEASRBY2NvdW50SWQAASxiZW5lZmljaWFyeQQBJEFjY291bnRJZAABJHVubG9ja19hdDgBLEJsb2NrTnVtYmVyAAUATEFwcHJvdmVkV2l0aEN1cmF0b3IEARxjdXJhdG9yBAEkQWNjb3VudElkAAYAAN0NDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAA4Q0MPHBhbGxldF9ib3VudGllcxhwYWxsZXQURXJyb3IIBFQABEkAATBwSW5zdWZmaWNpZW50UHJvcG9zZXJzQmFsYW5jZQAABHhQcm9wb3NlcidzIGJhbGFuY2UgaXMgdG9vIGxvdy4wSW52YWxpZEluZGV4AAEEkE5vIHByb3Bvc2FsIG9yIGJvdW50eSBhdCB0aGF0IGluZGV4LjBSZWFzb25Ub29CaWcAAgSEVGhlIHJlYXNvbiBnaXZlbiBpcyBqdXN0IHRvbyBiaWcuQFVuZXhwZWN0ZWRTdGF0dXMAAwSAVGhlIGJvdW50eSBzdGF0dXMgaXMgdW5leHBlY3RlZC44UmVxdWlyZUN1cmF0b3IABARcUmVxdWlyZSBib3VudHkgY3VyYXRvci4wSW52YWxpZFZhbHVlAAUEVEludmFsaWQgYm91bnR5IHZhbHVlLihJbnZhbGlkRmVlAAYETEludmFsaWQgYm91bnR5IGZlZS40UGVuZGluZ1BheW91dAAHCGxBIGJvdW50eSBwYXlvdXQgaXMgcGVuZGluZy74VG8gY2FuY2VsIHRoZSBib3VudHksIHlvdSBtdXN0IHVuYXNzaWduIGFuZCBzbGFzaCB0aGUgY3VyYXRvci4kUHJlbWF0dXJlAAgERQFUaGUgYm91bnRpZXMgY2Fubm90IGJlIGNsYWltZWQvY2xvc2VkIGJlY2F1c2UgaXQncyBzdGlsbCBpbiB0aGUgY291bnRkb3duIHBlcmlvZC5QSGFzQWN0aXZlQ2hpbGRCb3VudHkACQQFAVRoZSBib3VudHkgY2Fubm90IGJlIGNsb3NlZCBiZWNhdXNlIGl0IGhhcyBhY3RpdmUgY2hpbGQgYm91bnRpZXMuNFRvb01hbnlRdWV1ZWQACgSYVG9vIG1hbnkgYXBwcm92YWxzIGFyZSBhbHJlYWR5IHF1ZXVlZC4sTm90UHJvcG9zZXIACwScVXNlciBpcyBub3QgdGhlIHByb3Bvc2VyIG9mIHRoZSBib3VudHkuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LuUNCFRwYWxsZXRfY2hpbGRfYm91bnRpZXMsQ2hpbGRCb3VudHkMJEFjY291bnRJZAEEHEJhbGFuY2UBVQEsQmxvY2tOdW1iZXIBOAAUATRwYXJlbnRfYm91bnR5OAEsQm91bnR5SW5kZXgAARR2YWx1ZVUBARxCYWxhbmNlAAEMZmVlVQEBHEJhbGFuY2UAATxjdXJhdG9yX2RlcG9zaXRVAQEcQmFsYW5jZQABGHN0YXR1c+kNAaRDaGlsZEJvdW50eVN0YXR1czxBY2NvdW50SWQsIEJsb2NrTnVtYmVyPgAA6Q0IVHBhbGxldF9jaGlsZF9ib3VudGllc0RDaGlsZEJvdW50eVN0YXR1cwgkQWNjb3VudElkAQQsQmxvY2tOdW1iZXIBOAEQFEFkZGVkAAAAPEN1cmF0b3JQcm9wb3NlZAQBHGN1cmF0b3IEASRBY2NvdW50SWQAAQAYQWN0aXZlBAEcY3VyYXRvcgQBJEFjY291bnRJZAACADRQZW5kaW5nUGF5b3V0DAEcY3VyYXRvcgQBJEFjY291bnRJZAABLGJlbmVmaWNpYXJ5BAEkQWNjb3VudElkAAEkdW5sb2NrX2F0OAEsQmxvY2tOdW1iZXIAAwAA7Q0MVHBhbGxldF9jaGlsZF9ib3VudGllcxhwYWxsZXQURXJyb3IEBFQAAQxUUGFyZW50Qm91bnR5Tm90QWN0aXZlAAAEpFRoZSBwYXJlbnQgYm91bnR5IGlzIG5vdCBpbiBhY3RpdmUgc3RhdGUuZEluc3VmZmljaWVudEJvdW50eUJhbGFuY2UAAQTkVGhlIGJvdW50eSBiYWxhbmNlIGlzIG5vdCBlbm91Z2ggdG8gYWRkIG5ldyBjaGlsZC1ib3VudHkuUFRvb01hbnlDaGlsZEJvdW50aWVzAAIEDQFOdW1iZXIgb2YgY2hpbGQgYm91bnRpZXMgZXhjZWVkcyBsaW1pdCBgTWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudGAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LvENDERwYWxsZXRfYXNzZXRfcmF0ZRhwYWxsZXQURXJyb3IEBFQAAQxAVW5rbm93bkFzc2V0S2luZAAABHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi40QWxyZWFkeUV4aXN0cwABBFEBVGhlIGdpdmVuIGFzc2V0IElEIGFscmVhZHkgaGFzIGFuIGFzc2lnbmVkIGNvbnZlcnNpb24gcmF0ZSBhbmQgY2Fubm90IGJlIHJlLWNyZWF0ZWQuIE92ZXJmbG93AAIEzE92ZXJmbG93IG9jdXJyZWQgd2hlbiBjYWxjdWxhdGluZyB0aGUgaW52ZXJzZSByYXRlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC71DQhscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGEJvdW50eRgkQWNjb3VudElkAQQcQmFsYW5jZQFVASRBc3NldEtpbmQByQQQSGFzaAE8JFBheW1lbnRJZAEoLEJlbmVmaWNpYXJ5Ac0EABABKGFzc2V0X2tpbmTJBAEkQXNzZXRLaW5kAAEUdmFsdWVVAQEcQmFsYW5jZQABIG1ldGFkYXRhPAEQSGFzaAABGHN0YXR1c/kNAbxCb3VudHlTdGF0dXM8QWNjb3VudElkLCBQYXltZW50SWQsIEJlbmVmaWNpYXJ5PgAA+Q0IbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczBCb3VudHlTdGF0dXMMJEFjY291bnRJZAEEJFBheW1lbnRJZAEoLEJlbmVmaWNpYXJ5Ac0EARhARnVuZGluZ0F0dGVtcHRlZAgBHGN1cmF0b3IEASRBY2NvdW50SWQAAThwYXltZW50X3N0YXR1c/0NAVxQYXltZW50U3RhdGU8UGF5bWVudElkPgAAABhGdW5kZWQEARxjdXJhdG9yBAEkQWNjb3VudElkAAEAREN1cmF0b3JVbmFzc2lnbmVkAAIAGEFjdGl2ZQQBHGN1cmF0b3IEASRBY2NvdW50SWQAAwA8UmVmdW5kQXR0ZW1wdGVkCAEcY3VyYXRvco0BAURPcHRpb248QWNjb3VudElkPgABOHBheW1lbnRfc3RhdHVz/Q0BXFBheW1lbnRTdGF0ZTxQYXltZW50SWQ+AAQAPFBheW91dEF0dGVtcHRlZAwBHGN1cmF0b3IEASRBY2NvdW50SWQAASxiZW5lZmljaWFyec0EASxCZW5lZmljaWFyeQABOHBheW1lbnRfc3RhdHVz/Q0BXFBheW1lbnRTdGF0ZTxQYXltZW50SWQ+AAUAAP0NCGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMwUGF5bWVudFN0YXRlBAhJZAEoARAcUGVuZGluZwAAACRBdHRlbXB0ZWQEAQhpZCgBCElkAAEAGEZhaWxlZAACACRTdWNjZWVkZWQAAwAAAQ4IbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllcyxDaGlsZEJvdW50eRQkQWNjb3VudElkAQQcQmFsYW5jZQFVARBIYXNoATwkUGF5bWVudElkASgsQmVuZWZpY2lhcnkBzQQAEAE0cGFyZW50X2JvdW50eTgBLEJvdW50eUluZGV4AAEUdmFsdWVVAQEcQmFsYW5jZQABIG1ldGFkYXRhPAEQSGFzaAABGHN0YXR1c/kNAbxCb3VudHlTdGF0dXM8QWNjb3VudElkLCBQYXltZW50SWQsIEJlbmVmaWNpYXJ5PgAABQ4AAAQIOOAACQ4UNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQAVQEBKEY6OkJhbGFuY2UAAA0ODGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMYcGFsbGV0FEVycm9yCARUAARJAAFIMEludmFsaWRJbmRleAAABHxObyBjaGlsZC0vYm91bnR5IGF0IHRoYXQgaW5kZXguMFJlYXNvblRvb0JpZwABBIRUaGUgcmVhc29uIGdpdmVuIGlzIGp1c3QgdG9vIGJpZy4wSW52YWxpZFZhbHVlAAIEcEludmFsaWQgY2hpbGQtL2JvdW50eSB2YWx1ZS5YRmFpbGVkVG9Db252ZXJ0QmFsYW5jZQADCF0BVGhlIGJhbGFuY2Ugb2YgdGhlIGFzc2V0IGtpbmQgaXMgbm90IGNvbnZlcnRpYmxlIHRvIHRoZSBiYWxhbmNlIG9mIHRoZSBuYXRpdmUgYXNzZXQgZm9yhGFzc2VydGluZyB0aGUgb3JpZ2luIHBlcm1pc3Npb25zLkBVbmV4cGVjdGVkU3RhdHVzAAQEnFRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyB1bmV4cGVjdGVkLjhSZXF1aXJlQ3VyYXRvcgAFBHhSZXF1aXJlIGNoaWxkLS9ib3VudHkgY3VyYXRvci5YSW5zdWZmaWNpZW50UGVybWlzc2lvbgAGCEUBVGhlIHNwZW5kIG9yaWdpbiBpcyB2YWxpZCBidXQgdGhlIGFtb3VudCBpdCBpcyBhbGxvd2VkIHRvIHNwZW5kIGlzIGxvd2VyIHRoYW4gdGhlRHJlcXVlc3RlZCBhbW91bnQuMEZ1bmRpbmdFcnJvcgAHBLxUaGVyZSB3YXMgaXNzdWUgd2l0aCBmdW5kaW5nIHRoZSBjaGlsZC0vYm91bnR5LixSZWZ1bmRFcnJvcgAIBMRUaGVyZSB3YXMgaXNzdWUgd2l0aCByZWZ1bmRpbmcgdGhlIGNoaWxkLS9ib3VudHkuLFBheW91dEVycm9yAAkATEZ1bmRpbmdJbmNvbmNsdXNpdmUACgSwQ2hpbGQtL2JvdW50eSBmdW5kaW5nIGhhcyBub3QgY29uY2x1ZGVkIHlldC5IUmVmdW5kSW5jb25jbHVzaXZlAAsErENoaWxkLS9ib3VudHkgcmVmdW5kIGhhcyBub3QgY29uY2x1ZGVkIHlldC5IUGF5b3V0SW5jb25jbHVzaXZlAAwErENoaWxkLS9ib3VudHkgcGF5b3V0IGhhcyBub3QgY29uY2x1ZGVkIHlldC5URmFpbGVkVG9Db252ZXJ0U291cmNlAA0IVQFUaGUgY2hpbGQtL2JvdW50eSBvciBmdW5kaW5nIHNvdXJjZSBhY2NvdW50IGNvdWxkIG5vdCBiZSBkZXJpdmVkIGZyb20gdGhlIGluZGV4ZXMgYW5kLGFzc2V0IGtpbmQuUEhhc0FjdGl2ZUNoaWxkQm91bnR5AA4EIQFUaGUgcGFyZW50IGJvdW50eSBjYW5ub3QgYmUgY2xvc2VkIGJlY2F1c2UgaXQgaGFzIGFjdGl2ZSBjaGlsZCBib3VudGllcy5QVG9vTWFueUNoaWxkQm91bnRpZXMADwQNAU51bWJlciBvZiBjaGlsZCBib3VudGllcyBleGNlZWRzIGxpbWl0IGBNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50YC5cSW5zdWZmaWNpZW50Qm91bnR5VmFsdWUAEAT4VGhlIHBhcmVudCBib3VudHkgdmFsdWUgaXMgbm90IGVub3VnaCB0byBhZGQgbmV3IGNoaWxkLWJvdW50eS5AUHJlaW1hZ2VOb3RFeGlzdAARBHBUaGUgcHJlaW1hZ2UgZG9lcyBub3QgZXhpc3QuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LhEODChwYWxsZXRfZGFwGHBhbGxldBRFcnJvcgQEVAABCEBVbmtub3duQnVkZ2V0S2V5AAAEHQFBIGtleSBpbiB0aGUgYnVkZ2V0IGFsbG9jYXRpb24gZG9lcyBub3QgbWF0Y2ggYW55IHJlZ2lzdGVyZWQgcmVjaXBpZW50LjhCdWRnZXROb3RFeGFjdAABBORCdWRnZXQgYWxsb2NhdGlvbiBwZXJjZW50YWdlcyBkbyBub3Qgc3VtIHRvIGV4YWN0bHkgMTAwJS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuFQ4AAAIZDgAZDgAABAzBAwQZBQAdDghccGFsbGV0X25vbWluYXRpb25fcG9vbHMoUG9vbE1lbWJlcgQEVAAAEAEccG9vbF9pZDgBGFBvb2xJZAABGHBvaW50c1UBATBCYWxhbmNlT2Y8VD4AAXBsYXN0X3JlY29yZGVkX3Jld2FyZF9jb3VudGVyCQUBQFQ6OlJld2FyZENvdW50ZXIAATh1bmJvbmRpbmdfZXJhcyEOAeBCb3VuZGVkQlRyZWVNYXA8RXJhSW5kZXgsIEJhbGFuY2VPZjxUPiwgVDo6TWF4VW5ib25kaW5nPgAAIQ4MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgFVAQRTAAAEACUOAThCVHJlZU1hcDxLLCBWPgAAJQ4EIEJUcmVlTWFwCARLATgEVgFVAQAEALENAAAAKQ4IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzPEJvbmRlZFBvb2xJbm5lcgQEVAAAFAEoY29tbWlzc2lvbi0OATRDb21taXNzaW9uPFQ+AAE4bWVtYmVyX2NvdW50ZXI4AQx1MzIAARhwb2ludHNVAQEwQmFsYW5jZU9mPFQ+AAEUcm9sZXM1DgFcUG9vbFJvbGVzPFQ6OkFjY291bnRJZD4AARRzdGF0ZUkFASRQb29sU3RhdGUAAC0OCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyhDb21taXNzaW9uBARUAAAUARxjdXJyZW50YQUBfE9wdGlvbjwoUGVyYmlsbCwgVDo6QWNjb3VudElkKT4AAQxtYXgxCQE8T3B0aW9uPFBlcmJpbGw+AAEsY2hhbmdlX3JhdGUxDgG8T3B0aW9uPENvbW1pc3Npb25DaGFuZ2VSYXRlPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AATR0aHJvdHRsZV9mcm9t4AFkT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQ+PgABQGNsYWltX3Blcm1pc3Npb25tBQG8T3B0aW9uPENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb248VDo6QWNjb3VudElkPj4AADEOBBhPcHRpb24EBFQBaQUBCBBOb25lAAAAEFNvbWUEAGkFAAABAAA1DghccGFsbGV0X25vbWluYXRpb25fcG9vbHMkUG9vbFJvbGVzBCRBY2NvdW50SWQBBAAQASRkZXBvc2l0b3IEASRBY2NvdW50SWQAARByb290jQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEkbm9taW5hdG9yjQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEcYm91bmNlco0BAURPcHRpb248QWNjb3VudElkPgAAOQ4IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzKFJld2FyZFBvb2wEBFQAABQBcGxhc3RfcmVjb3JkZWRfcmV3YXJkX2NvdW50ZXIJBQFAVDo6UmV3YXJkQ291bnRlcgABbGxhc3RfcmVjb3JkZWRfdG90YWxfcGF5b3V0c1UBATBCYWxhbmNlT2Y8VD4AAVR0b3RhbF9yZXdhcmRzX2NsYWltZWRVAQEwQmFsYW5jZU9mPFQ+AAFgdG90YWxfY29tbWlzc2lvbl9wZW5kaW5nVQEBMEJhbGFuY2VPZjxUPgABYHRvdGFsX2NvbW1pc3Npb25fY2xhaW1lZFUBATBCYWxhbmNlT2Y8VD4AAD0OCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBTdWJQb29scwQEVAAACAEYbm9fZXJhQQ4BNFVuYm9uZFBvb2w8VD4AASB3aXRoX2VyYUUOAQEBQm91bmRlZEJUcmVlTWFwPEVyYUluZGV4LCBVbmJvbmRQb29sPFQ+LCBUb3RhbFVuYm9uZGluZ1Bvb2xzPFQ+PgAAQQ4IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzKFVuYm9uZFBvb2wEBFQAAAgBGHBvaW50c1UBATBCYWxhbmNlT2Y8VD4AARxiYWxhbmNlVQEBMEJhbGFuY2VPZjxUPgAARQ4MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgFBDgRTAAAEAEkOAThCVHJlZU1hcDxLLCBWPgAASQ4EIEJUcmVlTWFwCARLATgEVgFBDgAEAE0OAAAATQ4AAAJRDgBRDgAABAg4QQ4AVQ4MXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldBRFcnJvcgQEVAABmDBQb29sTm90Rm91bmQAAASIQSAoYm9uZGVkKSBwb29sIGlkIGRvZXMgbm90IGV4aXN0LkhQb29sTWVtYmVyTm90Rm91bmQAAQRsQW4gYWNjb3VudCBpcyBub3QgYSBtZW1iZXIuSFJld2FyZFBvb2xOb3RGb3VuZAACBCEBQSByZXdhcmQgcG9vbCBkb2VzIG5vdCBleGlzdC4gSW4gYWxsIGNhc2VzIHRoaXMgaXMgYSBzeXN0ZW0gbG9naWMgZXJyb3IuQFN1YlBvb2xzTm90Rm91bmQAAwRoQSBzdWIgcG9vbCBkb2VzIG5vdCBleGlzdC5kQWNjb3VudEJlbG9uZ3NUb090aGVyUG9vbAAECE0BQW4gYWNjb3VudCBpcyBhbHJlYWR5IGRlbGVnYXRpbmcgaW4gYW5vdGhlciBwb29sLiBBbiBhY2NvdW50IG1heSBvbmx5IGJlbG9uZyB0byBvbmU8cG9vbCBhdCBhIHRpbWUuOEZ1bGx5VW5ib25kaW5nAAUIPQFUaGUgbWVtYmVyIGlzIGZ1bGx5IHVuYm9uZGVkIChhbmQgdGh1cyBjYW5ub3QgYWNjZXNzIHRoZSBib25kZWQgYW5kIHJld2FyZCBwb29sqGFueW1vcmUgdG8sIGZvciBleGFtcGxlLCBjb2xsZWN0IHJld2FyZHMpLkRNYXhVbmJvbmRpbmdMaW1pdAAGBAkBVGhlIG1lbWJlciBjYW5ub3QgdW5ib25kIGZ1cnRoZXIgY2h1bmtzIGR1ZSB0byByZWFjaGluZyB0aGUgbGltaXQuRENhbm5vdFdpdGhkcmF3QW55AAcETQFOb25lIG9mIHRoZSBmdW5kcyBjYW4gYmUgd2l0aGRyYXduIHlldCBiZWNhdXNlIHRoZSBib25kaW5nIGR1cmF0aW9uIGhhcyBub3QgcGFzc2VkLkRNaW5pbXVtQm9uZE5vdE1ldAAIFCkBVGhlIGFtb3VudCBkb2VzIG5vdCBtZWV0IHRoZSBtaW5pbXVtIGJvbmQgdG8gZWl0aGVyIGpvaW4gb3IgY3JlYXRlIGEgcG9vbC4AVQFUaGUgZGVwb3NpdG9yIGNhbiBuZXZlciB1bmJvbmQgdG8gYSB2YWx1ZSBsZXNzIHRoYW4gYFBhbGxldDo6ZGVwb3NpdG9yX21pbl9ib25kYC4gVGhlXQFjYWxsZXIgZG9lcyBub3QgaGF2ZSBub21pbmF0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgcG9vbC4gTWVtYmVycyBjYW4gbmV2ZXIgdW5ib25kIHRvIGFodmFsdWUgYmVsb3cgYE1pbkpvaW5Cb25kYC4wT3ZlcmZsb3dSaXNrAAkEIQFUaGUgdHJhbnNhY3Rpb24gY291bGQgbm90IGJlIGV4ZWN1dGVkIGR1ZSB0byBvdmVyZmxvdyByaXNrIGZvciB0aGUgcG9vbC40Tm90RGVzdHJveWluZwAKCF0BQSBwb29sIG11c3QgYmUgaW4gW2BQb29sU3RhdGU6OkRlc3Ryb3lpbmdgXSBpbiBvcmRlciBmb3IgdGhlIGRlcG9zaXRvciB0byB1bmJvbmQgb3IgZm9yuG90aGVyIG1lbWJlcnMgdG8gYmUgcGVybWlzc2lvbmxlc3NseSB1bmJvbmRlZC4wTm90Tm9taW5hdG9yAAsE9FRoZSBjYWxsZXIgZG9lcyBub3QgaGF2ZSBub21pbmF0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgcG9vbC5UTm90S2lja2VyT3JEZXN0cm95aW5nAAwEPQFFaXRoZXIgYSkgdGhlIGNhbGxlciBjYW5ub3QgbWFrZSBhIHZhbGlkIGtpY2sgb3IgYikgdGhlIHBvb2wgaXMgbm90IGRlc3Ryb3lpbmcuHE5vdE9wZW4ADQRwVGhlIHBvb2wgaXMgbm90IG9wZW4gdG8gam9pbiBNYXhQb29scwAOBIRUaGUgc3lzdGVtIGlzIG1heGVkIG91dCBvbiBwb29scy44TWF4UG9vbE1lbWJlcnMADwScVG9vIG1hbnkgbWVtYmVycyBpbiB0aGUgcG9vbCBvciBzeXN0ZW0uRENhbk5vdENoYW5nZVN0YXRlABAEiFRoZSBwb29scyBzdGF0ZSBjYW5ub3QgYmUgY2hhbmdlZC5URG9lc05vdEhhdmVQZXJtaXNzaW9uABEEuFRoZSBjYWxsZXIgZG9lcyBub3QgaGF2ZSBhZGVxdWF0ZSBwZXJtaXNzaW9ucy5UTWV0YWRhdGFFeGNlZWRzTWF4TGVuABIErE1ldGFkYXRhIGV4Y2VlZHMgW2BDb25maWc6Ok1heE1ldGFkYXRhTGVuYF0kRGVmZW5zaXZlBABZDgE4RGVmZW5zaXZlRXJyb3IAEwgxAVNvbWUgZXJyb3Igb2NjdXJyZWQgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuLiBUaGlzIHNob3VsZCBiZSByZXBvcnRlZCB0byB0aGUwbWFpbnRhaW5lcnMunFBhcnRpYWxVbmJvbmROb3RBbGxvd2VkUGVybWlzc2lvbmxlc3NseQAUBLxQYXJ0aWFsIHVuYm9uZGluZyBub3cgYWxsb3dlZCBwZXJtaXNzaW9ubGVzc2x5LlxNYXhDb21taXNzaW9uUmVzdHJpY3RlZAAVBB0BVGhlIHBvb2wncyBtYXggY29tbWlzc2lvbiBjYW5ub3QgYmUgc2V0IGhpZ2hlciB0aGFuIHRoZSBleGlzdGluZyB2YWx1ZS5gQ29tbWlzc2lvbkV4Y2VlZHNNYXhpbXVtABYE7FRoZSBzdXBwbGllZCBjb21taXNzaW9uIGV4Y2VlZHMgdGhlIG1heCBhbGxvd2VkIGNvbW1pc3Npb24ueENvbW1pc3Npb25FeGNlZWRzR2xvYmFsTWF4aW11bQAXBOhUaGUgc3VwcGxpZWQgY29tbWlzc2lvbiBleGNlZWRzIGdsb2JhbCBtYXhpbXVtIGNvbW1pc3Npb24uZENvbW1pc3Npb25DaGFuZ2VUaHJvdHRsZWQAGAQJAU5vdCBlbm91Z2ggYmxvY2tzIGhhdmUgc3VycGFzc2VkIHNpbmNlIHRoZSBsYXN0IGNvbW1pc3Npb24gdXBkYXRlLnhDb21taXNzaW9uQ2hhbmdlUmF0ZU5vdEFsbG93ZWQAGQQBAVRoZSBzdWJtaXR0ZWQgY2hhbmdlcyB0byBjb21taXNzaW9uIGNoYW5nZSByYXRlIGFyZSBub3QgYWxsb3dlZC5MTm9QZW5kaW5nQ29tbWlzc2lvbgAaBKBUaGVyZSBpcyBubyBwZW5kaW5nIGNvbW1pc3Npb24gdG8gY2xhaW0uWE5vQ29tbWlzc2lvbkN1cnJlbnRTZXQAGwSMTm8gY29tbWlzc2lvbiBjdXJyZW50IGhhcyBiZWVuIHNldC4sUG9vbElkSW5Vc2UAHARkUG9vbCBpZCBjdXJyZW50bHkgaW4gdXNlLjRJbnZhbGlkUG9vbElkAB0EnFBvb2wgaWQgcHJvdmlkZWQgaXMgbm90IGNvcnJlY3QvdXNhYmxlLkxCb25kRXh0cmFSZXN0cmljdGVkAB4E/EJvbmRpbmcgZXh0cmEgaXMgcmVzdHJpY3RlZCB0byB0aGUgZXhhY3QgcGVuZGluZyByZXdhcmQgYW1vdW50LjxOb3RoaW5nVG9BZGp1c3QAHwSwTm8gaW1iYWxhbmNlIGluIHRoZSBFRCBkZXBvc2l0IGZvciB0aGUgcG9vbC44Tm90aGluZ1RvU2xhc2gAIATMTm8gc2xhc2ggcGVuZGluZyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIHRoZSBtZW1iZXIuLFNsYXNoVG9vTG93ACEEqFRoZSBzbGFzaCBhbW91bnQgaXMgdG9vIGxvdyB0byBiZSBhcHBsaWVkLjxBbHJlYWR5TWlncmF0ZWQAIgQVAVRoZSBwb29sIG9yIG1lbWJlciBkZWxlZ2F0aW9uIGhhcyBhbHJlYWR5IG1pZ3JhdGVkIHRvIGRlbGVnYXRlIHN0YWtlLixOb3RNaWdyYXRlZAAjBBUBVGhlIHBvb2wgb3IgbWVtYmVyIGRlbGVnYXRpb24gaGFzIG5vdCBtaWdyYXRlZCB5ZXQgdG8gZGVsZWdhdGUgc3Rha2UuME5vdFN1cHBvcnRlZAAkBPBUaGlzIGNhbGwgaXMgbm90IGFsbG93ZWQgaW4gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHBhbGxldC4oUmVzdHJpY3RlZAAlCFEBQWNjb3VudCBpcyByZXN0cmljdGVkIGZyb20gcGFydGljaXBhdGlvbiBpbiBwb29scy4gVGhpcyBtYXkgaGFwcGVuIGlmIHRoZSBhY2NvdW50IGlzfHN0YWtpbmcgaW4gYW5vdGhlciB3YXkgYWxyZWFkeS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuWQ4MXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldDhEZWZlbnNpdmVFcnJvcgABHGhOb3RFbm91Z2hTcGFjZUluVW5ib25kUG9vbAAAADBQb29sTm90Rm91bmQAAQBIUmV3YXJkUG9vbE5vdEZvdW5kAAIAQFN1YlBvb2xzTm90Rm91bmQAAwBwQm9uZGVkU3Rhc2hLaWxsZWRQcmVtYXR1cmVseQAEAFREZWxlZ2F0aW9uVW5zdXBwb3J0ZWQABQA8U2xhc2hOb3RBcHBsaWVkAAYAAF0ODEBwYWxsZXRfYmFnc19saXN0EGxpc3QQTm9kZQgEVAAESQAAFAEIaWQEATBUOjpBY2NvdW50SWQAARBwcmV2jQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEQbmV4dI0BAVBPcHRpb248VDo6QWNjb3VudElkPgABJGJhZ191cHBlcigBIFQ6OlNjb3JlAAEUc2NvcmUoASBUOjpTY29yZQAAYQ4MQHBhbGxldF9iYWdzX2xpc3QQbGlzdAxCYWcIBFQABEkAAAgBEGhlYWSNAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARB0YWlsjQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AABlDgAAAigAaQ4MQHBhbGxldF9iYWdzX2xpc3QYcGFsbGV0FEVycm9yCARUAARJAAEIEExpc3QEAG0OASRMaXN0RXJyb3IAAAS0QSBlcnJvciBpbiB0aGUgbGlzdCBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24uGExvY2tlZAABBNhDb3VsZCBub3QgdXBkYXRlIGEgbm9kZSwgYmVjYXVzZSB0aGUgcGFsbGV0IGlzIGxvY2tlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQubQ4MQHBhbGxldF9iYWdzX2xpc3QQbGlzdCRMaXN0RXJyb3IAARQkRHVwbGljYXRlAAAAKE5vdEhlYXZpZXIAAQAwTm90SW5TYW1lQmFnAAIAME5vZGVOb3RGb3VuZAADABhMb2NrZWQABAAAcQ4AAAQI/PwAdQ4MYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxR0eXBlcyhEZWxlZ2F0aW9uBARUAAAIARRhZ2VudAQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4AAHkODGBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmcUdHlwZXMsQWdlbnRMZWRnZXIEBFQAABABFHBheWVlBAEwVDo6QWNjb3VudElkAAE8dG90YWxfZGVsZWdhdGVkUQEBMEJhbGFuY2VPZjxUPgABVHVuY2xhaW1lZF93aXRoZHJhd2Fsc1EBATBCYWxhbmNlT2Y8VD4AATRwZW5kaW5nX3NsYXNoUQEBMEJhbGFuY2VPZjxUPgAAfQ4MYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxhwYWxsZXQURXJyb3IEBFQAATAoTm90QWxsb3dlZAAABKhUaGUgYWNjb3VudCBjYW5ub3QgcGVyZm9ybSB0aGlzIG9wZXJhdGlvbi44QWxyZWFkeVN0YWtpbmcAAQS4QW4gZXhpc3Rpbmcgc3Rha2VyIGNhbm5vdCBwZXJmb3JtIHRoaXMgYWN0aW9uLmBJbnZhbGlkUmV3YXJkRGVzdGluYXRpb24AAgTUUmV3YXJkIERlc3RpbmF0aW9uIGNhbm5vdCBiZSBzYW1lIGFzIGBBZ2VudGAgYWNjb3VudC5ESW52YWxpZERlbGVnYXRpb24AAxSIRGVsZWdhdGlvbiBjb25kaXRpb25zIGFyZSBub3QgbWV0LgBMUG9zc2libGUgaXNzdWVzIGFyZWwxKSBDYW5ub3QgZGVsZWdhdGUgdG8gc2VsZiykMikgQ2Fubm90IGRlbGVnYXRlIHRvIG11bHRpcGxlIGRlbGVnYXRlcy44Tm90RW5vdWdoRnVuZHMABAQBAVRoZSBhY2NvdW50IGRvZXMgbm90IGhhdmUgZW5vdWdoIGZ1bmRzIHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi4gTm90QWdlbnQABQSATm90IGFuIGV4aXN0aW5nIGBBZ2VudGAgYWNjb3VudC4wTm90RGVsZWdhdG9yAAYEYE5vdCBhIERlbGVnYXRvciBhY2NvdW50LiBCYWRTdGF0ZQAHBIhTb21lIGNvcnJ1cHRpb24gaW4gaW50ZXJuYWwgc3RhdGUuOFVuYXBwbGllZFNsYXNoAAgE3FVuYXBwbGllZCBwZW5kaW5nIHNsYXNoIHJlc3RyaWN0cyBvcGVyYXRpb24gb24gYEFnZW50YC44Tm90aGluZ1RvU2xhc2gACQSsYEFnZW50YCBoYXMgbm8gcGVuZGluZyBzbGFzaCB0byBiZSBhcHBsaWVkLjhXaXRoZHJhd0ZhaWxlZAAKBLBGYWlsZWQgdG8gd2l0aGRyYXcgYW1vdW50IGZyb20gQ29yZSBTdGFraW5nLjBOb3RTdXBwb3J0ZWQACwScT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBwYWxsZXQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LoEOAAAECIUOOACFDgh4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50SFZhbGlkYXRvclNldFJlcG9ydAQkQWNjb3VudElkAQQAEAFEbmV3X3ZhbGlkYXRvcl9zZXRdAQE4VmVjPEFjY291bnRJZD4AAQhpZDgBDHUzMgABLHBydW5lX3VwX3Rv4AFQT3B0aW9uPFNlc3Npb25JbmRleD4AASBsZWZ0b3ZlclkBARBib29sAACJDgx4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50GHBhbGxldBRFcnJvcgQEVAABFDRYY21TZW5kRmFpbGVkAAAEuEZhaWxlZCB0byBzZW5kIFhDTSBtZXNzYWdlIHRvIHRoZSBSZWxheSBDaGFpbi4wTm90VmFsaWRhdG9yAAEUxFRoZSBvcmlnaW4gYWNjb3VudCBpcyBub3QgYSByZWdpc3RlcmVkIHZhbGlkYXRvci4AWQFPbmx5IGFjY291bnRzIHRoYXQgaGF2ZSBjYWxsZWQgYHZhbGlkYXRlKClgIGNhbiBzZXQgb3IgcHVyZ2Ugc2Vzc2lvbiBrZXlzLiBXaGVuIGNhbGxlZEkBdmlhIGEgc3Rha2luZyBwcm94eSwgdGhlIG9yaWdpbiBpcyB0aGUgZGVsZWdhdGluZyBhY2NvdW50IChzdGFzaCksIHdoaWNoIG11c3QgYmUgYVRyZWdpc3RlcmVkIHZhbGlkYXRvci4sSW52YWxpZEtleXMAAgRFAVRoZSBzZXNzaW9uIGtleXMgY291bGQgbm90IGJlIGRlY29kZWQgYXMgdGhlIGV4cGVjdGVkIFJlbGF5Q2hhaW5TZXNzaW9uS2V5cyB0eXBlLjBJbnZhbGlkUHJvb2YAAwS0SW52YWxpZCBvd25lcnNoaXAgcHJvb2YgZm9yIHRoZSBzZXNzaW9uIGtleXMuPEZlZXNFeGNlZWRlZE1heAAEBLREZWxpdmVyeSBmZWVzIGV4Y2VlZGVkIHRoZSBzcGVjaWZpZWQgbWF4aW11bS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQujQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGRDgRTAAAEAJkOARhWZWM8VD4AAJEOAAAEDAQolQ4AlQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAXQEBGFZlYzxUPgAAmQ4AAAKRDgCdDgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABABdAQEYVmVjPFQ+AAChDgyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHBhbGxldBRFcnJvcgQEVAABDCBGYWxsYmFjawAABIRUcmlnZ2VyaW5nIHRoZSBgRmFsbGJhY2tgIGZhaWxlZC48VW5leHBlY3RlZFBoYXNlAAEEQFVuZXhwZWN0ZWQgcGhhc2UgU25hcHNob3QAAgRkU25hcHNob3Qgd2FzIHVuYXZhaWxhYmxlLgQNAUVycm9yIG9mIHRoZSBwYWxsZXQgdGhhdCBjYW4gYmUgcmV0dXJuZWQgaW4gcmVzcG9uc2UgdG8gZGlzcGF0Y2hlcy6lDhCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzNFZhbGlkU29sdXRpb24AAQgEWAAAAARZAAEAAKkODExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBrQ4EUwAABAC1DgEYVmVjPFQ+AACtDgAABAgEsQ4AsQ4QkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllchRpbXBsczxQYXJ0aWFsQmFja2luZ3MAAAgBFHRvdGFsVQEBPEV4dGVuZGVkQmFsYW5jZQABHGJhY2tlcnM4AQx1MzIAALUOAAACrQ4AuQ4QkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllchRpbXBscxhTdGF0dXMAAQgcT25nb2luZwQAOAEkUGFnZUluZGV4AAAAHE5vdGhpbmcAAQAAvQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHBDgRTAAAEAMUOARhWZWM8VD4AAMEOAAAECATNBQDFDgAAAsEOAMkOAAAEDDgEOADNDgyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHNpZ25lZEhTdWJtaXNzaW9uTWV0YWRhdGEEBFQAABQBHGRlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAEMZmVlVQEBMEJhbGFuY2VPZjxUPgABGHJld2FyZFUBATBCYWxhbmNlT2Y8VD4AATRjbGFpbWVkX3Njb3JlzQUBNEVsZWN0aW9uU2NvcmUAARRwYWdlc9EOAWhCb3VuZGVkVmVjPGJvb2wsIFQ6OlBhZ2VzPgAA0Q4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFZAQRTAAAEANUOARhWZWM8VD4AANUOAAACWQEA2Q4QkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhzaWduZWQYcGFsbGV0FEVycm9yBARUAAEkOFBoYXNlTm90U2lnbmVkAAAEYFRoZSBwaGFzZSBpcyBub3Qgc2lnbmVkLiREdXBsaWNhdGUAAQR4VGhlIHN1Ym1pc3Npb24gaXMgYSBkdXBsaWNhdGUuJFF1ZXVlRnVsbAACBEhUaGUgcXVldWUgaXMgZnVsbC4wQmFkUGFnZUluZGV4AAMEgFRoZSBwYWdlIGluZGV4IGlzIG91dCBvZiBib3VuZHMuNE5vdFJlZ2lzdGVyZWQABAR4VGhlIGFjY291bnQgaXMgbm90IHJlZ2lzdGVyZWQuME5vU3VibWlzc2lvbgAFBFBObyBzdWJtaXNzaW9uIGZvdW5kLjBSb3VuZE5vdE92ZXIABgRYUm91bmQgaXMgbm90IHlldCBvdmVyLjhCYWRXaXRuZXNzRGF0YQAHBGhCYWQgd2l0bmVzcyBkYXRhIHByb3ZpZGVkLlBUb29NYW55SW52dWxuZXJhYmxlcwAIBLBUb28gbWFueSBpbnZ1bG5lcmFibGUgYWNjb3VudHMgYXJlIHByb3ZpZGVkLASAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7dDgxQcGFsbGV0X3N0YWtpbmdfYXN5bmMYbGVkZ2VyNFN0YWtpbmdMZWRnZXIEBFQAABABFHN0YXNoBAEwVDo6QWNjb3VudElkAAEUdG90YWxRAQEwQmFsYW5jZU9mPFQ+AAEYYWN0aXZlUQEBMEJhbGFuY2VPZjxUPgABJHVubG9ja2luZ/EGAfBCb3VuZGVkVmVjPFVubG9ja0NodW5rPEJhbGFuY2VPZjxUPj4sIFQ6Ok1heFVubG9ja2luZ0NodW5rcz4AAOEOCFBwYWxsZXRfc3Rha2luZ19hc3luYyxOb21pbmF0aW9ucwQEVAAADAEcdGFyZ2V0c5UOAbRCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgTWF4Tm9taW5hdGlvbnNPZjxUPj4AATBzdWJtaXR0ZWRfaW44ASBFcmFJbmRleAABKHN1cHByZXNzZWRZAQEQYm9vbAAA5Q4IUHBhbGxldF9zdGFraW5nX2FzeW5jNEFjdGl2ZUVyYUluZm8AAAgBFGluZGV4OAEgRXJhSW5kZXgAARRzdGFydPwBLE9wdGlvbjx1NjQ+AADpDgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAcwEUwAABACNCQEYVmVjPFQ+AADtDggoc3Bfc3Rha2luZ1RQYWdlZEV4cG9zdXJlTWV0YWRhdGEEHEJhbGFuY2UBVQEAEAEUdG90YWxRAQEcQmFsYW5jZQABDG93blEBARxCYWxhbmNlAAE8bm9taW5hdG9yX2NvdW50OAEMdTMyAAEocGFnZV9jb3VudDgBEFBhZ2UAAPEOEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0TEJvdW5kZWRFeHBvc3VyZVBhZ2UEBFQAAAQA9Q4BoEV4cG9zdXJlUGFnZTxUOjpBY2NvdW50SWQsIEJhbGFuY2VPZjxUPj4AAPUOCChzcF9zdGFraW5nMEV4cG9zdXJlUGFnZQgkQWNjb3VudElkAQQcQmFsYW5jZQFVAQAIAShwYWdlX3RvdGFsUQEBHEJhbGFuY2UAARhvdGhlcnP5DgGsVmVjPEluZGl2aWR1YWxFeHBvc3VyZTxBY2NvdW50SWQsIEJhbGFuY2U+PgAA+Q4AAAL9DgD9Dggoc3Bfc3Rha2luZ0hJbmRpdmlkdWFsRXhwb3N1cmUIJEFjY291bnRJZAEEHEJhbGFuY2UBVQEACAEMd2hvBAEkQWNjb3VudElkAAEUdmFsdWVRAQEcQmFsYW5jZQAAAQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAE4BFMAAAQAPQQBGFZlYzxUPgAABQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jPEVyYVJld2FyZFBvaW50cwQEVAAACAEUdG90YWw4ASxSZXdhcmRQb2ludAABKGluZGl2aWR1YWwJDwH4Qm91bmRlZEJUcmVlTWFwPFQ6OkFjY291bnRJZCwgUmV3YXJkUG9pbnQsIFQ6Ok1heFZhbGlkYXRvclNldD4AAAkPDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfbWFwPEJvdW5kZWRCVHJlZU1hcAwESwEEBFYBOARTAAAEAA0PAThCVHJlZU1hcDxLLCBWPgAADQ8EIEJUcmVlTWFwCARLAQQEVgE4AAQAgQUAAAARDwxQcGFsbGV0X3N0YWtpbmdfYXN5bmMgc2xhc2hpbmc0T2ZmZW5jZVJlY29yZAQkQWNjb3VudElkAQQAFAEgcmVwb3J0ZXKNAQFET3B0aW9uPEFjY291bnRJZD4AATByZXBvcnRlZF9lcmE4ASBFcmFJbmRleAABNGV4cG9zdXJlX3BhZ2U4AQx1MzIAAThzbGFzaF9mcmFjdGlvbhkFARxQZXJiaWxsAAFQcHJpb3Jfc2xhc2hfZnJhY3Rpb24ZBQEcUGVyYmlsbAAAFQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAE4BFMAAAQAPQQBGFZlYzxUPgAAGQ8AAAQMOAQRDwAdDwAABAg4/QYAIQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jOFVuYXBwbGllZFNsYXNoBARUAAAUASR2YWxpZGF0b3IEATBUOjpBY2NvdW50SWQAAQxvd25VAQEwQmFsYW5jZU9mPFQ+AAEYb3RoZXJzJQ8BEQFXZWFrQm91bmRlZFZlYzwoVDo6QWNjb3VudElkLCBCYWxhbmNlT2Y8VD4pLCBUOjpNYXhFeHBvc3VyZVBhZ2VTaXplPgABIHJlcG9ydGVyjQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEYcGF5b3V0VQEBMEJhbGFuY2VPZjxUPgAAJQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAHBBQRTAAAEAMUFARhWZWM8VD4AACkPDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB0QYEUwAABADNBgEYVmVjPFQ+AAAtDwAABAgZBVUBADEPCFBwYWxsZXRfc3Rha2luZ19hc3luYzhTbmFwc2hvdFN0YXR1cwQkQWNjb3VudElkAQQBDBxPbmdvaW5nBAAEASRBY2NvdW50SWQAAAAgQ29uc3VtZWQAAQAcV2FpdGluZwACAAA1DwxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX3NldDxCb3VuZGVkQlRyZWVTZXQIBFQBBARTAAAEAO0MASxCVHJlZVNldDxUPgAAOQ8QUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQsUHJ1bmluZ1N0ZXAAASRARXJhc1N0YWtlcnNQYWdlZAAAAExFcmFzU3Rha2Vyc092ZXJ2aWV3AAEASEVyYXNWYWxpZGF0b3JQcmVmcwACADhDbGFpbWVkUmV3YXJkcwADAExFcmFzVmFsaWRhdG9yUmV3YXJkAAQAQEVyYXNSZXdhcmRQb2ludHMABQBMU2luZ2xlRW50cnlDbGVhbnVwcwAGAExWYWxpZGF0b3JTbGFzaEluRXJhAAcAcEVyYXNWYWxpZGF0b3JJbmNlbnRpdmVXZWlnaHQACAAAPQ8QUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQURXJyb3IEBFQAAZg0Tm90Q29udHJvbGxlcgAABGROb3QgYSBjb250cm9sbGVyIGFjY291bnQuIE5vdFN0YXNoAAEEUE5vdCBhIHN0YXNoIGFjY291bnQuNEFscmVhZHlCb25kZWQAAgRgU3Rhc2ggaXMgYWxyZWFkeSBib25kZWQuNEFscmVhZHlQYWlyZWQAAwR0Q29udHJvbGxlciBpcyBhbHJlYWR5IHBhaXJlZC4wRW1wdHlUYXJnZXRzAAQEYFRhcmdldHMgY2Fubm90IGJlIGVtcHR5LjhEdXBsaWNhdGVJbmRleAAFBEBEdXBsaWNhdGUgaW5kZXguSEludmFsaWRTbGFzaFJlY29yZAAGBFxTbGFzaCByZWNvcmQgbm90IGZvdW5kLkBJbnN1ZmZpY2llbnRCb25kAAcMNQFDYW5ub3QgYm9uZCwgbm9taW5hdGUgb3IgdmFsaWRhdGUgd2l0aCB2YWx1ZSBsZXNzIHRoYW4gdGhlIG1pbmltdW0gZGVmaW5lZCBieT0BZ292ZXJuYW5jZSAoc2VlIGBNaW5WYWxpZGF0b3JCb25kYCBhbmQgYE1pbk5vbWluYXRvckJvbmRgKS4gSWYgdW5ib25kaW5nIGlzIHRoZRUBaW50ZW50aW9uLCBgY2hpbGxgIGZpcnN0IHRvIHJlbW92ZSBvbmUncyByb2xlIGFzIHZhbGlkYXRvci9ub21pbmF0b3IuME5vTW9yZUNodW5rcwAIBJBDYW4gbm90IHNjaGVkdWxlIG1vcmUgdW5sb2NrIGNodW5rcy40Tm9VbmxvY2tDaHVuawAJBKBDYW4gbm90IHJlYm9uZCB3aXRob3V0IHVubG9ja2luZyBjaHVua3MuMEZ1bmRlZFRhcmdldAAKBMhBdHRlbXB0aW5nIHRvIHRhcmdldCBhIHN0YXNoIHRoYXQgc3RpbGwgaGFzIGZ1bmRzLkhJbnZhbGlkRXJhVG9SZXdhcmQACwRYSW52YWxpZCBlcmEgdG8gcmV3YXJkLmhJbnZhbGlkTnVtYmVyT2ZOb21pbmF0aW9ucwAMBHhJbnZhbGlkIG51bWJlciBvZiBub21pbmF0aW9ucy44QWxyZWFkeUNsYWltZWQADQQJAVJld2FyZHMgZm9yIHRoaXMgZXJhIGhhdmUgYWxyZWFkeSBiZWVuIGNsYWltZWQgZm9yIHRoaXMgdmFsaWRhdG9yLixJbnZhbGlkUGFnZQAOBIRObyBub21pbmF0b3JzIGV4aXN0IG9uIHRoaXMgcGFnZS5USW5jb3JyZWN0SGlzdG9yeURlcHRoAA8EwEluY29ycmVjdCBwcmV2aW91cyBoaXN0b3J5IGRlcHRoIGlucHV0IHByb3ZpZGVkLiBCYWRTdGF0ZQAQBDkBSW50ZXJuYWwgc3RhdGUgaGFzIGJlY29tZSBzb21laG93IGNvcnJ1cHRlZCBhbmQgdGhlIG9wZXJhdGlvbiBjYW5ub3QgY29udGludWUuOFRvb01hbnlUYXJnZXRzABEElFRvbyBtYW55IG5vbWluYXRpb24gdGFyZ2V0cyBzdXBwbGllZC4kQmFkVGFyZ2V0ABIEPQFBIG5vbWluYXRpb24gdGFyZ2V0IHdhcyBzdXBwbGllZCB0aGF0IHdhcyBibG9ja2VkIG9yIG90aGVyd2lzZSBub3QgYSB2YWxpZGF0b3IuQENhbm5vdENoaWxsT3RoZXIAEwRVAVRoZSB1c2VyIGhhcyBlbm91Z2ggYm9uZCBhbmQgdGh1cyBjYW5ub3QgYmUgY2hpbGxlZCBmb3JjZWZ1bGx5IGJ5IGFuIGV4dGVybmFsIHBlcnNvbi5EVG9vTWFueU5vbWluYXRvcnMAFAhNAVRoZXJlIGFyZSB0b28gbWFueSBub21pbmF0b3JzIGluIHRoZSBzeXN0ZW0uIEdvdmVybmFuY2UgbmVlZHMgdG8gYWRqdXN0IHRoZSBzdGFraW5ntHNldHRpbmdzIHRvIGtlZXAgdGhpbmdzIHNhZmUgZm9yIHRoZSBydW50aW1lLkRUb29NYW55VmFsaWRhdG9ycwAVCFUBVGhlcmUgYXJlIHRvbyBtYW55IHZhbGlkYXRvciBjYW5kaWRhdGVzIGluIHRoZSBzeXN0ZW0uIEdvdmVybmFuY2UgbmVlZHMgdG8gYWRqdXN0IHRoZdRzdGFraW5nIHNldHRpbmdzIHRvIGtlZXAgdGhpbmdzIHNhZmUgZm9yIHRoZSBydW50aW1lLkBDb21taXNzaW9uVG9vTG93ABYE4ENvbW1pc3Npb24gaXMgdG9vIGxvdy4gTXVzdCBiZSBhdCBsZWFzdCBgTWluQ29tbWlzc2lvbmAuLEJvdW5kTm90TWV0ABcEWFNvbWUgYm91bmQgaXMgbm90IG1ldC5QQ29udHJvbGxlckRlcHJlY2F0ZWQAGAQBAVVzZWQgd2hlbiBhdHRlbXB0aW5nIHRvIHVzZSBkZXByZWNhdGVkIGNvbnRyb2xsZXIgYWNjb3VudCBsb2dpYy5MQ2Fubm90UmVzdG9yZUxlZGdlcgAZBFhDYW5ub3QgcmVzZXQgYSBsZWRnZXIubFJld2FyZERlc3RpbmF0aW9uUmVzdHJpY3RlZAAaBKxQcm92aWRlZCByZXdhcmQgZGVzdGluYXRpb24gaXMgbm90IGFsbG93ZWQuOE5vdEVub3VnaEZ1bmRzABsEnE5vdCBlbm91Z2ggZnVuZHMgYXZhaWxhYmxlIHRvIHdpdGhkcmF3LlxWaXJ0dWFsU3Rha2VyTm90QWxsb3dlZAAcBKhPcGVyYXRpb24gbm90IGFsbG93ZWQgZm9yIHZpcnR1YWwgc3Rha2Vycy48Q2Fubm90UmVhcFN0YXNoAB0E9FN0YXNoIGNvdWxkIG5vdCBiZSByZWFwZWQgYXMgb3RoZXIgcGFsbGV0IG1pZ2h0IGRlcGVuZCBvbiBpdC48QWxyZWFkeU1pZ3JhdGVkAB4ECQFUaGUgc3Rha2Ugb2YgdGhpcyBhY2NvdW50IGlzIGFscmVhZHkgbWlncmF0ZWQgdG8gYEZ1bmdpYmxlYCBob2xkcy40RXJhTm90U3RhcnRlZAAfBFBFcmEgbm90IHlldCBzdGFydGVkLihSZXN0cmljdGVkACAIWQFBY2NvdW50IGlzIHJlc3RyaWN0ZWQgZnJvbSBwYXJ0aWNpcGF0aW9uIGluIHN0YWtpbmcuIFRoaXMgbWF5IGhhcHBlbiBpZiB0aGUgYWNjb3VudCBpc8RzdGFraW5nIGluIGFub3RoZXIgd2F5IGFscmVhZHksIHN1Y2ggYXMgdmlhIHBvb2wudFVuYXBwbGllZFNsYXNoZXNJblByZXZpb3VzRXJhACEILQFVbmFwcGxpZWQgc2xhc2hlcyBpbiB0aGUgcmVjZW50bHkgY29uY2x1ZGVkIGVyYSBpcyBibG9ja2luZyB0aGlzIG9wZXJhdGlvbi6YU2VlIGBDYWxsOjphcHBseV9zbGFzaGAgdG8gYXBwbHkgdGhlbS44RXJhTm90UHJ1bmFibGUAIgSQVGhlIGVyYSBpcyBub3QgZWxpZ2libGUgZm9yIHBydW5pbmcuOENhbmNlbGxlZFNsYXNoACMEzFRoZSBzbGFzaCBoYXMgYmVlbiBjYW5jZWxsZWQgYW5kIGNhbm5vdCBiZSBhcHBsaWVkLkRDb21taXNzaW9uVG9vSGlnaAAkBPhDb21taXNzaW9uIGlzIGhpZ2hlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gYE1heENvbW1pc3Npb25gLlRPcHRpbXVtR3JlYXRlclRoYW5DYXAAJQTMT3B0aW11bSBzZWxmLXN0YWtlIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gaGFyZCBjYXAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LkEPCFBwYWxsZXRfc3Rha2luZ19hc3luYyRSZXdhcmRQb3QAAQgcR2VuZXJhbAQARQ8BKFJld2FyZEtpbmQAAAAMRXJhCAA4ASBFcmFJbmRleAAARQ8BKFJld2FyZEtpbmQAAQAARQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jKFJld2FyZEtpbmQAAQg0U3Rha2VyUmV3YXJkcwAAAEhWYWxpZGF0b3JTZWxmU3Rha2UAAQAASQ8MUHBhbGxldF9zdGFraW5nX2FzeW5jGHJld2FyZExFcmFSZXdhcmRBbGxvY2F0aW9uBBxCYWxhbmNlAVUBAAgBOHN0YWtlcl9yZXdhcmRzVQEBHEJhbGFuY2UAAUx2YWxpZGF0b3JfaW5jZW50aXZlVQEBHEJhbGFuY2UAAE0PAAAECAg4AFEPDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBVQ8EUwAABABZDwEYVmVjPFQ+AABVDwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc1BSaW5nQ29tbWl0bWVudFJlY29yZAQEVAAAEAEQcm9vdBkHATBNZW1iZXJzT2Y8VD4AASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAASxzb3VyY2VfdGltZSgBDHU2NAABPHNvdXJjZV9zZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAABZDwAAAlUPAF0PDHxpbmRpdl9wYWxsZXRfbWVtYmVyc19zdWJzY3JpYmVyFHR5cGVzTFJpbmdDb2xsZWN0aW9uU3RhdGUIKE1heE1pc3NpbmcAKE1heERlbGV0ZWQAABABKHJpbmdfY291bnQ4AQx1MzIAATxuZXh0X3JpbmdfaW5kZXg4AQx1MzIAATxtaXNzaW5nX2luZGljZXNhDwGsQm91bmRlZEJUcmVlTWFwPFJpbmdJbmRleCwgdTMyLCBNYXhNaXNzaW5nPgABPGRlbGV0ZWRfaW5kaWNlc2kPAZhCb3VuZGVkQlRyZWVTZXQ8UmluZ0luZGV4LCBNYXhEZWxldGVkPgAAYQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgE4BFMAAAQAZQ8BOEJUcmVlTWFwPEssIFY+AABlDwQgQlRyZWVNYXAIBEsBOARWATgABACNCQAAAGkPDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAE4BFMAAAQAbQ8BLEJUcmVlU2V0PFQ+AABtDwQgQlRyZWVTZXQEBFQBOAAEAD0EAAAAcQ8MfGluZGl2X3BhbGxldF9tZW1iZXJzX3N1YnNjcmliZXIUdHlwZXNIU3Vic2NyaXB0aW9uU3RhdHVzAAEMIEluYWN0aXZlAAAAGEFjdGl2ZQQBXGluaXRpYWxpemVkX2F0X3NlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIAAQAoVGVybWluYXRlZAACAAB1Dwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc1hVcGRhdGVzUHJvY2Vzc2luZ1N0YXRlAAAMAVxsYXN0X3Byb2Nlc3NlZF9zZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAFgbGFzdF9iYXRjaF9yZWNlaXZlZF90aW1lKAEMdTY0AAFgbGFzdF9yZXBsYXlfcmVxdWVzdF90aW1lKAEMdTY0AAB5Dwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc0BOb3RpZmllckVuZHBvaW50AAAIASBsb2NhdGlvbv0BASBMb2NhdGlvbgABMHBhbGxldF9pbmRleAwBCHU4AAB9Dwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchhwYWxsZXQURXJyb3IEBFQAASQ0WGNtU2VuZEZhaWxlZAAABGBYQ00gbWVzc2FnZSBzZW5kIGZhaWxlZC5QU3Vic2NyaXB0aW9uSW5hY3RpdmUAAQSMU3Vic2NyaXB0aW9uIGlzIGN1cnJlbnRseSBpbmFjdGl2ZS5YU3Vic2NyaXB0aW9uVGVybWluYXRlZAACBJBTdWJzY3JpcHRpb24gaXMgaW4gdGVybWluYXRlZCBzdGF0ZS5kU3Vic2NyaXB0aW9uQWxyZWFkeUFjdGl2ZQADBC0BU3Vic2NyaXB0aW9uIGlzIGFjdGl2ZSB3aXRoIGEgZGlmZmVyZW50IHNlcXVlbmNlOyBtdXN0IGJlIHRlcm1pbmF0ZWQgZmlyc3QuSENvbGxlY3Rpb25Ob3RGb3VuZAAEBNBDb2xsZWN0aW9uIHdpdGggdGhlIGdpdmVuIGlkZW50aWZpZXIgaXMgbm90IHRyYWNrZWQuGE5vUm9vdAAFBLRObyByaW5nIHJvb3Qgc3RvcmVkIGZvciB0aGUgZ2l2ZW4gcmluZyBpbmRleC4wSW52YWxpZFByb29mAAYE0FByb29mIGZhaWxlZCB0byB2ZXJpZnkgYWdhaW5zdCBhbnkgc3RvcmVkIHJpbmcgcm9vdC5MSW52YWxpZFJpbmdFeHBvbmVudAAHBAUBU3RvcmVkIHJpbmcgZXhwb25lbnQgZG9lcyBub3QgY29udmVydCBpbnRvIHRoZSBjcnlwdG8ncyBjYXBhY2l0eS5AUmV2aXNpb25Ob3RGb3VuZAAIBPxSZXF1ZXN0ZWQgcmV2aXNpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIHN0b3JlZCBzbGlkaW5nIHdpbmRvdy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQugQ8AAAQICPEDAIUPDGxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHMYcGFsbGV0FEVycm9yBARUAAFEOEludmFsaWRDb250ZXh0AAAEFQFUaGUgY29udGV4dCBpcyBub3QgYSBtZW1iZXIgb2YgdGhvc2UgYWxsb3dlZCB0byBoYXZlIGFjY291bnQgYWxpYXNlcy5ESW52YWxpZENvbGxlY3Rpb24AAQR8VGhlIGNvbGxlY3Rpb24gaXMgbm90IGFjY2VwdGVkLjBBY2NvdW50SW5Vc2UAAgTIVGhlIGFjY291bnQgaXMgYWxyZWFkeSBpbiB1c2UgdW5kZXIgYW5vdGhlciBhbGlhcy44SW52YWxpZEFjY291bnQAAwRkVGhlIGFjY291bnQgaXMgbm90IGtub3duLlhBbGlhc0FjY291bnRBbHJlYWR5U2V0AAQEwEFsaWFzIDwtPiBBY2NvdW50IGlzIGFscmVhZHkgc2V0IGFuZCB1cCB0byBkYXRlLjhUaW1lT3V0T2ZSYW5nZQAFBHhDYWxsIGlzIHRvbyBsYXRlIG9yIHRvbyBlYXJseS40QWxpYXNOb3RTdGFsZQAGBEUBVGhlIGFsaWFzIG1hcHBpbmcgaXMgbm90IHN0YWxlOyB0aGUgcmV2aXNpb24gc3RpbGwgbWF0Y2hlcyB0aGUgY3VycmVudCByaW5nIHJvb3QuPENsZWFudXBUb29FYXJseQAHCEEBVGhlIGNsZWFudXAgZ3JhY2UgcGVyaW9kIGhhcyBub3QgZWxhcHNlZCB5ZXQ7IHRoZSBhbGlhcyBob2xkZXIgc3RpbGwgaGFzIHRpbWUgdG8cdXBkYXRlLkRJbmNvbnNpc3RlbnRTdGF0ZQAIBFUBU3RvcmFnZSBpcyBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUuIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiB1bmRlciBub3JtYWwgb3BlcmF0aW9uLjhDb250ZXh0Tm90UGFpZAAJCPRgc2V0X3BhaWRfYWxpYXNfYWNjb3VudGAgd2FzIGNhbGxlZCB3aXRoIGEgY29udGV4dCB0aGF0IGlzIGluAQFbYENvbmZpZzo6QWNjb3VudENvbnRleHRzYF07IHRoZSBmcmVlIHBhdGggbXVzdCBiZSB1c2VkIGluc3RlYWQuRFBhaWRBbGlhc0ZlZVVuc2V0AAoE/FRoZSBQR0FTIGZlZSBmb3IgcGFpZCBhbGlhcyByZWdpc3RyYXRpb25zIGhhcyBub3QgYmVlbiBzZXQgeWV0LjxSZXByb3ZlTWlzbWF0Y2gACwgdAVRoZSBwcm9vZiBwYXNzZWQgdG8gYHJlcHJvdmVfYWxpYXNfYWNjb3VudGAgcHJvZHVjZWQgYW4gYWxpYXMgLyBjb250ZXh02HRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlIHN0b3JlZCBtYXBwaW5nIGZvciB0aGUgc2lnbmVyLkhSZXByb3ZlT25seUZvclBhaWQADAgpAWByZXByb3ZlX2FsaWFzX2FjY291bnRgIHdhcyBjYWxsZWQgZm9yIGEgZnJlZSAod2hpdGVsaXN0ZWQtY29udGV4dCkgYWxpYXM7GQF0aGUgZXhpc3RpbmcgdHJhbnNhY3Rpb24tZXh0ZW5zaW9uIHJldmlzaW9uIGZsb3cgbXVzdCBiZSB1c2VkIGluc3RlYWQuQFJpbmdSb290Tm90Rm91bmQADQQFAU5vIHJpbmcgcm9vdCB3YXMgZm91bmQgZm9yIHRoZSByZXF1ZXN0ZWQgY29sbGVjdGlvbiAvIHJpbmcgaW5kZXguNFN0YWxlUmV2aXNpb24ADgQBAVRoZSByZXF1ZXN0ZWQgcmluZyByZXZpc2lvbiBpcyBubyBsb25nZXIgYWNjZXB0ZWQgZm9yIHRoaXMgcmluZy4gQmFkUHJvb2YADwSMUmluZy1WUkYgcHJvb2YgdmVyaWZpY2F0aW9uIGZhaWxlZC5MSW52YWxpZFJpbmdDYXBhY2l0eQAQBPBUaGUgY29uZmlndXJlZCByaW5nIGNhcGFjaXR5IGlzIGludmFsaWQgZm9yIHRoaXMgY29sbGVjdGlvbi4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuiQ8AAAQI+QMIAI0PDERpbmRpdl9wYWxsZXRfcGdhcxhwYWxsZXQURXJyb3IEBFQAARA4QWxyZWFkeUNsYWltZWQAAAT4VGhpcyBhbGlhcyBoYXMgYWxyZWFkeSBiZWVuIHVzZWQgdG8gY2xhaW0gUEdBUyBpbiB0aGlzIHBlcmlvZC44UGdhc01pbnRGYWlsZWQAAQTAVGhlIFBHQVMgYXNzZXQgZG9lcyBub3QgZXhpc3Qgb3IgbWludGluZyBmYWlsZWQuPE5vUmVjb3Jkc0ZvckRheQACBDEBYGNsZWFuX3BnYXNfY2xhaW1fcmVjb3Jkc2Agd2FzIGNhbGxlZCB3aXRoIGEgZGF5IHRoYXQgaGFzIG5vIHN0b3JlZCByZWNvcmRzLkhGaXJzdEFsaWFzTWlzbWF0Y2gAAwhVAVRoZSBgZmlyc3RfYWxpYXNgIHBhc3NlZCB0byBgY2xlYW5fcGdhc19jbGFpbV9yZWNvcmRzYCBkb2VzIG5vdCBtYXRjaCB0aGUgZmlyc3QgYWxpYXOIY3VycmVudGx5IHN0b3JlZCB1bmRlciB0aGUgcHJlZml4LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6RDww0cGFsbGV0X3Jldml2ZQh2bSBDb2RlSW5mbwQEVAAAGAEUb3duZXIEAThBY2NvdW50SWRPZjxUPgABHGRlcG9zaXRRAQEwQmFsYW5jZU9mPFQ+AAEgcmVmY291bnS0AQx1NjQAASBjb2RlX2xlbjgBDHUzMgABJGNvZGVfdHlwZZUPATBCeXRlY29kZVR5cGUAAURiZWhhdmlvdXJfdmVyc2lvbjgBDHUzMgAAlQ8MNHBhbGxldF9yZXZpdmUIdm0wQnl0ZWNvZGVUeXBlAAEIDFB2bQAAAAxFdm0AAQAAmQ8MNHBhbGxldF9yZXZpdmUcc3RvcmFnZSxBY2NvdW50SW5mbwQEVAAACAEwYWNjb3VudF90eXBlnQ8BOEFjY291bnRUeXBlPFQ+AAEQZHVzdDgBDHUzMgAAnQ8MNHBhbGxldF9yZXZpdmUcc3RvcmFnZSxBY2NvdW50VHlwZQQEVAABCCBDb250cmFjdAQAoQ8BPENvbnRyYWN0SW5mbzxUPgAAAAxFT0EAAQAAoQ8MNHBhbGxldF9yZXZpdmUcc3RvcmFnZTBDb250cmFjdEluZm8EBFQAACABHHRyaWVfaWRBBAEYVHJpZUlkAAEkY29kZV9oYXNoPAE0c3BfY29yZTo6SDI1NgABNHN0b3JhZ2VfYnl0ZXM4AQx1MzIAATRzdG9yYWdlX2l0ZW1zOAEMdTMyAAFQc3RvcmFnZV9ieXRlX2RlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAFQc3RvcmFnZV9pdGVtX2RlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAFQc3RvcmFnZV9iYXNlX2RlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAFIaW1tdXRhYmxlX2RhdGFfbGVuOAEMdTMyAAClDwAABAgEBACpDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAK0PDDRwYWxsZXRfcmV2aXZlHHN0b3JhZ2VERGVsZXRpb25RdWV1ZUl0ZW0EBFQAAAgBHHRyaWVfaWRBBAEYVHJpZUlkAAEoYWNjb3VudF9pZAQBOEFjY291bnRJZE9mPFQ+AACxDww0cGFsbGV0X3Jldml2ZRxzdG9yYWdlUERlbGV0aW9uUXVldWVNYW5hZ2VyBARUAAAIAThpbnNlcnRfY291bnRlcjgBDHUzMgABOGRlbGV0ZV9jb3VudGVyOAEMdTMyAAC1DxQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW4UQmxvY2sAAGwBQGJhc2VfZmVlX3Blcl9nYXM9BwEQVTI1NgABNGJsb2JfZ2FzX3VzZWQ9BwEQVTI1NgABKGRpZmZpY3VsdHk9BwEQVTI1NgABPGV4Y2Vzc19ibG9iX2dhcz0HARBVMjU2AAEoZXh0cmFfZGF0YbkPARRCeXRlcwABJGdhc19saW1pdD0HARBVMjU2AAEgZ2FzX3VzZWQ9BwEQVTI1NgABEGhhc2g8ARBIMjU2AAEobG9nc19ibG9vbb0PASBCeXRlczI1NgABFG1pbmVyNQcBHEFkZHJlc3MAASBtaXhfaGFzaDwBEEgyNTYAARRub25jZcUPARhCeXRlczgAARhudW1iZXI9BwEQVTI1NgABYHBhcmVudF9iZWFjb25fYmxvY2tfcm9vdPUEATBPcHRpb248SDI1Nj4AASxwYXJlbnRfaGFzaDwBEEgyNTYAATRyZWNlaXB0c19yb290PAEQSDI1NgABNHJlcXVlc3RzX2hhc2j1BAEwT3B0aW9uPEgyNTY+AAEwc2hhXzNfdW5jbGVzPAEQSDI1NgABEHNpemU9BwEQVTI1NgABKHN0YXRlX3Jvb3Q8ARBIMjU2AAEkdGltZXN0YW1wPQcBEFUyNTYAAUB0b3RhbF9kaWZmaWN1bHR5yQ8BME9wdGlvbjxVMjU2PgABMHRyYW5zYWN0aW9uc80PAWBIYXNoZXNPclRyYW5zYWN0aW9uSW5mb3MAAUR0cmFuc2FjdGlvbnNfcm9vdDwBEEgyNTYAARh1bmNsZXPAASRWZWM8SDI1Nj4AASx3aXRoZHJhd2FscxkQATxWZWM8V2l0aGRyYXdhbD4AAUB3aXRoZHJhd2Fsc19yb290PAEQSDI1NgAAuQ8UNHBhbGxldF9yZXZpdmUMZXZtDGFwaRBieXRlFEJ5dGVzAAAEABgBHFZlYzx1OD4AAL0PFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkQYnl0ZSBCeXRlczI1NgAABADBDwEkW3U4OyAyNTZdAADBDwAAAwABAAAMAMUPFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkQYnl0ZRhCeXRlczgAAAQAWQIBHFt1ODsgOF0AAMkPBBhPcHRpb24EBFQBPQcBCBBOb25lAAAAEFNvbWUEAD0HAAABAADNDxQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5gSGFzaGVzT3JUcmFuc2FjdGlvbkluZm9zAAEIGEhhc2hlcwQAwAEkVmVjPEgyNTY+AAAAQFRyYW5zYWN0aW9uSW5mb3MEANEPAVBWZWM8VHJhbnNhY3Rpb25JbmZvPgABAADRDwAAAtUPANUPFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbjxUcmFuc2FjdGlvbkluZm8AABgBKGJsb2NrX2hhc2g8ARBIMjU2AAEwYmxvY2tfbnVtYmVyPQcBEFUyNTYAARBmcm9tNQcBHEFkZHJlc3MAARBoYXNoPAEQSDI1NgABRHRyYW5zYWN0aW9uX2luZGV4PQcBEFUyNTYAAUh0cmFuc2FjdGlvbl9zaWduZWTZDwFEVHJhbnNhY3Rpb25TaWduZWQAANkPFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbkRUcmFuc2FjdGlvblNpZ25lZAABFFRUcmFuc2FjdGlvbjc3MDJTaWduZWQEAN0PAVRUcmFuc2FjdGlvbjc3MDJTaWduZWQAAABUVHJhbnNhY3Rpb240ODQ0U2lnbmVkBAD1DwFUVHJhbnNhY3Rpb240ODQ0U2lnbmVkAAEAVFRyYW5zYWN0aW9uMTU1OVNpZ25lZAQA/Q8BVFRyYW5zYWN0aW9uMTU1OVNpZ25lZAACAFRUcmFuc2FjdGlvbjI5MzBTaWduZWQEAAkQAVRUcmFuc2FjdGlvbjI5MzBTaWduZWQAAwBcVHJhbnNhY3Rpb25MZWdhY3lTaWduZWQEABEQAVxUcmFuc2FjdGlvbkxlZ2FjeVNpZ25lZAAEAADdDxQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5UVHJhbnNhY3Rpb243NzAyU2lnbmVkAAAUAWR0cmFuc2FjdGlvbl83NzAyX3Vuc2lnbmVk4Q8BXFRyYW5zYWN0aW9uNzcwMlVuc2lnbmVkAAEEcj0HARBVMjU2AAEEcz0HARBVMjU2AAEEdskPATBPcHRpb248VTI1Nj4AASB5X3Bhcml0eT0HARBVMjU2AADhDxQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb243NzAyVW5zaWduZWQAACwBLGFjY2Vzc19saXN05Q8BKEFjY2Vzc0xpc3QAAUhhdXRob3JpemF0aW9uX2xpc3TtDwFsVmVjPEF1dGhvcml6YXRpb25MaXN0RW50cnk+AAEgY2hhaW5faWQ9BwEQVTI1NgABDGdhcz0HARBVMjU2AAEUaW5wdXS5DwEUQnl0ZXMAATxtYXhfZmVlX3Blcl9nYXM9BwEQVTI1NgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhcz0HARBVMjU2AAEUbm9uY2U9BwEQVTI1NgABCHRvNQcBHEFkZHJlc3MAARhyI3R5cGUMASxUeXBlRWlwNzcwMgABFHZhbHVlPQcBEFUyNTYAAOUPAAAC6Q8A6Q8UNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuPEFjY2Vzc0xpc3RFbnRyeQAACAEcYWRkcmVzczUHARxBZGRyZXNzAAEwc3RvcmFnZV9rZXlzwAEkVmVjPEgyNTY+AADtDwAAAvEPAPEPFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblhBdXRob3JpemF0aW9uTGlzdEVudHJ5AAAYASBjaGFpbl9pZD0HARBVMjU2AAEcYWRkcmVzczUHARxBZGRyZXNzAAEUbm9uY2U9BwEQVTI1NgABIHlfcGFyaXR5PQcBEFUyNTYAAQRyPQcBEFUyNTYAAQRzPQcBEFUyNTYAAPUPFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblRUcmFuc2FjdGlvbjQ4NDRTaWduZWQAABABZHRyYW5zYWN0aW9uXzQ4NDRfdW5zaWduZWT5DwFcVHJhbnNhY3Rpb240ODQ0VW5zaWduZWQAAQRyPQcBEFUyNTYAAQRzPQcBEFUyNTYAASB5X3Bhcml0eT0HARBVMjU2AAD5DxQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb240ODQ0VW5zaWduZWQAADABLGFjY2Vzc19saXN05Q8BKEFjY2Vzc0xpc3QAAVRibG9iX3ZlcnNpb25lZF9oYXNoZXPAASRWZWM8SDI1Nj4AASBjaGFpbl9pZD0HARBVMjU2AAEMZ2FzPQcBEFUyNTYAARRpbnB1dLkPARRCeXRlcwABUG1heF9mZWVfcGVyX2Jsb2JfZ2FzPQcBEFUyNTYAATxtYXhfZmVlX3Blcl9nYXM9BwEQVTI1NgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhcz0HARBVMjU2AAEUbm9uY2U9BwEQVTI1NgABCHRvNQcBHEFkZHJlc3MAARhyI3R5cGUMASxUeXBlRWlwNDg0NAABFHZhbHVlPQcBEFUyNTYAAP0PFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblRUcmFuc2FjdGlvbjE1NTlTaWduZWQAABQBZHRyYW5zYWN0aW9uXzE1NTlfdW5zaWduZWQBEAFcVHJhbnNhY3Rpb24xNTU5VW5zaWduZWQAAQRyPQcBEFUyNTYAAQRzPQcBEFUyNTYAAQR2yQ8BME9wdGlvbjxVMjU2PgABIHlfcGFyaXR5PQcBEFUyNTYAAAEQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblxUcmFuc2FjdGlvbjE1NTlVbnNpZ25lZAAALAEsYWNjZXNzX2xpc3TlDwEoQWNjZXNzTGlzdAABIGNoYWluX2lkPQcBEFUyNTYAAQxnYXM9BwEQVTI1NgABJGdhc19wcmljZT0HARBVMjU2AAEUaW5wdXS5DwEUQnl0ZXMAATxtYXhfZmVlX3Blcl9nYXM9BwEQVTI1NgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhcz0HARBVMjU2AAEUbm9uY2U9BwEQVTI1NgABCHRvBRABPE9wdGlvbjxBZGRyZXNzPgABGHIjdHlwZQwBLFR5cGVFaXAxNTU5AAEUdmFsdWU9BwEQVTI1NgAABRAEGE9wdGlvbgQEVAE1BwEIEE5vbmUAAAAQU29tZQQANQcAAAEAAAkQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblRUcmFuc2FjdGlvbjI5MzBTaWduZWQAABQBZHRyYW5zYWN0aW9uXzI5MzBfdW5zaWduZWQNEAFcVHJhbnNhY3Rpb24yOTMwVW5zaWduZWQAAQRyPQcBEFUyNTYAAQRzPQcBEFUyNTYAAQR2yQ8BME9wdGlvbjxVMjU2PgABIHlfcGFyaXR5PQcBEFUyNTYAAA0QFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblxUcmFuc2FjdGlvbjI5MzBVbnNpZ25lZAAAJAEsYWNjZXNzX2xpc3TlDwEoQWNjZXNzTGlzdAABIGNoYWluX2lkPQcBEFUyNTYAAQxnYXM9BwEQVTI1NgABJGdhc19wcmljZT0HARBVMjU2AAEUaW5wdXS5DwEUQnl0ZXMAARRub25jZT0HARBVMjU2AAEIdG8FEAE8T3B0aW9uPEFkZHJlc3M+AAEYciN0eXBlDAEsVHlwZUVpcDI5MzAAARR2YWx1ZT0HARBVMjU2AAAREBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb25MZWdhY3lTaWduZWQAABABbHRyYW5zYWN0aW9uX2xlZ2FjeV91bnNpZ25lZBUQAWRUcmFuc2FjdGlvbkxlZ2FjeVVuc2lnbmVkAAEEcj0HARBVMjU2AAEEcz0HARBVMjU2AAEEdj0HARBVMjU2AAAVEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5kVHJhbnNhY3Rpb25MZWdhY3lVbnNpZ25lZAAAIAEgY2hhaW5faWTJDwEwT3B0aW9uPFUyNTY+AAEMZ2FzPQcBEFUyNTYAASRnYXNfcHJpY2U9BwEQVTI1NgABFGlucHV0uQ8BFEJ5dGVzAAEUbm9uY2U9BwEQVTI1NgABCHRvBRABPE9wdGlvbjxBZGRyZXNzPgABGHIjdHlwZQwBKFR5cGVMZWdhY3kAARR2YWx1ZT0HARBVMjU2AAAZEAAAAh0QAB0QFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbihXaXRoZHJhd2FsAAAQARxhZGRyZXNzNQcBHEFkZHJlc3MAARhhbW91bnQ9BwEQVTI1NgABFGluZGV4PQcBEFUyNTYAATx2YWxpZGF0b3JfaW5kZXg9BwEQVTI1NgAAIRAAAAIlEAAlEBA0cGFsbGV0X3Jldml2ZQxldm0oYmxvY2tfaGFzaDhSZWNlaXB0R2FzSW5mbwAACAEgZ2FzX3VzZWQ9BwEQVTI1NgABTGVmZmVjdGl2ZV9nYXNfcHJpY2U9BwEQVTI1NgAAKRAUNHBhbGxldF9yZXZpdmUMZXZtKGJsb2NrX2hhc2g0YmxvY2tfYnVpbGRlclhFdGhlcmV1bUJsb2NrQnVpbGRlcklSBARUAAAgAWB0cmFuc2FjdGlvbl9yb290X2J1aWxkZXItEAFgSW5jcmVtZW50YWxIYXNoQnVpbGRlcklSAAFUcmVjZWlwdHNfcm9vdF9idWlsZGVyLRABYEluY3JlbWVudGFsSGFzaEJ1aWxkZXJJUgABQGJhc2VfZmVlX3Blcl9nYXM9BwEQVTI1NgABPGJsb2NrX2dhc19saW1pdD0HARBVMjU2AAEgZ2FzX3VzZWQ9BwEQVTI1NgABKGxvZ3NfYmxvb23BDwFYW3U4OyBCTE9PTV9TSVpFX0JZVEVTXQABJHR4X2hhc2hlc8ABJFZlYzxIMjU2PgABIGdhc19pbmZvIRABTFZlYzxSZWNlaXB0R2FzSW5mbz4AAC0QFDRwYWxsZXRfcmV2aXZlDGV2bShibG9ja19oYXNoMGhhc2hfYnVpbGRlcmBJbmNyZW1lbnRhbEhhc2hCdWlsZGVySVIAACgBDGtleRgBHFZlYzx1OD4AASh2YWx1ZV90eXBlDAEIdTgAATRidWlsZGVyX3ZhbHVlGAEcVmVjPHU4PgABFHN0YWNrNAEwVmVjPFZlYzx1OD4+AAEsc3RhdGVfbWFza3MxEAEgVmVjPHUxNj4AASh0cmVlX21hc2tzMRABIFZlYzx1MTY+AAEoaGFzaF9tYXNrczEQASBWZWM8dTE2PgABSHN0b3JlZF9pbl9kYXRhYmFzZVkBARBib29sAAEccmxwX2J1ZhgBHFZlYzx1OD4AARRpbmRleCgBDHU2NAAAMRAAAALRAwA1EAQYT3B0aW9uBARUATABCBBOb25lAAAAEFNvbWUEADAAAAEAADkQDDRwYWxsZXRfcmV2aXZlFGRlYnVnNERlYnVnU2V0dGluZ3MAABABdGFsbG93X3VubGltaXRlZF9jb250cmFjdF9zaXplWQEBEGJvb2wAATxieXBhc3NfZWlwXzM2MDdZAQEQYm9vbAABIHB2bV9sb2dzWQEBEGJvb2wAAWRkaXNhYmxlX2V4ZWN1dGlvbl90cmFjaW5nWQEBEGJvb2wAAD0QDDRwYWxsZXRfcmV2aXZlGHBhbGxldBRFcnJvcgQEVAAB6DxJbnZhbGlkU2NoZWR1bGUAAQQZAUludmFsaWQgc2NoZWR1bGUgc3VwcGxpZWQsIGUuZy4gd2l0aCB6ZXJvIHdlaWdodCBvZiBhIGJhc2ljIG9wZXJhdGlvbi5ASW52YWxpZENhbGxGbGFncwACBDUBSW52YWxpZCBjb21iaW5hdGlvbiBvZiBmbGFncyBzdXBwbGllZCB0byBgc2VhbF9jYWxsYCBvciBgc2VhbF9kZWxlZ2F0ZV9jYWxsYC4gT3V0T2ZHYXMAAwS4VGhlIGV4ZWN1dGVkIGNvbnRyYWN0IGV4aGF1c3RlZCBpdHMgZ2FzIGxpbWl0LjhUcmFuc2ZlckZhaWxlZAAECDUBUGVyZm9ybWluZyB0aGUgcmVxdWVzdGVkIHRyYW5zZmVyIGZhaWxlZC4gUHJvYmFibHkgYmVjYXVzZSB0aGVyZSBpc24ndCBlbm91Z2iUZnJlZSBiYWxhbmNlIGluIHRoZSBzZW5kZXIncyBhY2NvdW50LkxNYXhDYWxsRGVwdGhSZWFjaGVkAAUIIQFQZXJmb3JtaW5nIGEgY2FsbCB3YXMgZGVuaWVkIGJlY2F1c2UgdGhlIGNhbGxpbmcgZGVwdGggcmVhY2hlZCB0aGUgbGltaXSUb2Ygd2hhdCBpcyBzcGVjaWZpZWQgaW4gdGhlIHNjaGVkdWxlLkBDb250cmFjdE5vdEZvdW5kAAYEvE5vIGNvbnRyYWN0IHdhcyBmb3VuZCBhdCB0aGUgc3BlY2lmaWVkIGFkZHJlc3MuMENvZGVOb3RGb3VuZAAHBMRObyBjb2RlIGNvdWxkIGJlIGZvdW5kIGF0IHRoZSBzdXBwbGllZCBjb2RlIGhhc2guQENvZGVJbmZvTm90Rm91bmQACATYTm8gY29kZSBpbmZvIGNvdWxkIGJlIGZvdW5kIGF0IHRoZSBzdXBwbGllZCBjb2RlIGhhc2guLE91dE9mQm91bmRzAAkEJQFBIGJ1ZmZlciBvdXRzaWRlIG9mIHNhbmRib3ggbWVtb3J5IHdhcyBwYXNzZWQgdG8gYSBjb250cmFjdCBBUEkgZnVuY3Rpb24uOERlY29kaW5nRmFpbGVkAAoEKQFJbnB1dCBwYXNzZWQgdG8gYSBjb250cmFjdCBBUEkgZnVuY3Rpb24gZmFpbGVkIHRvIGRlY29kZSBhcyBleHBlY3RlZCB0eXBlLjxDb250cmFjdFRyYXBwZWQACwSIQ29udHJhY3QgdHJhcHBlZCBkdXJpbmcgZXhlY3V0aW9uLjRWYWx1ZVRvb0xhcmdlAAwE9EV2ZW50IGJvZHkgb3Igc3RvcmFnZSBpdGVtIGV4Y2VlZHMgW2BsaW1pdHM6OlNUT1JBR0VfQllURVNgXS5gVGVybWluYXRlZFdoaWxlUmVlbnRyYW50AA0IGQFUZXJtaW5hdGlvbiBvZiBhIGNvbnRyYWN0IGlzIG5vdCBhbGxvd2VkIHdoaWxlIHRoZSBjb250cmFjdCBpcyBhbHJlYWR54G9uIHRoZSBjYWxsIHN0YWNrLiBDYW4gYmUgdHJpZ2dlcmVkIGJ5IGBzZWFsX3Rlcm1pbmF0ZWAuOElucHV0Rm9yd2FyZGVkAA4EQQFgc2VhbF9jYWxsYCBmb3J3YXJkZWQgdGhpcyBjb250cmFjdHMgaW5wdXQuIEl0IHRoZXJlZm9yZSBpcyBubyBsb25nZXIgYXZhaWxhYmxlLjRUb29NYW55VG9waWNzAA8EHQFUaGUgYW1vdW50IG9mIHRvcGljcyBwYXNzZWQgdG8gYHNlYWxfZGVwb3NpdF9ldmVudHNgIGV4Y2VlZHMgdGhlIGxpbWl0LkREdXBsaWNhdGVDb250cmFjdAASBMhBIGNvbnRyYWN0IHdpdGggdGhlIHNhbWUgQWNjb3VudElkIGFscmVhZHkgZXhpc3RzLlxUZXJtaW5hdGVkSW5Db25zdHJ1Y3RvcgATDLhBIGNvbnRyYWN0IHNlbGYgZGVzdHJ1Y3RlZCBpbiBpdHMgY29uc3RydWN0b3IuANBUaGlzIGNhbiBiZSB0cmlnZ2VyZWQgYnkgYSBjYWxsIHRvIGBzZWFsX3Rlcm1pbmF0ZWAuQFJlZW50cmFuY2VEZW5pZWQAFAQNAUEgY2FsbCB0cmllZCB0byBpbnZva2UgYSBjb250cmFjdCB0aGF0IGlzIGZsYWdnZWQgYXMgbm9uLXJlZW50cmFudC48UmVlbnRlcmVkUGFsbGV0ABUELQFBIGNvbnRyYWN0IGNhbGxlZCBpbnRvIHRoZSBydW50aW1lIHdoaWNoIHRoZW4gY2FsbGVkIGJhY2sgaW50byB0aGlzIHBhbGxldC5EU3RhdGVDaGFuZ2VEZW5pZWQAFgRNAUEgY29udHJhY3QgYXR0ZW1wdGVkIHRvIGludm9rZSBhIHN0YXRlIG1vZGlmeWluZyBBUEkgd2hpbGUgYmVpbmcgaW4gcmVhZC1vbmx5IG1vZGUucFN0b3JhZ2VEZXBvc2l0Tm90RW5vdWdoRnVuZHMAFwQhAU9yaWdpbiBkb2Vzbid0IGhhdmUgZW5vdWdoIGJhbGFuY2UgdG8gcGF5IHRoZSByZXF1aXJlZCBzdG9yYWdlIGRlcG9zaXRzLnBTdG9yYWdlRGVwb3NpdExpbWl0RXhoYXVzdGVkABgEDQFNb3JlIHN0b3JhZ2Ugd2FzIGNyZWF0ZWQgdGhhbiBhbGxvd2VkIGJ5IHRoZSBzdG9yYWdlIGRlcG9zaXQgbGltaXQuJENvZGVJblVzZQAZBEkBQ29kZSByZW1vdmFsIHdhcyBkZW5pZWQgYmVjYXVzZSB0aGUgY29kZSBpcyBzdGlsbCBpbiB1c2UgYnkgYXQgbGVhc3Qgb25lIGNvbnRyYWN0LkBDb250cmFjdFJldmVydGVkABoQJQFUaGUgY29udHJhY3QgcmFuIHRvIGNvbXBsZXRpb24gYnV0IGRlY2lkZWQgdG8gcmV2ZXJ0IGl0cyBzdG9yYWdlIGNoYW5nZXMuSQFQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZXJyb3IgaXMgb25seSByZXR1cm5lZCBmcm9tIGV4dHJpbnNpY3MuIFdoZW4gY2FsbGVkIGRpcmVjdGx5XQFvciB2aWEgUlBDIGFuIGBPa2Agd2lsbCBiZSByZXR1cm5lZC4gSW4gdGhpcyBjYXNlIHRoZSBjYWxsZXIgbmVlZHMgdG8gaW5zcGVjdCB0aGUgZmxhZ3PEdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSByZXZlcnNpb24gaGFzIHRha2VuIHBsYWNlLjBDb2RlUmVqZWN0ZWQAGxAZAVRoZSBjb250cmFjdCBmYWlsZWQgdG8gY29tcGlsZSBvciBpcyBtaXNzaW5nIHRoZSBjb3JyZWN0IGVudHJ5IHBvaW50cy4AUQFBIG1vcmUgZGV0YWlsZWQgZXJyb3IgY2FuIGJlIGZvdW5kIG9uIHRoZSBub2RlIGNvbnNvbGUgaWYgZGVidWcgbWVzc2FnZXMgYXJlIGVuYWJsZWScYnkgc3VwcGx5aW5nIGAtbHJ1bnRpbWU6OnJldml2ZT1kZWJ1Z2AuMEJsb2JUb29MYXJnZQAcBA0BVGhlIGNvZGUgYmxvYiBzdXBwbGllZCBpcyBsYXJnZXIgdGhhbiBbYGxpbWl0czo6Y29kZTo6QkxPQl9CWVRFU2BdLlBTdGF0aWNNZW1vcnlUb29MYXJnZQAdBOBUaGUgY29udHJhY3QgZGVjbGFyZXMgdG9vIG11Y2ggbWVtb3J5IChybyArIHJ3ICsgc3RhY2spLkhCYXNpY0Jsb2NrVG9vTGFyZ2UAHgT8VGhlIHByb2dyYW0gY29udGFpbnMgYSBiYXNpYyBibG9jayB0aGF0IGlzIGxhcmdlciB0aGFuIGFsbG93ZWQuSEludmFsaWRJbnN0cnVjdGlvbgAfBLBUaGUgcHJvZ3JhbSBjb250YWlucyBhbiBpbnZhbGlkIGluc3RydWN0aW9uLnhNYXhEZWxlZ2F0ZURlcGVuZGVuY2llc1JlYWNoZWQAIAQVAVRoZSBjb250cmFjdCBoYXMgcmVhY2hlZCBpdHMgbWF4aW11bSBudW1iZXIgb2YgZGVsZWdhdGUgZGVwZW5kZW5jaWVzLmhEZWxlZ2F0ZURlcGVuZGVuY3lOb3RGb3VuZAAhBBUBVGhlIGRlcGVuZGVuY3kgd2FzIG5vdCBmb3VuZCBpbiB0aGUgY29udHJhY3QncyBkZWxlZ2F0ZSBkZXBlbmRlbmNpZXMufERlbGVnYXRlRGVwZW5kZW5jeUFscmVhZHlFeGlzdHMAIgT4VGhlIGNvbnRyYWN0IGFscmVhZHkgZGVwZW5kcyBvbiB0aGUgZ2l2ZW4gZGVsZWdhdGUgZGVwZW5kZW5jeS6EQ2Fubm90QWRkU2VsZkFzRGVsZWdhdGVEZXBlbmRlbmN5ACMEKQFDYW4gbm90IGFkZCBhIGRlbGVnYXRlIGRlcGVuZGVuY3kgdG8gdGhlIGNvZGUgaGFzaCBvZiB0aGUgY29udHJhY3QgaXRzZWxmLlRPdXRPZlRyYW5zaWVudFN0b3JhZ2UAJASsQ2FuIG5vdCBhZGQgbW9yZSBkYXRhIHRvIHRyYW5zaWVudCBzdG9yYWdlLjhJbnZhbGlkU3lzY2FsbAAlBFUBVGhlIGNvbnRyYWN0IHRyaWVkIHRvIGNhbGwgYSBzeXNjYWxsIHdoaWNoIGRvZXMgbm90IGV4aXN0IChhdCBpdHMgY3VycmVudCBhcGkgbGV2ZWwpLkxJbnZhbGlkU3RvcmFnZUZsYWdzACYEBQFJbnZhbGlkIHN0b3JhZ2UgZmxhZ3Mgd2VyZSBwYXNzZWQgdG8gb25lIG9mIHRoZSBzdG9yYWdlIHN5c2NhbGxzLjxFeGVjdXRpb25GYWlsZWQAJwQpAVBvbGthVk0gZmFpbGVkIGR1cmluZyBjb2RlIGV4ZWN1dGlvbi4gUHJvYmFibHkgZHVlIHRvIGEgbWFsZm9ybWVkIHByb2dyYW0uXEJhbGFuY2VDb252ZXJzaW9uRmFpbGVkACgEmEZhaWxlZCB0byBjb252ZXJ0IGEgVTI1NiB0byBhIEJhbGFuY2UuWEludmFsaWRJbW11dGFibGVBY2Nlc3MAKggxAUltbXV0YWJsZSBkYXRhIGNhbiBvbmx5IGJlIHNldCBkdXJpbmcgZGVwbG95cyBhbmQgb25seSBiZSByZWFkIGR1cmluZyBjYWxscy41AUFkZGl0aW9uYWxseSwgaXQgaXMgb25seSB2YWxpZCB0byBzZXQgdGhlIGRhdGEgb25jZSBhbmQgaXQgbXVzdCBub3QgYmUgZW1wdHkuPEFjY291bnRVbm1hcHBlZAArDFEBQW4gYEFjY291bnRJRDMyYCBhY2NvdW50IHRyaWVkIHRvIGludGVyYWN0IHdpdGggdGhlIHBhbGxldCB3aXRob3V0IGhhdmluZyBhIG1hcHBpbmcuACkBQ2FsbCBbYFBhbGxldDo6bWFwX2FjY291bnRgXSBpbiBvcmRlciB0byBjcmVhdGUgYSBtYXBwaW5nIGZvciB0aGUgYWNjb3VudC5QQWNjb3VudEFscmVhZHlNYXBwZWQALAS8VHJpZWQgdG8gbWFwIGFuIGFjY291bnQgdGhhdCBpcyBhbHJlYWR5IG1hcHBlZC5kSW52YWxpZEdlbmVyaWNUcmFuc2FjdGlvbgAtBNhUaGUgdHJhbnNhY3Rpb24gdXNlZCB0byBkcnktcnVuIGEgY29udHJhY3QgaXMgaW52YWxpZC5cUmVmY291bnRPdmVyT3JVbmRlcmZsb3cALgTIVGhlIHJlZmNvdW50IG9mIGEgY29kZSBlaXRoZXIgb3ZlciBvciB1bmRlcmZsb3dlZC5wVW5zdXBwb3J0ZWRQcmVjb21waWxlQWRkcmVzcwAvBHxVbnN1cHBvcnRlZCBwcmVjb21waWxlIGFkZHJlc3MuQENhbGxEYXRhVG9vTGFyZ2UAMATAVGhlIGNhbGxkYXRhIGV4Y2VlZHMgW2BsaW1pdHM6OkNBTExEQVRBX0JZVEVTYF0uSFJldHVybkRhdGFUb29MYXJnZQAxBMxUaGUgcmV0dXJuIGRhdGEgZXhjZWVkcyBbYGxpbWl0czo6Q0FMTERBVEFfQllURVNgXS4sSW52YWxpZEp1bXAAMgQ5AUludmFsaWQganVtcCBkZXN0aW5hdGlvbi4gRHluYW1pYyBqdW1wcyBwb2ludHMgdG8gaW52YWxpZCBub3QganVtcGRlc3Qgb3Bjb2RlLjhTdGFja1VuZGVyZmxvdwAzBLhBdHRlbXB0aW5nIHRvIHBvcCBhIHZhbHVlIGZyb20gYW4gZW1wdHkgc3RhY2suNFN0YWNrT3ZlcmZsb3cANAS0QXR0ZW1wdGluZyB0byBwdXNoIGEgdmFsdWUgb250byBhIGZ1bGwgc3RhY2suNFR4RmVlT3ZlcmRyYXcANQwRAVRvbyBtdWNoIGRlcG9zaXQgd2FzIGRyYXduIGZyb20gdGhlIHNoYXJlZCB0eGZlZSBhbmQgZGVwb3NpdCBjcmVkaXQuADEBVGhpcyBoYXBwZW5zIGlmIHRoZSBwYXNzZWQgYGdhc2AgaW5zaWRlIHRoZSBldGhlcmV1bSB0cmFuc2FjdGlvbiBpcyB0b28gbG93LmhFdm1Db25zdHJ1Y3Rvck5vbkVtcHR5RGF0YQA2DNxXaGVuIGNhbGxpbmcgYW4gRVZNIGNvbnN0cnVjdG9yIGBkYXRhYCBoYXMgdG8gYmUgZW1wdHkuAFkBRVZNIGNvbnN0cnVjdG9ycyBkbyBub3QgYWNjZXB0IGRhdGEuIFRoZWlyIGlucHV0IGRhdGEgaXMgcGFydCBvZiB0aGUgY29kZSBibG9iIGl0c2VsZi5YRXZtQ29uc3RydWN0ZWRGcm9tSGFzaAA3EMRUcmllZCB0byBjb25zdHJ1Y3QgYW4gRVZNIGNvbnRyYWN0IHZpYSBjb2RlIGhhc2guACEBRVZNIGNvbnRyYWN0cyBjYW4gb25seSBiZSBpbnN0YW50aWF0ZWQgdmlhIGNvZGUgdXBsb2FkIGFzIG5vIGluaXRjb2RlIGlzQHN0b3JlZCBvbi1jaGFpbi5sU3RvcmFnZVJlZnVuZE5vdEVub3VnaEZ1bmRzADgMIQFUaGUgY29udHJhY3QgZG9lcyBub3QgaGF2ZSBlbm91Z2ggYmFsYW5jZSB0byByZWZ1bmQgdGhlIHN0b3JhZ2UgZGVwb3NpdC4APQFUaGlzIGlzIGEgYnVnIGFuZCBzaG91bGQgbmV2ZXIgaGFwcGVuLiBJdCBtZWFucyB0aGUgYWNjb3VudGluZyBnb3Qgb3V0IG9mIHN5bmMuTFN0b3JhZ2VSZWZ1bmRMb2NrZWQAORBdAVRoaXMgbWVhbnMgdGhlcmUgYXJlIGxvY2tzIG9uIHRoZSBjb250cmFjdHMgc3RvcmFnZSBkZXBvc2l0IHRoYXQgcHJldmVudHMgcmVmdW5kaW5nIGl0LgA9AVRoaXMgd291bGQgYmUgdGhlIGNhc2UgaWYgdGhlIGNvbnRyYWN0IHVzZWQgaXRzIHN0b3JhZ2UgZGVwb3NpdHMgZm9yIGdvdmVybmFuY2X0b3Igb3RoZXIgcGFsbGV0cyB0aGF0IGFsbG93IGNyZWF0aW5nIGxvY2tzIG92ZXIgaGVsZCBiYWxhbmNlLmBQcmVjb21waWxlRGVsZWdhdGVEZW5pZWQAQBD8Q2FsbGVkIGEgcHJlLWNvbXBpbGUgdGhhdCBpcyBub3QgYWxsb3dlZCB0byBiZSBkZWxlZ2F0ZSBjYWxsZWQuACUBU29tZSBwcmUtY29tcGlsZSBmdW5jdGlvbnMgd2lsbCB0cmFwIHRoZSBjYWxsZXIgY29udGV4dCBpZiBiZWluZyBkZWxlZ2F0ZdBjYWxsZWQgb3IgaWYgdGhlaXIgY2FsbGVyIHdhcyBiZWluZyBkZWxlZ2F0ZSBjYWxsZWQuTEVjZHNhUmVjb3ZlcnlGYWlsZWQAQQQ9AUVDRFNBIHB1YmxpYyBrZXkgcmVjb3ZlcnkgZmFpbGVkLiBNb3N0IHByb2JhYmx5IHdyb25nIHJlY292ZXJ5IGlkIG9yIHNpZ25hdHVyZS5IQXV0b01hcHBpbmdFbmFibGVkAEIE4E1hbnVhbCBtYXBwaW5nIGlzIGRpc2FibGVkIHdoZW4gYXV0by1tYXBwaW5nIGlzIGVuYWJsZWQuVFBlbmRpbmdEZXBvc2l0Q2xlYW51cABDDBEBQSBjb250cmFjdCBjYW5ub3QgYmUgY3JlYXRlZCBhdCB0aGlzIGFkZHJlc3M6IGl0IHN0aWxsIGhhcyB1bmNsZWFyZWRNAVtgTmF0aXZlRGVwb3NpdE9mYF0gZW50cmllcyBmcm9tIGEgcHJldmlvdXNseSB0ZXJtaW5hdGVkIGNvbnRyYWN0IHRoYXQgdGhlIGRlbGV0aW9uaHF1ZXVlIGhhcyBub3QgeWV0IGRyYWluZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LkEQDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlc0hSZWdpc3RyYXRpb25SZWNvcmQEBFQAAAgBKGNvbGxlY3Rpb25FEAEoQ29sbGVjdGlvbgABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAEUQDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlcyhDb2xsZWN0aW9uAAEIGFBlb3BsZQAAAChQZW9wbGVMaXRlAAEAAEkQDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRhwYWxsZXQURXJyb3IEBFQAAShEQWxyZWFkeVJlZ2lzdGVyZWQAAASgVGhlIGFsaWFzIGhhcyBhbHJlYWR5IHJlZ2lzdGVyZWQgYSBuYW1lLkhDb250cmFjdENhbGxGYWlsZWQAAQj8VGhlIGNvbnRyYWN0IGNhbGwgZmFpbGVkIChub24tcmV2ZXJ0OiBvdXQtb2YtZ2FzLCBsb3ctbGV2ZWwsIG9yUHVuZGVjb2RhYmxlIHJldmVydCkuOENvbnRyYWN0UmV2ZXJ0BABNEAFMUG9wQ29udHJvbGxlclJldmVydAACCBEBQ29udHJhY3QgcmV2ZXJ0ZWQgd2l0aCBhIHR5cGVkIGBEb3Ruc1BvcENvbnRyb2xsZXJgIGVycm9yLiBUaGUgaW5uZXLUdmFyaWFudCBpZGVudGlmaWVzIHdoaWNoIFNvbGlkaXR5IGVycm9yIHdhcyByZXR1cm5lZC4sSW52YWxpZE5hbWUAAwj0VGhlIG5hbWUgaXMgaW52YWxpZCAoZW1wdHkgb3IgdG9vIGxvbmcsIG9yIGRvZXMgbm90IG1hdGNoIHRoZYByZXF1aXJlZCBETlMvbGl0ZS1sYWJlbCBmb3JtYXQpLlhOb0F0dGVzdGF0aW9uQWxsb3dhbmNlAAQE0FRoZSBhdHRlc3RlciBoYXMgbm8gYXR0ZXN0YXRpb24gYWxsb3dhbmNlIHJlbWFpbmluZy5sSW52YWxpZEF0dGVzdGF0aW9uU2lnbmF0dXJlAAUElFRoZSBjYW5kaWRhdGUncyBzaWduYXR1cmUgaXMgaW52YWxpZC5sUmVzZXJ2YXRpb25TaWduYXR1cmVFeHBpcmVkAAYEHQFUaGUgcmVzZXJ2YXRpb24gc2lnbmF0dXJlIGlzIG9sZGVyIHRoYW4gW2BDb25maWc6Ok1heFZhbGlkaXR5U2Vjb25kc2BdLnhSZXNlcnZhdGlvblNpZ25hdHVyZUZyb21GdXR1cmUABwj8VGhlIHJlc2VydmF0aW9uIHNpZ25hdHVyZSBjbGFpbXMgdG8gaGF2ZSBiZWVuIGNyZWF0ZWQgbW9yZSB0aGFuzFtgQ29uZmlnOjpNYXhWYWxpZGl0eVNlY29uZHNgXSBhaGVhZCBvZiBjaGFpbiB0aW1lLkROb3RMaXRlTGFiZWxPd25lcgAICAkBVGhlIGBMaW5rOjpMaXRlVXNlcm5hbWVgIHRhcmdldCBpcyBub3Qgb3duZWQgYnkgdGhlIGNhbGxlciAob3IgaGFzeG5vIG9uLWNoYWluIG93bmVyc2hpcCByZWNvcmQpLmhQb3BDb250cm9sbGVyQWRkcmVzc05vdFNldAAJBOxUaGUgYERvdG5zUG9wQ29udHJvbGxlcmAgY29udHJhY3QgYWRkcmVzcyBoYXMgbm90IGJlZW4gc2V0LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5NEAxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXNMUG9wQ29udHJvbGxlclJldmVydAABHChOb3RHYXRld2F5AAAAQEludmFsaWRMaXRlTGFiZWwAAQBASW52YWxpZEJhc2VMYWJlbAACAExOb0FjdGl2ZVJlc2VydmF0aW9uAAMAJFF1ZXVlRnVsbAAEADxBbHJlYWR5UmVzZXJ2ZWQABQAkTm90SG9sZGVyAAYAAFEQDCxwYWxsZXRfc3VkbxhwYWxsZXQURXJyb3IEBFQAAQQsUmVxdWlyZVN1ZG8AAASAU2VuZGVyIG11c3QgYmUgdGhlIFN1ZG8gYWNjb3VudC4EaEVycm9yIGZvciB0aGUgU3VkbyBwYWxsZXQuVRAISHNwX2NvbnNlbnN1c19zbG90czBTbG90RHVyYXRpb24AAAQAKAEMdTY0AABZEBAoc3BfcnVudGltZRxnZW5lcmljFGJsb2NrJExhenlCbG9jawgYSGVhZGVyAVwkRXh0cmluc2ljAdEJAAgBGGhlYWRlclwBGEhlYWRlcgABKGV4dHJpbnNpY3NdEAFQVmVjPE9wYXF1ZUV4dHJpbnNpYz4AAF0QAAACYRAAYRAIKHNwX3J1bnRpbWU8T3BhcXVlRXh0cmluc2ljAAAEABgBHFZlYzx1OD4AAGUQCChzcF9ydW50aW1lWEV4dHJpbnNpY0luY2x1c2lvbk1vZGUAAQg0QWxsRXh0cmluc2ljcwAAADRPbmx5SW5oZXJlbnRzAAEAAGkQCBxzcF9jb3JlOE9wYXF1ZU1ldGFkYXRhAAAEABgBHFZlYzx1OD4AAG0QBBhPcHRpb24EBFQBaRABCBBOb25lAAAAEFNvbWUEAGkQAAABAABxEAQYUmVzdWx0CARUAfkHBEUBdRABCAhPawQA+QcAAAAADEVycgQAdRAAAAEAAHUQDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5YFRyYW5zYWN0aW9uVmFsaWRpdHlFcnJvcgABCBxJbnZhbGlkBAB5EAFISW52YWxpZFRyYW5zYWN0aW9uAAAAHFVua25vd24EAH0QAUhVbmtub3duVHJhbnNhY3Rpb24AAQAAeRAMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlISW52YWxpZFRyYW5zYWN0aW9uAAE0EENhbGwAAAAcUGF5bWVudAABABhGdXR1cmUAAgAUU3RhbGUAAwAgQmFkUHJvb2YABABEQW5jaWVudEJpcnRoQmxvY2sABQBERXhoYXVzdHNSZXNvdXJjZXMABgAYQ3VzdG9tBAAMAQh1OAAHADBCYWRNYW5kYXRvcnkACABMTWFuZGF0b3J5VmFsaWRhdGlvbgAJACRCYWRTaWduZXIACgBUSW5kZXRlcm1pbmF0ZUltcGxpY2l0AAsANFVua25vd25PcmlnaW4ADAAAfRAMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlIVW5rbm93blRyYW5zYWN0aW9uAAEMMENhbm5vdExvb2t1cAAAAExOb1Vuc2lnbmVkVmFsaWRhdG9yAAEAGEN1c3RvbQQADAEIdTgAAgAAgRAIMHNwX2luaGVyZW50czBJbmhlcmVudERhdGEAAAQBEGRhdGGFEAGUQlRyZWVNYXA8SW5oZXJlbnRJZGVudGlmaWVyLCBWZWM8dTg+PgAAhRAEIEJUcmVlTWFwCARLAVkCBFYBGAAEAIkQAAAAiRAAAAKNEACNEAAABAhZAhgAkRAIMHNwX2luaGVyZW50c1BDaGVja0luaGVyZW50c1Jlc3VsdAAADAEQb2theVkBARBib29sAAEsZmF0YWxfZXJyb3JZAQEQYm9vbAABGGVycm9yc4EQATBJbmhlcmVudERhdGEAAJUQDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5RFRyYW5zYWN0aW9uU291cmNlAAEMHEluQmxvY2sAAAAUTG9jYWwAAQAgRXh0ZXJuYWwAAgAAmRAEGFJlc3VsdAgEVAGdEARFAXUQAQgIT2sEAJ0QAAAAAAxFcnIEAHUQAAABAACdEAwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUBWYWxpZFRyYW5zYWN0aW9uAAAUASBwcmlvcml0eSgBTFRyYW5zYWN0aW9uUHJpb3JpdHkAASByZXF1aXJlczQBTFZlYzxUcmFuc2FjdGlvblRhZz4AASBwcm92aWRlczQBTFZlYzxUcmFuc2FjdGlvblRhZz4AASRsb25nZXZpdHkoAVBUcmFuc2FjdGlvbkxvbmdldml0eQABJHByb3BhZ2F0ZVkBARBib29sAAChEAwoc3Bfc2Vzc2lvbixydW50aW1lX2FwaWhPcGFxdWVHZW5lcmF0ZWRTZXNzaW9uS2V5cwAACAEQa2V5cxgBHFZlYzx1OD4AARRwcm9vZhgBHFZlYzx1OD4AAKUQBBhPcHRpb24EBFQBqRABCBBOb25lAAAAEFNvbWUEAKkQAAABAACpEAAAAq0QAK0QAAAECBhBCwCxEAw0ZnJhbWVfc3VwcG9ydDh2aWV3X2Z1bmN0aW9uczhWaWV3RnVuY3Rpb25JZAAACAEYcHJlZml4XQIBIFt1ODsgMTZdAAEYc3VmZml4XQIBIFt1ODsgMTZdAAC1EAQYUmVzdWx0CARUARgERQG5EAEICE9rBAAYAAAAAAxFcnIEALkQAAABAAC5EAw0ZnJhbWVfc3VwcG9ydDh2aWV3X2Z1bmN0aW9uc2RWaWV3RnVuY3Rpb25EaXNwYXRjaEVycm9yAAEMOE5vdEltcGxlbWVudGVkAAAAIE5vdEZvdW5kBACxEAE4Vmlld0Z1bmN0aW9uSWQAAQAUQ29kZWMAAgAAvRAMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzTFJ1bnRpbWVEaXNwYXRjaEluZm8IHEJhbGFuY2UBVQEYV2VpZ2h0AREBAAwBGHdlaWdodBEBARhXZWlnaHQAARRjbGFzc80HATREaXNwYXRjaENsYXNzAAEscGFydGlhbF9mZWVVAQEcQmFsYW5jZQAAwRAMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzKEZlZURldGFpbHMEHEJhbGFuY2UBVQEACAE0aW5jbHVzaW9uX2ZlZcUQAXRPcHRpb248SW5jbHVzaW9uRmVlPEJhbGFuY2U+PgABDHRpcFUBARxCYWxhbmNlAADFEAQYT3B0aW9uBARUAckQAQgQTm9uZQAAABBTb21lBADJEAAAAQAAyRAMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzMEluY2x1c2lvbkZlZQQcQmFsYW5jZQFVAQAMASBiYXNlX2ZlZVUBARxCYWxhbmNlAAEcbGVuX2ZlZVUBARxCYWxhbmNlAAFMYWRqdXN0ZWRfd2VpZ2h0X2ZlZVUBARxCYWxhbmNlAADNEAQYUmVzdWx0CARUAdEQBEUB1RABCAhPawQA0RAAAAAADEVycgQA1RAAAAEAANEQAAACoQMA1RAMQHhjbV9ydW50aW1lX2FwaXMQZmVlcxRFcnJvcgABGDRVbmltcGxlbWVudGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQBMV2VpZ2h0Tm90Q29tcHV0YWJsZQACAExVbmhhbmRsZWRYY21WZXJzaW9uAAMANEFzc2V0Tm90Rm91bmQABAAoVW5yb3V0YWJsZQAFAADZEAQYUmVzdWx0CARUAREBBEUB1RABCAhPawQAEQEAAAAADEVycgQA1RAAAAEAAN0QBBhSZXN1bHQIBFQBVQEERQHVEAEICE9rBABVAQAAAAAMRXJyBADVEAAAAQAA4RAEGFJlc3VsdAgEVAFtAwRFAdUQAQgIT2sEAG0DAAAAAAxFcnIEANUQAAABAADlEAQYUmVzdWx0CARUAekQBEUBAREBCAhPawQA6RAAAAAADEVycgQAAREAAAEAAOkQDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5EQ2FsbERyeVJ1bkVmZmVjdHMEFEV2ZW50AcEHABABQGV4ZWN1dGlvbl9yZXN1bHT9CAFoRGlzcGF0Y2hSZXN1bHRXaXRoUG9zdEluZm8AAThlbWl0dGVkX2V2ZW50c+0QAShWZWM8RXZlbnQ+AAEkbG9jYWxfeGNt8RABYE9wdGlvbjxWZXJzaW9uZWRYY208KCk+PgABOGZvcndhcmRlZF94Y21z9RABvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AADtEAAAAsEHAPEQBBhPcHRpb24EBFQBMQIBCBBOb25lAAAAEFNvbWUEADECAAABAAD1EAAAAvkQAPkQAAAECKkB/RAA/RAAAAIxAgABEQxAeGNtX3J1bnRpbWVfYXBpcxxkcnlfcnVuFEVycm9yAAEINFVuaW1wbGVtZW50ZWQAAABkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABAAAFEQQYUmVzdWx0CARUAQkRBEUBAREBCAhPawQACREAAAAADEVycgQAAREAAAEAAAkRDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5AWGNtRHJ5UnVuRWZmZWN0cwQURXZlbnQBwQcADAFAZXhlY3V0aW9uX3Jlc3VsdIEIARxPdXRjb21lAAE4ZW1pdHRlZF9ldmVudHPtEAEoVmVjPEV2ZW50PgABOGZvcndhcmRlZF94Y21z9RABvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AAANEQQYUmVzdWx0CARUAQQERQEREQEICE9rBAAEAAAAAAxFcnIEABERAAABAAAREQxAeGNtX3J1bnRpbWVfYXBpcyxjb252ZXJzaW9ucxRFcnJvcgABCCxVbnN1cHBvcnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAABURCAx4Y204VmVyc2lvbmVkQXNzZXQAAQwIVjMEAEkCATh2Mzo6TXVsdGlBc3NldAADAAhWNAQAvQIBJHY0OjpBc3NldAAEAAhWNQQACQMBJHY1OjpBc3NldAAFAAAZEQQYUmVzdWx0CARUAVkBBEUBHREBCAhPawQAWQEAAAAADEVycgQAHREAAAEAAB0RDEB4Y21fcnVudGltZV9hcGlzNHRydXN0ZWRfcXVlcnkURXJyb3IAAQh4VmVyc2lvbmVkQXNzZXRDb252ZXJzaW9uRmFpbGVkAAAAhFZlcnNpb25lZExvY2F0aW9uQ29udmVyc2lvbkZhaWxlZAABAAAhEQQYUmVzdWx0CARUAeULBEUBJREBCAhPawQA5QsAAAAADEVycgQAJREAAAEAACURDEB4Y21fcnVudGltZV9hcGlzSGF1dGhvcml6ZWRfYWxpYXNlcxRFcnJvcgABBHxMb2NhdGlvblZlcnNpb25Db252ZXJzaW9uRmFpbGVkAAAAACkRBBhSZXN1bHQIBFQBWQEERQElEQEICE9rBABZAQAAAAAMRXJyBAAlEQAAAQAALREEGFJlc3VsdAgEVAFtAwRFATERAQgIT2sEAG0DAAAAAAxFcnIEADERAAABAAAxEQw0YXNzZXRzX2NvbW1vbixydW50aW1lX2FwaVBGdW5naWJsZXNBY2Nlc3NFcnJvcgABCFxBc3NldElkQ29udmVyc2lvbkZhaWxlZAAAAHxBbW91bnRUb0JhbGFuY2VDb252ZXJzaW9uRmFpbGVkAAEAADURCFxjdW11bHVzX3ByaW1pdGl2ZXNfY29yZTRDb2xsYXRpb25JbmZvAAAYATx1cHdhcmRfbWVzc2FnZXM0AUhWZWM8VXB3YXJkTWVzc2FnZT4AAUxob3Jpem9udGFsX21lc3NhZ2VzSQoBYFZlYzxPdXRib3VuZEhybXBNZXNzYWdlPgABTG5ld192YWxpZGF0aW9uX2NvZGU5EQGMT3B0aW9uPHJlbGF5X2NoYWluOjpWYWxpZGF0aW9uQ29kZT4AAWxwcm9jZXNzZWRfZG93bndhcmRfbWVzc2FnZXM4AQx1MzIAAThocm1wX3dhdGVybWFyazgBYHJlbGF5X2NoYWluOjpCbG9ja051bWJlcgABJGhlYWRfZGF0YUwBIEhlYWREYXRhAAA5EQQYT3B0aW9uBARUAT0RAQgQTm9uZQAAABBTb21lBAA9EQAAAQAAPREMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXM4VmFsaWRhdGlvbkNvZGUAAAQAGAEcVmVjPHU4PgAAQREEGFJlc3VsdAgEVAEQBEUBmQkBCAhPawQAEAAAAAAMRXJyBACZCQAAAQAARREEGE9wdGlvbgQEVAGZCQEIEE5vbmUAAAAQU29tZQQAmQkAAAEAAEkRAAACmQkATREEGE9wdGlvbgQEVAE1DQEIEE5vbmUAAAAQU29tZQQANQ0AAAEAAFERDGBzeXN0ZW1fcGFyYWNoYWluc19jb21tb24QYXBpczRJbmZsYXRpb25JbmZvAAAIASBpc3N1YW5jZVURAVxzcF9ydW50aW1lOjpQZXJxdWludGlsbAABJG5leHRfbWludDUNAfAocG9sa2Fkb3RfcHJpbWl0aXZlczo6QmFsYW5jZSwgcG9sa2Fkb3RfcHJpbWl0aXZlczo6QmFsYW5jZSkAAFURDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3MsUGVycXVpbnRpbGwAAAQAKAEMdTY0AABZEQw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzOENvbnRyYWN0UmVzdWx0CARSAV0RHEJhbGFuY2UBVQEAGAE8d2VpZ2h0X2NvbnN1bWVkEQEBGFdlaWdodAABPHdlaWdodF9yZXF1aXJlZBEBARhXZWlnaHQAATxzdG9yYWdlX2RlcG9zaXRlEQFcU3RvcmFnZURlcG9zaXQ8QmFsYW5jZT4AAUxtYXhfc3RvcmFnZV9kZXBvc2l0ZREBXFN0b3JhZ2VEZXBvc2l0PEJhbGFuY2U+AAEwZ2FzX2NvbnN1bWVkVQEBHEJhbGFuY2UAARhyZXN1bHRpEQFgUmVzdWx0PFIsIERpc3BhdGNoRXJyb3I+AABdEQw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzPEV4ZWNSZXR1cm5WYWx1ZQAACAEUZmxhZ3NhEQEsUmV0dXJuRmxhZ3MAARBkYXRhGAEcVmVjPHU4PgAAYREMSHBhbGxldF9yZXZpdmVfdWFwaRRmbGFncyxSZXR1cm5GbGFncwAABAEQYml0czgBDHUzMgAAZREMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczhTdG9yYWdlRGVwb3NpdAQcQmFsYW5jZQFVAQEIGFJlZnVuZAQAVQEBHEJhbGFuY2UAAAAYQ2hhcmdlBABVAQEcQmFsYW5jZQABAABpEQQYUmVzdWx0CARUAV0RBEUB1QcBCAhPawQAXREAAAAADEVycgQA1QcAAAEAAG0RDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXMQQ29kZQABCBhVcGxvYWQEABgBHFZlYzx1OD4AAAAgRXhpc3RpbmcEADwBNHNwX2NvcmU6OkgyNTYAAQAAcREMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczhDb250cmFjdFJlc3VsdAgEUgF1ERxCYWxhbmNlAVUBABgBPHdlaWdodF9jb25zdW1lZBEBARhXZWlnaHQAATx3ZWlnaHRfcmVxdWlyZWQRAQEYV2VpZ2h0AAE8c3RvcmFnZV9kZXBvc2l0ZREBXFN0b3JhZ2VEZXBvc2l0PEJhbGFuY2U+AAFMbWF4X3N0b3JhZ2VfZGVwb3NpdGURAVxTdG9yYWdlRGVwb3NpdDxCYWxhbmNlPgABMGdhc19jb25zdW1lZFUBARxCYWxhbmNlAAEYcmVzdWx0eREBYFJlc3VsdDxSLCBEaXNwYXRjaEVycm9yPgAAdREMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlc1hJbnN0YW50aWF0ZVJldHVyblZhbHVlAAAIARhyZXN1bHRdEQE8RXhlY1JldHVyblZhbHVlAAEQYWRkcjUHARBIMTYwAAB5EQQYUmVzdWx0CARUAXURBEUB1QcBCAhPawQAdREAAAAADEVycgQA1QcAAAEAAH0RFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbkhHZW5lcmljVHJhbnNhY3Rpb24AAEABLGFjY2Vzc19saXN0gREBSE9wdGlvbjxBY2Nlc3NMaXN0PgABSGF1dGhvcml6YXRpb25fbGlzdO0PAWxWZWM8QXV0aG9yaXphdGlvbkxpc3RFbnRyeT4AAVRibG9iX3ZlcnNpb25lZF9oYXNoZXPAASRWZWM8SDI1Nj4AARRibG9ic4URAShWZWM8Qnl0ZXM+AAEgY2hhaW5faWTJDwEwT3B0aW9uPFUyNTY+AAEQZnJvbQUQATxPcHRpb248QWRkcmVzcz4AAQxnYXPJDwEwT3B0aW9uPFUyNTY+AAEkZ2FzX3ByaWNlyQ8BME9wdGlvbjxVMjU2PgABFGlucHV0iREBLElucHV0T3JEYXRhAAFQbWF4X2ZlZV9wZXJfYmxvYl9nYXPJDwEwT3B0aW9uPFUyNTY+AAE8bWF4X2ZlZV9wZXJfZ2FzyQ8BME9wdGlvbjxVMjU2PgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc8kPATBPcHRpb248VTI1Nj4AARRub25jZckPATBPcHRpb248VTI1Nj4AAQh0bwUQATxPcHRpb248QWRkcmVzcz4AARhyI3R5cGWREQEwT3B0aW9uPEJ5dGU+AAEUdmFsdWXJDwEwT3B0aW9uPFUyNTY+AACBEQQYT3B0aW9uBARUAeUPAQgQTm9uZQAAABBTb21lBADlDwAAAQAAhREAAAK5DwCJERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW4sSW5wdXRPckRhdGEAAAgBFGlucHV0jREBNE9wdGlvbjxCeXRlcz4AARBkYXRhjREBNE9wdGlvbjxCeXRlcz4AAI0RBBhPcHRpb24EBFQBuQ8BCBBOb25lAAAAEFNvbWUEALkPAAABAACREQQYT3B0aW9uBARUAZURAQgQTm9uZQAAABBTb21lBACVEQAAAQAAlREUNHBhbGxldF9yZXZpdmUMZXZtDGFwaRBieXRlEEJ5dGUAAAQADAEIdTgAAJkRBBhSZXN1bHQIBFQBnREERQGhEQEICE9rBACdEQAAAAAMRXJyBAChEQAAAQAAnREMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczxFdGhUcmFuc2FjdEluZm8EHEJhbGFuY2UBVQEAFAE8d2VpZ2h0X3JlcXVpcmVkEQEBGFdlaWdodAABPHN0b3JhZ2VfZGVwb3NpdFUBARxCYWxhbmNlAAFMbWF4X3N0b3JhZ2VfZGVwb3NpdFUBARxCYWxhbmNlAAEcZXRoX2dhcz0HARBVMjU2AAEQZGF0YRgBHFZlYzx1OD4AAKERDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXNARXRoVHJhbnNhY3RFcnJvcgABCBBEYXRhBAAYARxWZWM8dTg+AAAAHE1lc3NhZ2UEAJkJARhTdHJpbmcAAQAApREUNHBhbGxldF9yZXZpdmUMZXZtDGFwaSRycGNfdHlwZXMwRHJ5UnVuQ29uZmlnBBhNb21lbnQBKAAMAUh0aW1lc3RhbXBfb3ZlcnJpZGX8AThPcHRpb248TW9tZW50PgABWHBlcmZvcm1fYmFsYW5jZV9jaGVja3OpEQEwT3B0aW9uPGJvb2w+AAE8c3RhdGVfb3ZlcnJpZGVzrREBYE9wdGlvbjxTdGF0ZU92ZXJyaWRlU2V0PgAAqREEGE9wdGlvbgQEVAFZAQEIEE5vbmUAAAAQU29tZQQAWQEAAAEAAK0RBBhPcHRpb24EBFQBsREBCBBOb25lAAAAEFNvbWUEALERAAABAACxERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5AU3RhdGVPdmVycmlkZVNldAAABAC1EQGAQlRyZWVNYXA8QWRkcmVzcywgU3RhdGVPdmVycmlkZT4AALURBCBCVHJlZU1hcAgESwE1BwRWAbkRAAQA0REAAAC5ERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW40U3RhdGVPdmVycmlkZQAAFAEcYmFsYW5jZckPATBPcHRpb248VTI1Nj4AARRub25jZckPATBPcHRpb248VTI1Nj4AARBjb2RljREBNE9wdGlvbjxCeXRlcz4AARxzdG9yYWdlvREBXE9wdGlvbjxTdG9yYWdlT3ZlcnJpZGU+AAFobW92ZV9wcmVjb21waWxlX3RvX2FkZHJlc3MFEAE8T3B0aW9uPEFkZHJlc3M+AAC9EQQYT3B0aW9uBARUAcERAQgQTm9uZQAAABBTb21lBADBEQAAAQAAwREUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuPFN0b3JhZ2VPdmVycmlkZQABCBRTdGF0ZQQAxREBUEJUcmVlTWFwPEgyNTYsIEgyNTY+AAAAJFN0YXRlRGlmZgQAxREBUEJUcmVlTWFwPEgyNTYsIEgyNTY+AAEAAMURBCBCVHJlZU1hcAgESwE8BFYBPAAEAMkRAAAAyREAAALNEQDNEQAABAg8PADREQAAAtURANURAAAECDUHuREA2REEGFJlc3VsdAgEVAE9BwRFAaERAQgIT2sEAD0HAAAAAAxFcnIEAKERAAABAADdEQQYUmVzdWx0CARUAREBBEUBoREBCAhPawQAEQEAAAAADEVycgQAoREAAAEAAOERBBhSZXN1bHQIBFQB5REERQHVBwEICE9rBADlEQAAAAAMRXJyBADVBwAAAQAA5REMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlc1RDb2RlVXBsb2FkUmV0dXJuVmFsdWUEHEJhbGFuY2UBVQEACAEkY29kZV9oYXNoPAE0c3BfY29yZTo6SDI1NgABHGRlcG9zaXRVAQEcQmFsYW5jZQAA6REEGFJlc3VsdAgEVAFJAQRFAe0RAQgIT2sEAEkBAAAAAAxFcnIEAO0RAAABAADtEQw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzTENvbnRyYWN0QWNjZXNzRXJyb3IAAQwsRG9lc250RXhpc3QAAABES2V5RGVjb2RpbmdGYWlsZWQAAQBIU3RvcmFnZVdyaXRlRmFpbGVkBADVBwE0RGlzcGF0Y2hFcnJvcgACAADxERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcyhUcmFjZXJUeXBlAAEMKENhbGxUcmFjZXIEAPURAWBPcHRpb248Q2FsbFRyYWNlckNvbmZpZz4AAAA4UHJlc3RhdGVUcmFjZXIEAP0RAXBPcHRpb248UHJlc3RhdGVUcmFjZXJDb25maWc+AAEAPEV4ZWN1dGlvblRyYWNlcgQABRIBdE9wdGlvbjxFeGVjdXRpb25UcmFjZXJDb25maWc+AAIAAPURBBhPcHRpb24EBFQB+REBCBBOb25lAAAAEFNvbWUEAPkRAAABAAD5ERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlc0BDYWxsVHJhY2VyQ29uZmlnAAAIASR3aXRoX2xvZ3NZAQEQYm9vbAABNG9ubHlfdG9wX2NhbGxZAQEQYm9vbAAA/REEGE9wdGlvbgQEVAEBEgEIEE5vbmUAAAAQU29tZQQAARIAAAEAAAESFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzUFByZXN0YXRlVHJhY2VyQ29uZmlnAAAMASRkaWZmX21vZGVZAQEQYm9vbAABPGRpc2FibGVfc3RvcmFnZVkBARBib29sAAEwZGlzYWJsZV9jb2RlWQEBEGJvb2wAAAUSBBhPcHRpb24EBFQBCRIBCBBOb25lAAAAEFNvbWUEAAkSAAABAAAJEhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlc1RFeGVjdXRpb25UcmFjZXJDb25maWcAABwBNGVuYWJsZV9tZW1vcnlZAQEQYm9vbAABNGRpc2FibGVfc3RhY2tZAQEQYm9vbAABPGRpc2FibGVfc3RvcmFnZVkBARBib29sAAFIZW5hYmxlX3JldHVybl9kYXRhWQEBEGJvb2wAAVxkaXNhYmxlX3N5c2NhbGxfZGV0YWlsc1kBARBib29sAAEUbGltaXT8ASxPcHRpb248dTY0PgABRG1lbW9yeV93b3JkX2xpbWl0OAEMdTMyAAANEgAAAhESABESAAAECDgVEgAVEhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcxRUcmFjZQABDBBDYWxsBAAZEgEkQ2FsbFRyYWNlAAAAIFByZXN0YXRlBAAtEgE0UHJlc3RhdGVUcmFjZQABACRFeGVjdXRpb24EAE0SAThFeGVjdXRpb25UcmFjZQACAAAZEhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcyRDYWxsVHJhY2UAADQBEGZyb201BwEQSDE2MAABDGdhcygBDHU2NAABIGdhc191c2VkKAEMdTY0AAEIdG81BwEQSDE2MAABFGlucHV0uQ8BFEJ5dGVzAAEYb3V0cHV0uQ8BFEJ5dGVzAAEUZXJyb3JFEQE4T3B0aW9uPFN0cmluZz4AATRyZXZlcnRfcmVhc29uRREBOE9wdGlvbjxTdHJpbmc+AAEUY2FsbHMdEgE4VmVjPENhbGxUcmFjZT4AARBsb2dzIRIBMFZlYzxDYWxsTG9nPgABFHZhbHVlyQ8BME9wdGlvbjxVMjU2PgABJGNhbGxfdHlwZSkSASBDYWxsVHlwZQABQGNoaWxkX2NhbGxfY291bnQ4AQx1MzIAAB0SAAACGRIAIRIAAAIlEgAlEhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcxxDYWxsTG9nAAAQARxhZGRyZXNzNQcBEEgxNjAAARh0b3BpY3PAASRWZWM8SDI1Nj4AARBkYXRhuQ8BFEJ5dGVzAAEgcG9zaXRpb244AQx1MzIAACkSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzIENhbGxUeXBlAAEYEENhbGwAAAAoU3RhdGljQ2FsbAABADBEZWxlZ2F0ZUNhbGwAAgAYQ3JlYXRlAAMAHENyZWF0ZTIABAAwU2VsZmRlc3RydWN0AAUAAC0SFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzNFByZXN0YXRlVHJhY2UAAQggUHJlc3RhdGUEADESAYRCVHJlZU1hcDxIMTYwLCBQcmVzdGF0ZVRyYWNlSW5mbz4AAAAgRGlmZk1vZGUIAQxwcmUxEgGEQlRyZWVNYXA8SDE2MCwgUHJlc3RhdGVUcmFjZUluZm8+AAEQcG9zdDESAYRCVHJlZU1hcDxIMTYwLCBQcmVzdGF0ZVRyYWNlSW5mbz4AAQAAMRIEIEJUcmVlTWFwCARLATUHBFYBNRIABABFEgAAADUSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzRFByZXN0YXRlVHJhY2VJbmZvAAAQARxiYWxhbmNlyQ8BME9wdGlvbjxVMjU2PgABFG5vbmNl4AEsT3B0aW9uPHUzMj4AARBjb2RljREBNE9wdGlvbjxCeXRlcz4AARxzdG9yYWdlORIBeEJUcmVlTWFwPEJ5dGVzLCBPcHRpb248Qnl0ZXM+PgAAORIEIEJUcmVlTWFwCARLAbkPBFYBjREABAA9EgAAAD0SAAACQRIAQRIAAAQIuQ+NEQBFEgAAAkkSAEkSAAAECDUHNRIATRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXM4RXhlY3V0aW9uVHJhY2UAABgBDGdhcygBDHU2NAABPHdlaWdodF9jb25zdW1lZBEBARhXZWlnaHQAAUBiYXNlX2NhbGxfd2VpZ2h0EQEBGFdlaWdodAABGGZhaWxlZFkBARBib29sAAEwcmV0dXJuX3ZhbHVluQ8BFEJ5dGVzAAEsc3RydWN0X2xvZ3NREgFIVmVjPEV4ZWN1dGlvblN0ZXA+AABREgAAAlUSAFUSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzNEV4ZWN1dGlvblN0ZXAAABwBDGdhc7QBDHU2NAABIGdhc19jb3N0tAEMdTY0AAEsd2VpZ2h0X2Nvc3QRAQEYV2VpZ2h0AAEUZGVwdGjRAwEMdTE2AAEscmV0dXJuX2RhdGG5DwEUQnl0ZXMAARRlcnJvckURAThPcHRpb248U3RyaW5nPgABEGtpbmRZEgFERXhlY3V0aW9uU3RlcEtpbmQAAFkSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzREV4ZWN1dGlvblN0ZXBLaW5kAAEIJEVWTU9wY29kZRQBCHBjYAEMdTMyAAEIb3AMAQh1OAABFHN0YWNrhREBKFZlYzxCeXRlcz4AARhtZW1vcnmFEQEoVmVjPEJ5dGVzPgABHHN0b3JhZ2VdEgHIT3B0aW9uPGFsbG9jOjpjb2xsZWN0aW9uczo6QlRyZWVNYXA8Qnl0ZXMsIEJ5dGVzPj4AAAAoUFZNU3lzY2FsbAwBCG9wDAEIdTgAARBhcmdzZQ4BIFZlYzx1NjQ+AAEgcmV0dXJuZWT8ASxPcHRpb248dTY0PgABAABdEgQYT3B0aW9uBARUAWESAQgQTm9uZQAAABBTb21lBABhEgAAAQAAYRIEIEJUcmVlTWFwCARLAbkPBFYBuQ8ABABlEgAAAGUSAAACaRIAaRIAAAQIuQ+5DwBtEgQYT3B0aW9uBARUARUSAQgQTm9uZQAAABBTb21lBAAVEgAAAQAAcRIEGFJlc3VsdAgEVAEVEgRFAaERAQgIT2sEABUSAAAAAAxFcnIEAKERAAABAAB1EhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpJHJwY190eXBlczRUcmFjaW5nQ29uZmlnAAAEATxzdGF0ZV9vdmVycmlkZXOtEQFgT3B0aW9uPFN0YXRlT3ZlcnJpZGVTZXQ+AAB5EgQYUmVzdWx0CARUAX0SBEUBgRIBCAhPawQAfRIAAAAADEVycgQAgRIAAAEAAH0SAAAECFUBOACBEgw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzWEJhbGFuY2VDb252ZXJzaW9uRXJyb3IAAQgUVmFsdWUAAAAQRHVzdAABAACFEghwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZTBSdW50aW1lRXJyb3IAAcQYU3lzdGVtBADJCQFwZnJhbWVfc3lzdGVtOjpFcnJvcjxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAFkKAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFcnJvcjxSdW50aW1lPgABACBQcmVpbWFnZQQAfQoBfHBhbGxldF9wcmVpbWFnZTo6RXJyb3I8UnVudGltZT4ABQAkU2NoZWR1bGVyBACVCgGAcGFsbGV0X3NjaGVkdWxlcjo6RXJyb3I8UnVudGltZT4ABgBQTXVsdGlCbG9ja01pZ3JhdGlvbnMEAJkKAYRwYWxsZXRfbWlncmF0aW9uczo6RXJyb3I8UnVudGltZT4ACAAgQmFsYW5jZXMEAO0KAXxwYWxsZXRfYmFsYW5jZXM6OkVycm9yPFJ1bnRpbWU+AAoAHFZlc3RpbmcEAAkLAXhwYWxsZXRfdmVzdGluZzo6RXJyb3I8UnVudGltZT4ADgAYQ2xhaW1zBAANCwF0cGFsbGV0X2NsYWltczo6RXJyb3I8UnVudGltZT4ADwBEQ29sbGF0b3JTZWxlY3Rpb24EACULAaRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uOjpFcnJvcjxSdW50aW1lPgAVABxTZXNzaW9uBABFCwF4cGFsbGV0X3Nlc3Npb246OkVycm9yPFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQAgQsBpGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU6OkVycm9yPFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBADpCwFocGFsbGV0X3hjbTo6RXJyb3I8UnVudGltZT4AHwAwTWVzc2FnZVF1ZXVlBAANDAGQcGFsbGV0X21lc3NhZ2VfcXVldWU6OkVycm9yPFJ1bnRpbWU+ACMAYFNub3dicmlkZ2VTeXN0ZW1Gcm9udGVuZAQAEQwBxHNub3dicmlkZ2VfcGFsbGV0X3N5c3RlbV9mcm9udGVuZDo6RXJyb3I8UnVudGltZT4AJAAcVXRpbGl0eQQAFQwBeHBhbGxldF91dGlsaXR5OjpFcnJvcjxSdW50aW1lPgAoACBNdWx0aXNpZwQAJQwBfHBhbGxldF9tdWx0aXNpZzo6RXJyb3I8UnVudGltZT4AKQAUUHJveHkEAEkMAXBwYWxsZXRfcHJveHk6OkVycm9yPFJ1bnRpbWU+ACoAHEluZGljZXMEAFEMAXhwYWxsZXRfaW5kaWNlczo6RXJyb3I8UnVudGltZT4AKwAYQXNzZXRzBAB9DAHccGFsbGV0X2Fzc2V0czo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UxPgAyABxVbmlxdWVzBACpDAF4cGFsbGV0X3VuaXF1ZXM6OkVycm9yPFJ1bnRpbWU+ADMAEE5mdHMEAP0MAWxwYWxsZXRfbmZ0czo6RXJyb3I8UnVudGltZT4ANAA0Rm9yZWlnbkFzc2V0cwQAEQ0B3HBhbGxldF9hc3NldHM6OkVycm9yPFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMj4ANQAoUG9vbEFzc2V0cwQAIQ0B3HBhbGxldF9hc3NldHM6OkVycm9yPFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMz4ANgA8QXNzZXRDb252ZXJzaW9uBAAtDQGccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb246OkVycm9yPFJ1bnRpbWU+ADcANEFzc2V0c0ZyZWV6ZXIEADkNAR0BcGFsbGV0X2Fzc2V0c19mcmVlemVyOjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYXNzZXRzX2ZyZWV6ZXI6Okluc3RhbmNlMT4AOAAwQXNzZXRzSG9sZGVyBAA9DQEVAXBhbGxldF9hc3NldHNfaG9sZGVyOjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYXNzZXRzX2hvbGRlcjo6SW5zdGFuY2UxPgA5ACBUcmVhc3VyeQQAUQ0BfHBhbGxldF90cmVhc3VyeTo6RXJyb3I8UnVudGltZT4APABAQ29udmljdGlvblZvdGluZwQAhQ0BoHBhbGxldF9jb252aWN0aW9uX3ZvdGluZzo6RXJyb3I8UnVudGltZT4APQAkUmVmZXJlbmRhBADNDQGAcGFsbGV0X3JlZmVyZW5kYTo6RXJyb3I8UnVudGltZT4APgAkV2hpdGVsaXN0BADRDQGAcGFsbGV0X3doaXRlbGlzdDo6RXJyb3I8UnVudGltZT4AQAAgQm91bnRpZXMEAOENAXxwYWxsZXRfYm91bnRpZXM6OkVycm9yPFJ1bnRpbWU+AEEANENoaWxkQm91bnRpZXMEAO0NAZRwYWxsZXRfY2hpbGRfYm91bnRpZXM6OkVycm9yPFJ1bnRpbWU+AEIAJEFzc2V0UmF0ZQQA8Q0BhHBhbGxldF9hc3NldF9yYXRlOjpFcnJvcjxSdW50aW1lPgBDAEhNdWx0aUFzc2V0Qm91bnRpZXMEAA0OAaxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXM6OkVycm9yPFJ1bnRpbWU+AEQADERhcAQAEQ4BaHBhbGxldF9kYXA6OkVycm9yPFJ1bnRpbWU+AEUASFN0YXRlVHJpZU1pZ3JhdGlvbgQAKQkBrHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbjo6RXJyb3I8UnVudGltZT4ARgA8Tm9taW5hdGlvblBvb2xzBABVDgGccGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkVycm9yPFJ1bnRpbWU+AFAAJFZvdGVyTGlzdAQAaQ4B9HBhbGxldF9iYWdzX2xpc3Q6OkVycm9yPFJ1bnRpbWUsIHBhbGxldF9iYWdzX2xpc3Q6Okluc3RhbmNlMT4AUgBARGVsZWdhdGVkU3Rha2luZwQAfQ4BoHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZzo6RXJyb3I8UnVudGltZT4AUwA8U3Rha2luZ1JjQ2xpZW50BACJDgG4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50OjpFcnJvcjxSdW50aW1lPgBUAEhNdWx0aUJsb2NrRWxlY3Rpb24EAKEOAdBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s6OkVycm9yPFJ1bnRpbWU+AFUAYE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZAQA2Q4B8HBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jazo6c2lnbmVkOjpFcnJvcjxSdW50aW1lPgBYABxTdGFraW5nBAA9DwGQcGFsbGV0X3N0YWtpbmdfYXN5bmM6OkVycm9yPFJ1bnRpbWU+AFkARE1lbWJlcnNTdWJzY3JpYmVyBAB9DwG8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlcjo6RXJyb3I8UnVudGltZT4AYQA0QWxpYXNBY2NvdW50cwQAhQ8BrGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50czo6RXJyb3I8UnVudGltZT4AYgAQUGdhcwQAjQ8BhGluZGl2X3BhbGxldF9wZ2FzOjpFcnJvcjxSdW50aW1lPgBjABhSZXZpdmUEAD0QAXRwYWxsZXRfcmV2aXZlOjpFcnJvcjxSdW50aW1lPgBkADBEb3Ruc0dhdGV3YXkEAEkQAahpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheTo6RXJyb3I8UnVudGltZT4AmAAQU3VkbwQAURABbHBhbGxldF9zdWRvOjpFcnJvcjxSdW50aW1lPgD7AAABARhTeXN0ZW0BGFN5c3RlbVAcQWNjb3VudAEBBAIEqQdBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACABOggVGhlIGZ1bGwgYWNjb3VudCBpbmZvcm1hdGlvbiBmb3IgYSBwYXJ0aWN1bGFyIGFjY291bnQgSUQuADhFeHRyaW5zaWNDb3VudAAAOAQABLggVG90YWwgZXh0cmluc2ljcyBjb3VudCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suAEBJbmhlcmVudHNBcHBsaWVkAQBZAQQABKQgV2hldGhlciBhbGwgaW5oZXJlbnRzIGhhdmUgYmVlbiBhcHBsaWVkLgAsQmxvY2tXZWlnaHQBALUHGAAAAAAAAASIIFRoZSBjdXJyZW50IHdlaWdodCBmb3IgdGhlIGJsb2NrLgAkQmxvY2tTaXplAAA4BAAMsCBUb3RhbCBzaXplIChpbiBieXRlcykgb2YgdGhlIGN1cnJlbnQgYmxvY2suAMggVHJhY2tzIHRoZSBzaXplIG9mIHRoZSBoZWFkZXIgYW5kIGFsbCBleHRyaW5zaWNzLgAkQmxvY2tIYXNoAQEEBTg8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJggTWFwIG9mIGJsb2NrIG51bWJlcnMgdG8gYmxvY2sgaGFzaGVzLgA0RXh0cmluc2ljRGF0YQEBBAU4GAQABD0BIEV4dHJpbnNpY3MgZGF0YSBmb3IgdGhlIGN1cnJlbnQgYmxvY2sgKG1hcHMgYW4gZXh0cmluc2ljJ3MgaW5kZXggdG8gaXRzIGRhdGEpLgAYTnVtYmVyAQA4EAAAAAAECQEgVGhlIGN1cnJlbnQgYmxvY2sgbnVtYmVyIGJlaW5nIHByb2Nlc3NlZC4gU2V0IGJ5IGBleGVjdXRlX2Jsb2NrYC4AKFBhcmVudEhhc2gBADyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEcCBIYXNoIG9mIHRoZSBwcmV2aW91cyBibG9jay4AGERpZ2VzdAEAZAQABPAgRGlnZXN0IG9mIHRoZSBjdXJyZW50IGJsb2NrLCBhbHNvIHBhcnQgb2YgdGhlIGJsb2NrIGhlYWRlci4AGEV2ZW50cwEAuQcEABygIEV2ZW50cyBkZXBvc2l0ZWQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgAdASBOT1RFOiBUaGUgaXRlbSBpcyB1bmJvdW5kIGFuZCBzaG91bGQgdGhlcmVmb3JlIG5ldmVyIGJlIHJlYWQgb24gY2hhaW4u0CBJdCBjb3VsZCBvdGhlcndpc2UgaW5mbGF0ZSB0aGUgUG9WIHNpemUgb2YgYSBibG9jay4ALQEgRXZlbnRzIGhhdmUgYSBsYXJnZSBpbi1tZW1vcnkgc2l6ZS4gQm94IHRoZSBldmVudHMgdG8gbm90IGdvIG91dC1vZi1tZW1vcnn8IGp1c3QgaW4gY2FzZSBzb21lb25lIHN0aWxsIHJlYWRzIHRoZW0gZnJvbSB3aXRoaW4gdGhlIHJ1bnRpbWUuAChFdmVudENvdW50AQA4EAAAAAAEuCBUaGUgbnVtYmVyIG9mIGV2ZW50cyBpbiB0aGUgYEV2ZW50czxUPmAgbGlzdC4ALEV2ZW50VG9waWNzAQEEAjyNCQQAKCUBIE1hcHBpbmcgYmV0d2VlbiBhIHRvcGljIChyZXByZXNlbnRlZCBieSBUOjpIYXNoKSBhbmQgYSB2ZWN0b3Igb2YgaW5kZXhlc5Qgb2YgZXZlbnRzIGluIHRoZSBgPEV2ZW50czxUPj5gIGxpc3QuAFEBIEFsbCB0b3BpYyB2ZWN0b3JzIGhhdmUgZGV0ZXJtaW5pc3RpYyBzdG9yYWdlIGxvY2F0aW9ucyBkZXBlbmRpbmcgb24gdGhlIHRvcGljLiBUaGlzRQEgYWxsb3dzIGxpZ2h0LWNsaWVudHMgdG8gbGV2ZXJhZ2UgdGhlIGNoYW5nZXMgdHJpZSBzdG9yYWdlIHRyYWNraW5nIG1lY2hhbmlzbSBhbmTkIGluIGNhc2Ugb2YgY2hhbmdlcyBmZXRjaCB0aGUgbGlzdCBvZiBldmVudHMgb2YgaW50ZXJlc3QuAFkBIFRoZSB2YWx1ZSBoYXMgdGhlIHR5cGUgYChCbG9ja051bWJlckZvcjxUPiwgRXZlbnRJbmRleClgIGJlY2F1c2UgaWYgd2UgdXNlZCBvbmx5IGp1c3RNASB0aGUgYEV2ZW50SW5kZXhgIHRoZW4gaW4gY2FzZSBpZiB0aGUgdG9waWMgaGFzIHRoZSBzYW1lIGNvbnRlbnRzIG9uIHRoZSBuZXh0IGJsb2NrAQEgbm8gbm90aWZpY2F0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkIHRodXMgdGhlIGV2ZW50IG1pZ2h0IGJlIGxvc3QuAEhMYXN0UnVudGltZVVwZ3JhZGUAAJEJBAAEVQEgU3RvcmVzIHRoZSBgc3BlY192ZXJzaW9uYCBhbmQgYHNwZWNfbmFtZWAgb2Ygd2hlbiB0aGUgbGFzdCBydW50aW1lIHVwZ3JhZGUgaGFwcGVuZWQuAERCbG9ja3NUaWxsVXBncmFkZQAADAQABOwgTnVtYmVyIG9mIGJsb2NrcyB0aWxsIHRoZSBwZW5kaW5nIGNvZGUgdXBncmFkZSBpcyBhcHBsaWVkLgBUVXBncmFkZWRUb1UzMlJlZkNvdW50AQBZAQQABE0BIFRydWUgaWYgd2UgaGF2ZSB1cGdyYWRlZCBzbyB0aGF0IGB0eXBlIFJlZkNvdW50YCBpcyBgdTMyYC4gRmFsc2UgKGRlZmF1bHQpIGlmIG5vdC4AYFVwZ3JhZGVkVG9UcmlwbGVSZWZDb3VudAEAWQEEAAhdASBUcnVlIGlmIHdlIGhhdmUgdXBncmFkZWQgc28gdGhhdCBBY2NvdW50SW5mbyBjb250YWlucyB0aHJlZSB0eXBlcyBvZiBgUmVmQ291bnRgLiBGYWxzZUggKGRlZmF1bHQpIGlmIG5vdC4AOEV4ZWN1dGlvblBoYXNlAACJCQQABIggVGhlIGV4ZWN1dGlvbiBwaGFzZSBvZiB0aGUgYmxvY2suAERBdXRob3JpemVkVXBncmFkZQAAnQkEAAS4IGBTb21lYCBpZiBhIGNvZGUgdXBncmFkZSBoYXMgYmVlbiBhdXRob3JpemVkLgBgRXh0cmluc2ljV2VpZ2h0UmVjbGFpbWVkAQARAQgAABygIFRoZSB3ZWlnaHQgcmVjbGFpbWVkIGZvciB0aGUgZXh0cmluc2ljLgAhASBUaGlzIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSB1bnRpbCB0aGUgZW5kIG9mIHRoZSBleHRyaW5zaWMgZXhlY3V0aW9uLiEBIE1vcmUgcHJlY2lzZWx5IHRoaXMgaW5mb3JtYXRpb24gaXMgcmVtb3ZlZCBpbiBgbm90ZV9hcHBsaWVkX2V4dHJpbnNpY2AuAHEBIExvZ2ljIGRvaW5nIHNvbWUgcG9zdCBkaXNwYXRjaCB3ZWlnaHQgcmVkdWN0aW9uIG11c3QgdXBkYXRlIHRoaXMgc3RvcmFnZSB0byBhdm9pZCBkdXBsaWNhdGUsIHJlZHVjdGlvbi4AASQAAcUHABgwQmxvY2tXZWlnaHRzoQmJAQcA8gUqAQALACBKqdEBAgCAAgJlzR0AAQvAJvt/dAECAAACAQsAaOXPiwECACACAQAAAmXNHQABC8DeX1m6AQIAYAIBCwAgSqnRAQIAgAIBBwC4ZNlFAgBgAAJlzR0AAAAABNAgQmxvY2sgJiBleHRyaW5zaWNzIHdlaWdodHM6IGJhc2UgdmFsdWVzIGFuZCBsaW1pdHMuACxCbG9ja0xlbmd0aK0JNAAARAAAAFAAAABQAAAEqCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBibG9jayAoaW4gYnl0ZXMpLgA4QmxvY2tIYXNoQ291bnQ4EAAQAAAEVQEgTWF4aW11bSBudW1iZXIgb2YgYmxvY2sgbnVtYmVyIHRvIGJsb2NrIGhhc2ggbWFwcGluZ3MgdG8ga2VlcCAob2xkZXN0IHBydW5lZCBmaXJzdCkuACBEYldlaWdodLUJQEB4fQEAAAAAAOH1BQAAAAAECQEgVGhlIHdlaWdodCBvZiBydW50aW1lIGRhdGFiYXNlIG9wZXJhdGlvbnMgdGhlIHJ1bnRpbWUgY2FuIGludm9rZS4AHFZlcnNpb265CQEGUG5leHQtYXNzZXQtaHViLXBhc2VvUG5leHQtYXNzZXQtaHViLXBhc2VvAQAAAIuEHgAAAAAAbN1xjVzFMmLUAQAAAATnBSGg09L4AQAAANe92KJyyg1lAgAAAN9qy2iZB2CbBQAAADfjl/x8kfXkAgAAAED+OtQB+JWaBgAAANK8mJfu0I8VAwAAAPeLJ4vlP0VMAgAAAKs8BXIpH+uLAgAAAMzZ3mOWyJnKAQAAALydiZBPW5I/AQAAADfIuxNQqaKoBAAAAPP/FNWrUnBZAwAAAG/1LuhY5sW9AgAAAJGxyLFjKOuSAgAAAJ/7UFqnONacAQAAACYJvoOsRGjcAQAAABLI49TX4G3gAQAAAN6SuKBCa5v2AgAAAOqT4/FvPWliAwAAAPvFd7nXR+/WAQAAAIqAR6U6gnfsAQAAAKLdtqWEd79jAQAAABemvA0AYq6zAQAAABjvWKO2e6dwAQAAAMUf8fo/XQzKAQAAAIxAPlxKn9RCAQAAAA8AAAABBIQgR2V0IHRoZSBjaGFpbidzIGluLWNvZGUgdmVyc2lvbi4AKFNTNThQcmVmaXjRAwgAABSoIFRoZSBkZXNpZ25hdGVkIFNTNTggcHJlZml4IG9mIHRoaXMgY2hhaW4uADkBIFRoaXMgcmVwbGFjZXMgdGhlICJzczU4Rm9ybWF0IiBwcm9wZXJ0eSBkZWNsYXJlZCBpbiB0aGUgY2hhaW4gc3BlYy4gUmVhc29uIGlzMQEgdGhhdCB0aGUgcnVudGltZSBzaG91bGQga25vdyBhYm91dCB0aGUgcHJlZml4IGluIG9yZGVyIHRvIG1ha2UgdXNlIG9mIGl0IGFzcCBhbiBpZGVudGlmaWVyIG9mIHRoZSBjaGFpbi4AAckJABwsUnVudGltZUNhbGwgBIwgVGhlIGFnZ3JlZ2F0ZWQgYFJ1bnRpbWVDYWxsYCB0eXBlLhROb25jZTgESQEgVGhpcyBzdG9yZXMgdGhlIG51bWJlciBvZiBwcmV2aW91cyB0cmFuc2FjdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGEgc2VuZGVyIGFjY291bnQuEEhhc2g8BJggVGhlIG91dHB1dCBvZiB0aGUgYEhhc2hpbmdgIGZ1bmN0aW9uLhxIYXNoaW5n7QQEIQEgVGhlIGhhc2hpbmcgc3lzdGVtIChhbGdvcml0aG0pIGJlaW5nIHVzZWQgaW4gdGhlIHJ1bnRpbWUgKGUuZy4gQmxha2UyKS4kQWNjb3VudElkBATIIFRoZSB1c2VyIGFjY291bnQgaWRlbnRpZmllciB0eXBlIGZvciB0aGUgcnVudGltZS4UQmxvY2vNCQhhASBUaGUgQmxvY2sgdHlwZSB1c2VkIGJ5IHRoZSBydW50aW1lLiBUaGlzIGlzIHVzZWQgYnkgYGNvbnN0cnVjdF9ydW50aW1lYCB0byByZXRyaWV2ZSB0aGXMIGV4dHJpbnNpY3Mgb3Igb3RoZXIgYmxvY2sgc3BlY2lmaWMgZGF0YSBhcyBuZWVkZWQuLEFjY291bnREYXRhrQcIYQEgRGF0YSB0byBiZSBhc3NvY2lhdGVkIHdpdGggYW4gYWNjb3VudCAob3RoZXIgdGhhbiBub25jZS90cmFuc2FjdGlvbiBjb3VudGVyLCB3aGljaCB0aGlzZCBwYWxsZXQgZG9lcyByZWdhcmRsZXNzKS4AAAAAPFBhcmFjaGFpblN5c3RlbQE8UGFyYWNoYWluU3lzdGVtfDxCbG9ja1dlaWdodE1vZGUAAOUJBAAYfCBUaGUgY3VycmVudCBibG9jayB3ZWlnaHQgbW9kZS4AdQEgVGhpcyBpcyB1c2VkIHRvIGRldGVybWluZSB3aGF0IGlzIHRoZSBtYXhpbXVtIGFsbG93ZWQgYmxvY2sgd2VpZ2h0LCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWVIIFtgYmxvY2tfd2VpZ2h0YF0uACUBIEtpbGxlZCBpbiBbYFNlbGY6Om9uX2luaXRpYWxpemVgXSBhbmQgc2V0IGJ5IHRoZSBbYGJsb2NrX3dlaWdodGBdIGxvZ2ljLgBEUHJldmlvdXNDb3JlQ291bnQAAO0FBAAMBQEgVGhlIGNvcmUgY291bnQgYXZhaWxhYmxlIHRvIHRoZSBwYXJhY2hhaW4gaW4gdGhlIHByZXZpb3VzIGJsb2NrLgB1ASBUaGlzIGlzIG1haW5seSB1c2VkIGZvciBvZmZjaGFpbiBmdW5jdGlvbmFsaXR5IHRvIGNhbGN1bGF0ZSB0aGUgY29ycmVjdCB0YXJnZXQgYmxvY2sgd2VpZ2h0LgBEVW5pbmNsdWRlZFNlZ21lbnQBAOkJBAAYSQEgTGF0ZXN0IGluY2x1ZGVkIGJsb2NrIGRlc2NlbmRhbnRzIHRoZSBydW50aW1lIGFjY2VwdGVkLiBJbiBvdGhlciB3b3JkcywgdGhlc2UgYXJlYQEgYW5jZXN0b3JzIG9mIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIGJsb2NrIHdoaWNoIGhhdmUgbm90IGJlZW4gaW5jbHVkZWQgaW4gdGhlIG9ic2VydmVkTCByZWxheS1jaGFpbiBzdGF0ZS4AdQEgVGhlIHNlZ21lbnQgbGVuZ3RoIGlzIGxpbWl0ZWQgYnkgdGhlIGNhcGFjaXR5IHJldHVybmVkIGZyb20gdGhlIFtgQ29uc2Vuc3VzSG9va2BdIGNvbmZpZ3VyZWQ8IGluIHRoZSBwYWxsZXQuAGxBZ2dyZWdhdGVkVW5pbmNsdWRlZFNlZ21lbnQAAA0KBAAMaQEgU3RvcmFnZSBmaWVsZCB0aGF0IGtlZXBzIHRyYWNrIG9mIGJhbmR3aWR0aCB1c2VkIGJ5IHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgYWxvbmcgd2l0aCB0aGUtASBsYXRlc3QgSFJNUCB3YXRlcm1hcmsuIFVzZWQgZm9yIGxpbWl0aW5nIHRoZSBhY2NlcHRhbmNlIG9mIG5ldyBibG9ja3Mgd2l0aJAgcmVzcGVjdCB0byByZWxheSBjaGFpbiBjb25zdHJhaW50cy4AVFBlbmRpbmdWYWxpZGF0aW9uQ29kZQEAGAQAGFkBIEluIGNhc2Ugb2YgYSBzY2hlZHVsZWQgdXBncmFkZSwgdGhpcyBzdG9yYWdlIGZpZWxkIGNvbnRhaW5zIHRoZSB2YWxpZGF0aW9uIGNvZGUgdG8gYmUkIGFwcGxpZWQuAD0BIEFzIHNvb24gYXMgdGhlIHJlbGF5IGNoYWluIGdpdmVzIHVzIHRoZSBnby1haGVhZCBzaWduYWwsIHdlIHdpbGwgb3ZlcndyaXRlIHRoZWUBIFtgOnBlbmRpbmdfY29kZWBdW3NwX2NvcmU6OnN0b3JhZ2U6OndlbGxfa25vd25fa2V5czo6UEVORElOR19DT0RFXSB3aGljaCB3aWxsIHJlc3VsdCB0aGV1ASBuZXh0IGJsb2NrIHRvIGJlIHByb2Nlc3NlZCB3aXRoIHRoZSBuZXcgdmFsaWRhdGlvbiBjb2RlLiBUaGlzIGNvbmNsdWRlcyB0aGUgdXBncmFkZSBwcm9jZXNzLgBETmV3VmFsaWRhdGlvbkNvZGUAABgEABRdASBWYWxpZGF0aW9uIGNvZGUgdGhhdCBpcyBzZXQgYnkgdGhlIHBhcmFjaGFpbiBhbmQgaXMgdG8gYmUgY29tbXVuaWNhdGVkIHRvIGNvbGxhdG9yIGFuZHggY29uc2VxdWVudGx5IHRoZSByZWxheS1jaGFpbi4AZQEgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrIGlmIG5vIG90aGVyIHBhbGxldCBhbHJlYWR5IHNldCwgdGhlIHZhbHVlLgA4VmFsaWRhdGlvbkRhdGEAAEgEAAzQIFRoZSBbYFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhYF0gc2V0IGZvciB0aGlzIGJsb2NrLgBxASBUaGlzIHZhbHVlIGlzIGV4cGVjdGVkIHRvIGJlIHNldCBvbmx5IG9uY2UgYnkgdGhlIFtgUGFsbGV0OjpzZXRfdmFsaWRhdGlvbl9kYXRhYF0gaW5oZXJlbnQuAFBEaWRTZXRWYWxpZGF0aW9uQ29kZQEAWQEEAATgIFdlcmUgdGhlIHZhbGlkYXRpb24gZGF0YSBzZXQgdG8gbm90aWZ5IHRoZSByZWxheSBjaGFpbj8AZExhc3RSZWxheUNoYWluQmxvY2tOdW1iZXIBADgQAAAAAAwdASBUaGUgcmVsYXkgY2hhaW4gYmxvY2sgbnVtYmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGFzdCBwYXJhY2hhaW4gYmxvY2suAIggVGhpcyBpcyB1cGRhdGVkIGluIGBvbl9maW5hbGl6ZWAuAGBVcGdyYWRlUmVzdHJpY3Rpb25TaWduYWwBABEKBAAcdQEgQW4gb3B0aW9uIHdoaWNoIGluZGljYXRlcyBpZiB0aGUgcmVsYXktY2hhaW4gcmVzdHJpY3RzIHNpZ25hbGxpbmcgYSB2YWxpZGF0aW9uIGNvZGUgdXBncmFkZS5hASBJbiBvdGhlciB3b3JkcywgaWYgdGhpcyBpcyBgU29tZWAgYW5kIFtgTmV3VmFsaWRhdGlvbkNvZGVgXSBpcyBgU29tZWAgdGhlbiB0aGUgcHJvZHVjZWRsIGNhbmRpZGF0ZSB3aWxsIGJlIGludmFsaWQuAHEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIGEgbWlycm9yIG9mIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZvciB0aGUgY3VycmVudCBwYXJhY2hhaW4gZnJvbSB0aGVtASByZWxheS1jaGFpbi4gVGhpcyB2YWx1ZSBpcyBlcGhlbWVyYWwgd2hpY2ggbWVhbnMgaXQgZG9lc24ndCBoaXQgdGhlIHN0b3JhZ2UuIFRoaXMgdmFsdWUgaXNgIHNldCBhZnRlciB0aGUgaW5oZXJlbnQuADhVcGdyYWRlR29BaGVhZAEABQoEABTcIE9wdGlvbmFsIHVwZ3JhZGUgZ28tYWhlYWQgc2lnbmFsIGZyb20gdGhlIHJlbGF5LWNoYWluLgBxASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBhIG1pcnJvciBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGZyb20gdGhlbQEgcmVsYXktY2hhaW4uIFRoaXMgdmFsdWUgaXMgZXBoZW1lcmFsIHdoaWNoIG1lYW5zIGl0IGRvZXNuJ3QgaGl0IHRoZSBzdG9yYWdlLiBUaGlzIHZhbHVlIGlzYCBzZXQgYWZ0ZXIgdGhlIGluaGVyZW50LgA8UmVsYXlTdGF0ZVByb29mAABQBAAYxCBUaGUgc3RhdGUgcHJvb2YgZm9yIHRoZSBsYXN0IHJlbGF5IHBhcmVudCBibG9jay4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgBYUmVsZXZhbnRNZXNzYWdpbmdTdGF0ZQAAGQoEABxlASBUaGUgc25hcHNob3Qgb2Ygc29tZSBzdGF0ZSByZWxhdGVkIHRvIG1lc3NhZ2luZyByZWxldmFudCB0byB0aGUgY3VycmVudCBwYXJhY2hhaW4gYXMgcGVySCB0aGUgcmVsYXkgcGFyZW50LgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuAERIb3N0Q29uZmlndXJhdGlvbgAALQoEABgpASBUaGUgcGFyYWNoYWluIGhvc3QgY29uZmlndXJhdGlvbiB0aGF0IHdhcyBvYnRhaW5lZCBmcm9tIHRoZSByZWxheSBwYXJlbnQuAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AOExhc3REbXFNcWNIZWFkAQA1CoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABD0IFRoZSBsYXN0IGRvd253YXJkIG1lc3NhZ2UgcXVldWUgY2hhaW4gaGVhZCB3ZSBoYXZlIG9ic2VydmVkLgBlASBUaGlzIHZhbHVlIGlzIGxvYWRlZCBiZWZvcmUgYW5kIHNhdmVkIGFmdGVyIHByb2Nlc3NpbmcgaW5ib3VuZCBkb3dud2FyZCBtZXNzYWdlcyBjYXJyaWVkYCBieSB0aGUgc3lzdGVtIGluaGVyZW50LgBATGFzdEhybXBNcWNIZWFkcwEAOQoEABBJASBUaGUgbWVzc2FnZSBxdWV1ZSBjaGFpbiBoZWFkcyB3ZSBoYXZlIG9ic2VydmVkIHBlciBlYWNoIGNoYW5uZWwgaW5jb21pbmcgY2hhbm5lbC4AZQEgVGhpcyB2YWx1ZSBpcyBsb2FkZWQgYmVmb3JlIGFuZCBzYXZlZCBhZnRlciBwcm9jZXNzaW5nIGluYm91bmQgZG93bndhcmQgbWVzc2FnZXMgY2FycmllZGAgYnkgdGhlIHN5c3RlbSBpbmhlcmVudC4AZFByb2Nlc3NlZERvd253YXJkTWVzc2FnZXMBADgQAAAAAAzIIE51bWJlciBvZiBkb3dud2FyZCBtZXNzYWdlcyBwcm9jZXNzZWQgaW4gYSBibG9jay4A7CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgb2YgZWFjaCBuZXcgYmxvY2suAHBMYXN0UHJvY2Vzc2VkRG93bndhcmRNZXNzYWdlAABFCgQADJQgVGhlIGxhc3QgcHJvY2Vzc2VkIGRvd253YXJkIG1lc3NhZ2UuAF0BIFdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGlzIHRvIGZpbHRlciB0aGUgbWVzc2FnZXMgdGhhdCBoYXZlIGJlZW4gYWxyZWFkeSBwcm9jZXNzZWQuADRIcm1wV2F0ZXJtYXJrAQA4EAAAAAAEoCBIUk1QIHdhdGVybWFyayB0aGF0IHdhcyBzZXQgaW4gYSBibG9jay4AYExhc3RQcm9jZXNzZWRIcm1wTWVzc2FnZQAARQoEAAyEIFRoZSBsYXN0IHByb2Nlc3NlZCBIUk1QIG1lc3NhZ2UuAF0BIFdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGlzIHRvIGZpbHRlciB0aGUgbWVzc2FnZXMgdGhhdCBoYXZlIGJlZW4gYWxyZWFkeSBwcm9jZXNzZWQuAFBIcm1wT3V0Ym91bmRNZXNzYWdlcwEASQoEAAykIEhSTVAgbWVzc2FnZXMgdGhhdCB3ZXJlIHNlbnQgaW4gYSBibG9jay4A7CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgb2YgZWFjaCBuZXcgYmxvY2suADhVcHdhcmRNZXNzYWdlcwEANAQADKwgVXB3YXJkIG1lc3NhZ2VzIHRoYXQgd2VyZSBzZW50IGluIGEgYmxvY2suAPAgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIGZvciBlYWNoIG5ldyBibG9jay4AVFBlbmRpbmdVcHdhcmRNZXNzYWdlcwEANAQABDEBIFVwd2FyZCBtZXNzYWdlcyB0aGF0IGFyZSBzdGlsbCBwZW5kaW5nIGFuZCBub3QgeWV0IHNlbnQgdG8gdGhlIHJlbGF5IGNoYWluLgBQUGVuZGluZ1Vwd2FyZFNpZ25hbHMBADQEAAwtASBVcHdhcmQgc2lnbmFscyB0aGF0IGFyZSBzdGlsbCBwZW5kaW5nIGFuZCBub3QgeWV0IHNlbnQgdG8gdGhlIHJlbGF5IGNoYWluLgDYIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9maW5hbGl6ZWAgZm9yIGVhY2ggYmxvY2suAExQZW5kaW5nQXBwcm92ZWRQZWVyAAB4BAAEOQEgVGhlIGFwcHJvdmVkIHBlZXIgaWQgdG8gYmUgc2VudCBhcyBhIFVNUCBzaWduYWwgb24gdGhlIGxhc3QgYmxvY2sgb2YgdGhlIFBvVi4AXFVwd2FyZERlbGl2ZXJ5RmVlRmFjdG9yAQAJBUAAAGSns7bgDQAAAAAAAAAABOQgVGhlIGZhY3RvciB0byBtdWx0aXBseSB0aGUgYmFzZSBkZWxpdmVyeSBmZWUgYnkgZm9yIFVNUC4AhEFubm91bmNlZEhybXBNZXNzYWdlc1BlckNhbmRpZGF0ZQEAOBAAAAAACGUBIFRoZSBudW1iZXIgb2YgSFJNUCBtZXNzYWdlcyB3ZSBvYnNlcnZlZCBpbiBgb25faW5pdGlhbGl6ZWAgYW5kIHRodXMgdXNlZCB0aGF0IG51bWJlciBmb3LwIGFubm91bmNpbmcgdGhlIHdlaWdodCBvZiBgb25faW5pdGlhbGl6ZWAgYW5kIGBvbl9maW5hbGl6ZWAuAGhSZXNlcnZlZFhjbXBXZWlnaHRPdmVycmlkZQAAEQEEAAhdASBUaGUgd2VpZ2h0IHdlIHJlc2VydmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYmxvY2sgZm9yIHByb2Nlc3NpbmcgWENNUCBtZXNzYWdlcy4gVGhpc7ggb3ZlcnJpZGVzIHRoZSBhbW91bnQgc2V0IGluIHRoZSBDb25maWcgdHJhaXQuAGRSZXNlcnZlZERtcFdlaWdodE92ZXJyaWRlAAARAQQACFkBIFRoZSB3ZWlnaHQgd2UgcmVzZXJ2ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBibG9jayBmb3IgcHJvY2Vzc2luZyBETVAgbWVzc2FnZXMuIFRoaXO4IG92ZXJyaWRlcyB0aGUgYW1vdW50IHNldCBpbiB0aGUgQ29uZmlnIHRyYWl0LgBgQ3VzdG9tVmFsaWRhdGlvbkhlYWREYXRhAAAYBAAMKQEgQSBjdXN0b20gaGVhZCBkYXRhIHRoYXQgc2hvdWxkIGJlIHJldHVybmVkIGFzIHJlc3VsdCBvZiBgdmFsaWRhdGVfYmxvY2tgLgARASBTZWUgYFBhbGxldDo6c2V0X2N1c3RvbV92YWxpZGF0aW9uX2hlYWRfZGF0YWAgZm9yIG1vcmUgaW5mb3JtYXRpb24uAEhQb1ZNZXNzYWdlc1RyYWNrZXIAAFEKBAAMVQEgVHJhY2tzIGN1bXVsYXRpdmUgYFVNUGAgYW5kIGBIUk1QYCBtZXNzYWdlcyBzZW50IGFjcm9zcyBibG9ja3MgaW4gdGhlIGN1cnJlbnQgYFBvVmAuAHUBIEFjcm9zcyBkaWZmZXJlbnQgY2FuZGlkYXRlcy9Qb1ZzIHRoZSBidWRnZXRzIGFyZSB0cmFja2VkIGJ5IFtgQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50YF0uAAFAAAHtBwAEKFNlbGZQYXJhSWScENwFAAAEuCBSZXR1cm5zIHRoZSBwYXJhY2hhaW4gSUQgd2UgYXJlIHJ1bm5pbmcgd2l0aC4AAVkKAAAAAQAAJFRpbWVzdGFtcAEkVGltZXN0YW1wCAxOb3cBACggAAAAAAAAAAAEoCBUaGUgY3VycmVudCB0aW1lIGZvciB0aGUgY3VycmVudCBibG9jay4AJERpZFVwZGF0ZQEAWQEEABDYIFdoZXRoZXIgdGhlIHRpbWVzdGFtcCBoYXMgYmVlbiB1cGRhdGVkIGluIHRoaXMgYmxvY2suAFUBIFRoaXMgdmFsdWUgaXMgdXBkYXRlZCB0byBgdHJ1ZWAgdXBvbiBzdWNjZXNzZnVsIHN1Ym1pc3Npb24gb2YgYSB0aW1lc3RhbXAgYnkgYSBub2RlLkUBIEl0IGlzIHRoZW4gY2hlY2tlZCBhdCB0aGUgZW5kIG9mIGVhY2ggYmxvY2sgZXhlY3V0aW9uIGluIHRoZSBgb25fZmluYWxpemVgIGhvb2suAAGwAAAENE1pbmltdW1QZXJpb2QoIAAAAAAAAAAAGIwgVGhlIG1pbmltdW0gcGVyaW9kIGJldHdlZW4gYmxvY2tzLgBNASBCZSBhd2FyZSB0aGF0IHRoaXMgaXMgZGlmZmVyZW50IHRvIHRoZSAqZXhwZWN0ZWQqIHBlcmlvZCB0aGF0IHRoZSBibG9jayBwcm9kdWN0aW9uSQEgYXBwYXJhdHVzIHByb3ZpZGVzLiBZb3VyIGNob3NlbiBjb25zZW5zdXMgc3lzdGVtIHdpbGwgZ2VuZXJhbGx5IHdvcmsgd2l0aCB0aGlzIHRvYQEgZGV0ZXJtaW5lIGEgc2Vuc2libGUgYmxvY2sgdGltZS4gRm9yIGV4YW1wbGUsIGluIHRoZSBBdXJhIHBhbGxldCBpdCB3aWxsIGJlIGRvdWJsZSB0aGlzcCBwZXJpb2Qgb24gZGVmYXVsdCBzZXR0aW5ncy4AAAQYTW9tZW50KASYIFR5cGUgdXNlZCBmb3IgZXhwcmVzc2luZyBhIHRpbWVzdGFtcC4AAwAANFBhcmFjaGFpbkluZm8BNFBhcmFjaGFpbkluZm8ELFBhcmFjaGFpbklkAQCcEGQAAAAAAAG4AAAAAAAABAAAIFByZWltYWdlASBQcmVpbWFnZQwkU3RhdHVzRm9yAAEEBjxdCgQABJAgVGhlIHJlcXVlc3Qgc3RhdHVzIG9mIGEgZ2l2ZW4gaGFzaC4CQFJlcXVlc3RTdGF0dXNGb3IAQFJlcXVlc3RTdGF0dXNGb3IAAQQGPGUKBAAEkCBUaGUgcmVxdWVzdCBzdGF0dXMgb2YgYSBnaXZlbiBoYXNoLgAsUHJlaW1hZ2VGb3IAAQQGdQp5CgQAAAABvAAB8QcAAAF9CgAAAAUAACRTY2hlZHVsZXIBJFNjaGVkdWxlchA8SW5jb21wbGV0ZVNpbmNlAAA4BAAE9CBCbG9jayBudW1iZXIgYXQgd2hpY2ggdGhlIGFnZW5kYSBiZWdhbiBpbmNvbXBsZXRlIGV4ZWN1dGlvbi4AGEFnZW5kYQEBBAU4gQoEAARNASBJdGVtcyB0byBiZSBleGVjdXRlZCwgaW5kZXhlZCBieSB0aGUgYmxvY2sgbnVtYmVyIHRoYXQgdGhleSBzaG91bGQgYmUgZXhlY3V0ZWQgb24uABxSZXRyaWVzAAEEAsyRCgQABCEBIFJldHJ5IGNvbmZpZ3VyYXRpb25zIGZvciBpdGVtcyB0byBiZSBleGVjdXRlZCwgaW5kZXhlZCBieSB0YXNrIGFkZHJlc3MuABhMb29rdXAAAQQFCMwEABD4IExvb2t1cCBmcm9tIGEgbmFtZSB0byB0aGUgYmxvY2sgbnVtYmVyIGFuZCBpbmRleCBvZiB0aGUgdGFzay4AWQEgRm9yIHYzIC0+IHY0IHRoZSBwcmV2aW91c2x5IHVuYm91bmRlZCBpZGVudGl0aWVzIGFyZSBCbGFrZTItMjU2IGhhc2hlZCB0byBmb3JtIHRoZSB2NDAgaWRlbnRpdGllcy4AAcQAAfUHAAg0TWF4aW11bVdlaWdodBEBLAsAgG6HdAECAAACBCkBIFRoZSBtYXhpbXVtIHdlaWdodCB0aGF0IG1heSBiZSBzY2hlZHVsZWQgcGVyIGJsb2NrIGZvciBhbnkgZGlzcGF0Y2hhYmxlcy4AUE1heFNjaGVkdWxlZFBlckJsb2NrOBAyAAAAFB0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzY2hlZHVsZWQgY2FsbHMgaW4gdGhlIHF1ZXVlIGZvciBhIHNpbmdsZSBibG9jay4AGCBOT1RFOlEBICsgRGVwZW5kZW50IHBhbGxldHMnIGJlbmNobWFya3MgbWlnaHQgcmVxdWlyZSBhIGhpZ2hlciBsaW1pdCBmb3IgdGhlIHNldHRpbmcuIFNldCBhxCBoaWdoZXIgbGltaXQgdW5kZXIgYHJ1bnRpbWUtYmVuY2htYXJrc2AgZmVhdHVyZS4AAZUKAAQsUnVudGltZUNhbGwgBGggVGhlIGFnZ3JlZ2F0ZWQgY2FsbCB0eXBlLgAGAAAoUGFyYW1ldGVycwEoUGFyYW1ldGVycwQoUGFyYW1ldGVycwABBAIBCBUIBAAETCBTdG9yZWQgcGFyYW1ldGVycy4AAdAAAf0HAAAAAAAHAABQTXVsdGlCbG9ja01pZ3JhdGlvbnMBUE11bHRpQmxvY2tNaWdyYXRpb25zCBhDdXJzb3IAAC0BBAAM2CBUaGUgY3VycmVudGx5IGFjdGl2ZSBtaWdyYXRpb24gdG8gcnVuIGFuZCBpdHMgY3Vyc29yLgC8IGBOb25lYCBpbmRpY2F0ZXMgdGhhdCBubyBtaWdyYXRpb24gaXMgcnVubmluZy4AIEhpc3RvcmljAAEEBUEBEAQAELQgU2V0IG9mIGFsbCBzdWNjZXNzZnVsbHkgZXhlY3V0ZWQgbWlncmF0aW9ucy4AcQEgVGhpcyBpcyB1c2VkIGFzIGJsYWNrbGlzdCwgdG8gbm90IHJlLWV4ZWN1dGUgbWlncmF0aW9ucyB0aGF0IGhhdmUgbm90IGJlZW4gcmVtb3ZlZCBmcm9tIHRoZTEBIGNvZGViYXNlIHlldC4gR292ZXJuYW5jZSBjYW4gcmVndWxhcmx5IGNsZWFyIHRoaXMgb3V0IHZpYSBgY2xlYXJfaGlzdG9yaWNgLgABJQEAASUIAAgwQ3Vyc29yTWF4TGVuOBAAAAEAEKQgVGhlIG1heGltYWwgbGVuZ3RoIG9mIGFuIGVuY29kZWQgY3Vyc29yLgBlASBBIGdvb2QgZGVmYXVsdCBuZWVkcyB0byBzZWxlY3RlZCBzdWNoIHRoYXQgbm8gbWlncmF0aW9uIHdpbGwgZXZlciBoYXZlIGEgY3Vyc29yIHdpdGggTUVMCQEgYWJvdmUgdGhpcyBsaW1pdC4gVGhpcyBpcyBzdGF0aWNhbGx5IGNoZWNrZWQgaW4gYGludGVncml0eV90ZXN0YC4AQElkZW50aWZpZXJNYXhMZW44EAABAAAQtCBUaGUgbWF4aW1hbCBsZW5ndGggb2YgYW4gZW5jb2RlZCBpZGVudGlmaWVyLgBVASBBIGdvb2QgZGVmYXVsdCBuZWVkcyB0byBzZWxlY3RlZCBzdWNoIHRoYXQgbm8gbWlncmF0aW9uIHdpbGwgZXZlciBoYXZlIGFuIGlkZW50aWZpZXItASB3aXRoIE1FTCBhYm92ZSB0aGlzIGxpbWl0LiBUaGlzIGlzIHN0YXRpY2FsbHkgY2hlY2tlZCBpbiBgaW50ZWdyaXR5X3Rlc3RgLgABmQoAABALIBmazjVk0JZOLE1Km6RplE28/2ps4aTQsnxvzALSTDhvbmdvaW5nX3N0YXR1cwCdCgSoIFJldHVybnMgdGhlIG9uZ29pbmcgc3RhdHVzIG9mIG1pZ3JhdGlvbnMuAAsgGZrONWTQlk4sTUqbpGlevXdssV2bkS4njU0tYsWhIHByb2dyZXNzAKEKEAkBIFJldHVybnMgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgbWlncmF0aW9uLCBpZiBhbnkuAFEBIFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgbWlncmF0aW9uJ3MgcHJvZ3Jlc3MsHQEgaW5jbHVkaW5nIHRoZSBudW1iZXIgb2Ygc3RlcHMgY29tcGxldGVkIGFuZCB0aGUgbWF4aW11bSBhbGxvd2VkIHN0ZXBzLgALIBmazjVk0JZOLE1Km6RpRq9LzsbzWnu77p2fwQlb4URhZmZlY3RlZF9wcmVmaXhlcwA0DAEBIFJldHVybnMgdGhlIHN0b3JhZ2UgcHJlZml4ZXMgYWZmZWN0ZWQgYnkgdGhlIGN1cnJlbnQgbWlncmF0aW9uLgAZASBDYW4gYmUgZW1wdHkgaWYgdGhlIG1pZ3JhdGlvbiBkb2VzIG5vdCBrbm93IG9yIHRoZXJlIGFyZSBubyBwcmVmaXhlcy4ACyAZms41ZNCWTixNSpukaapMKKBvGYhFvRuynsYgXd0Yc3RhdHVzAKkKBPAgUmV0dXJucyB0aGUgY29tcHJlaGVuc2l2ZSBzdGF0dXMgb2YgbXVsdGktYmxvY2sgbWlncmF0aW9ucy4ACAAANFdlaWdodFJlY2xhaW0AAAAAAAAACQiBASBQYWxsZXQgdG8gdXNlIGFsb25nc2lkZSB0aGUgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIFtgU3RvcmFnZVdlaWdodFJlY2xhaW1gXSwgdGhlIHBhbGxldCBwcm92aWRlc4wgd2VpZ2h0IGluZm9ybWF0aW9uIGFuZCBiZW5jaG1hcmtzLgAgQmFsYW5jZXMBIEJhbGFuY2VzHDRUb3RhbElzc3VhbmNlAQBVAUAAAAAAAAAAAAAAAAAAAAAABJggVGhlIHRvdGFsIHVuaXRzIGlzc3VlZCBpbiB0aGUgc3lzdGVtLgBASW5hY3RpdmVJc3N1YW5jZQEAVQFAAAAAAAAAAAAAAAAAAAAAAAQJASBUaGUgdG90YWwgdW5pdHMgb2Ygb3V0c3RhbmRpbmcgZGVhY3RpdmF0ZWQgYmFsYW5jZSBpbiB0aGUgc3lzdGVtLgAcQWNjb3VudAEBBAIErQcBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBgCQEgVGhlIEJhbGFuY2VzIHBhbGxldCBleGFtcGxlIG9mIHN0b3JpbmcgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC4AKCAjIEV4YW1wbGUANCBgYGBub2NvbXBpbGWwICBpbXBsIHBhbGxldF9iYWxhbmNlczo6Q29uZmlnIGZvciBSdW50aW1lIHsZAiAgICB0eXBlIEFjY291bnRTdG9yZSA9IFN0b3JhZ2VNYXBTaGltPFNlbGY6OkFjY291bnQ8UnVudGltZT4sIGZyYW1lX3N5c3RlbTo6UHJvdmlkZXI8UnVudGltZT4sIEFjY291bnRJZCwgU2VsZjo6QWNjb3VudERhdGE8QmFsYW5jZT4+DCAgfRAgYGBgABUBIFlvdSBjYW4gYWxzbyBzdG9yZSB0aGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50IGluIHRoZSBgU3lzdGVtYCBwYWxsZXQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7dCAgIHR5cGUgQWNjb3VudFN0b3JlID0gU3lzdGVtDCAgfRAgYGBgAFEBIEJ1dCB0aGlzIGNvbWVzIHdpdGggdHJhZGVvZmZzLCBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlIHN5c3RlbSBwYWxsZXQgc3RvcmVzbQEgYGZyYW1lX3N5c3RlbWAgZGF0YSBhbG9uZ3NpZGUgdGhlIGFjY291bnQgZGF0YSBjb250cmFyeSB0byBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlKQEgYEJhbGFuY2VzYCBwYWxsZXQsIHdoaWNoIHVzZXMgYSBgU3RvcmFnZU1hcGAgdG8gc3RvcmUgYmFsYW5jZXMgZGF0YSBvbmx5LkEBIE5PVEU6IFRoaXMgaXMgb25seSB1c2VkIGluIHRoZSBjYXNlIHRoYXQgdGhpcyBwYWxsZXQgaXMgdXNlZCB0byBzdG9yZSBiYWxhbmNlcy4AFExvY2tzAQEEAgStCgQAELggQW55IGxpcXVpZGl0eSBsb2NrcyBvbiBzb21lIGFjY291bnQgYmFsYW5jZXMuJQEgTk9URTogU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgd2hlbiBzZXR0aW5nLCBjaGFuZ2luZyBhbmQgZnJlZWluZyBhIGxvY2suAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAIFJlc2VydmVzAQEEAgS9CgQADKQgTmFtZWQgcmVzZXJ2ZXMgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAUSG9sZHMBAQQCBMkKBAAEbCBIb2xkcyBvbiBhY2NvdW50IGJhbGFuY2VzLgAcRnJlZXplcwEBBAIE1QoEAASIIEZyZWV6ZSBsb2NrcyBvbiBhY2NvdW50IGJhbGFuY2VzLgABTQEAASkIABBIRXhpc3RlbnRpYWxEZXBvc2l0VQFAAOH1BQAAAAAAAAAAAAAAACBBASBUaGUgbWluaW11bSBhbW91bnQgcmVxdWlyZWQgdG8ga2VlcCBhbiBhY2NvdW50IG9wZW4uIE1VU1QgQkUgR1JFQVRFUiBUSEFOIFpFUk8hAFkBIElmIHlvdSAqcmVhbGx5KiBuZWVkIGl0IHRvIGJlIHplcm8sIHlvdSBjYW4gZW5hYmxlIHRoZSBmZWF0dXJlIGBpbnNlY3VyZV96ZXJvX2VkYCBmb3JhASB0aGlzIHBhbGxldC4gSG93ZXZlciwgeW91IGRvIHNvIGF0IHlvdXIgb3duIHJpc2s6IHRoaXMgd2lsbCBvcGVuIHVwIGEgbWFqb3IgRG9TIHZlY3Rvci5ZASBJbiBjYXNlIHlvdSBoYXZlIG11bHRpcGxlIHNvdXJjZXMgb2YgcHJvdmlkZXIgcmVmZXJlbmNlcywgeW91IG1heSBhbHNvIGdldCB1bmV4cGVjdGVkjCBiZWhhdmlvdXIgaWYgeW91IHNldCB0aGlzIHRvIHplcm8uAPAgQm90dG9tIGxpbmU6IERvIHlvdXJzZWxmIGEgZmF2b3VyIGFuZCBtYWtlIGl0IGF0IGxlYXN0IG9uZSEAIE1heExvY2tzOBAyAAAAEPQgVGhlIG1heGltdW0gbnVtYmVyIG9mIGxvY2tzIHRoYXQgc2hvdWxkIGV4aXN0IG9uIGFuIGFjY291bnQu3CBOb3Qgc3RyaWN0bHkgZW5mb3JjZWQsIGJ1dCB1c2VkIGZvciB3ZWlnaHQgZXN0aW1hdGlvbi4ArQEgVXNlIG9mIGxvY2tzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGZyZWV6ZXMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAsTWF4UmVzZXJ2ZXM4EDIAAAAMDQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIG5hbWVkIHJlc2VydmVzIHRoYXQgY2FuIGV4aXN0IG9uIGFuIGFjY291bnQuALEBIFVzZSBvZiByZXNlcnZlcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBob2xkcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gAChNYXhGcmVlemVzOBACAAAABGEBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbmRpdmlkdWFsIGZyZWV6ZSBsb2NrcyB0aGF0IGNhbiBleGlzdCBvbiBhbiBhY2NvdW50IGF0IGFueSB0aW1lLgAB7QoAEERSdW50aW1lSG9sZFJlYXNvbjEIBHQgVGhlIG92ZXJhcmNoaW5nIGhvbGQgcmVhc29uLhxCYWxhbmNlVQEEbCBUaGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50LkRSZXNlcnZlSWRlbnRpZmllclkCDGggVGhlIElEIHR5cGUgZm9yIHJlc2VydmVzLgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYEBGcmVlemVJZGVudGlmaWVy3QoEZCBUaGUgSUQgdHlwZSBmb3IgZnJlZXplcy4ACgAASFRyYW5zYWN0aW9uUGF5bWVudAFIVHJhbnNhY3Rpb25QYXltZW50DEROZXh0RmVlTXVsdGlwbGllcgEACQVAAABkp7O24A0AAAAAAAAAAAAAOFN0b3JhZ2VWZXJzaW9uAQDxCgQAAAA8VHhQYXltZW50Q3JlZGl0AAD1CgQADPAgVGhlIGBPbkNoYXJnZVRyYW5zYWN0aW9uYCBzdG9yZXMgdGhlIHdpdGhkcmF3biB0eCBmZWUgaGVyZS4ANQEgVXNlIGB3aXRoZHJhd190eGZlZWAgYW5kIGByZW1haW5pbmdfdHhmZWVgIHRvIGFjY2VzcyBmcm9tIG91dHNpZGUgdGhlIGNyYXRlLgAAAWEIAARgT3BlcmF0aW9uYWxGZWVNdWx0aXBsaWVyDAQFVFkBIEEgZmVlIG11bHRpcGxpZXIgZm9yIGBPcGVyYXRpb25hbGAgZXh0cmluc2ljcyB0byBjb21wdXRlICJ2aXJ0dWFsIHRpcCIgdG8gYm9vc3QgdGhlaXIsIGBwcmlvcml0eWAAUQEgVGhpcyB2YWx1ZSBpcyBtdWx0aXBsaWVkIGJ5IHRoZSBgZmluYWxfZmVlYCB0byBvYnRhaW4gYSAidmlydHVhbCB0aXAiIHRoYXQgaXMgbGF0ZXL0IGFkZGVkIHRvIGEgdGlwIGNvbXBvbmVudCBpbiByZWd1bGFyIGBwcmlvcml0eWAgY2FsY3VsYXRpb25zLk0BIEl0IG1lYW5zIHRoYXQgYSBgTm9ybWFsYCB0cmFuc2FjdGlvbiBjYW4gZnJvbnQtcnVuIGEgc2ltaWxhcmx5LXNpemVkIGBPcGVyYXRpb25hbGBBASBleHRyaW5zaWMgKHdpdGggbm8gdGlwKSwgYnkgaW5jbHVkaW5nIGEgdGlwIHZhbHVlIGdyZWF0ZXIgdGhhbiB0aGUgdmlydHVhbCB0aXAuADwgYGBgcnVzdCxpZ25vcmVAIC8vIEZvciBgTm9ybWFsYIwgbGV0IHByaW9yaXR5ID0gcHJpb3JpdHlfY2FsYyh0aXApOwBUIC8vIEZvciBgT3BlcmF0aW9uYWxgEQEgbGV0IHZpcnR1YWxfdGlwID0gKGluY2x1c2lvbl9mZWUgKyB0aXApICogT3BlcmF0aW9uYWxGZWVNdWx0aXBsaWVyO8QgbGV0IHByaW9yaXR5ID0gcHJpb3JpdHlfY2FsYyh0aXAgKyB2aXJ0dWFsX3RpcCk7ECBgYGAAUQEgTm90ZSB0aGF0IHNpbmNlIHdlIHVzZSBgZmluYWxfZmVlYCB0aGUgbXVsdGlwbGllciBhcHBsaWVzIGFsc28gdG8gdGhlIHJlZ3VsYXIgYHRpcGBdASBzZW50IHdpdGggdGhlIHRyYW5zYWN0aW9uLiBTbywgbm90IG9ubHkgZG9lcyB0aGUgdHJhbnNhY3Rpb24gZ2V0IGEgcHJpb3JpdHkgYnVtcCBiYXNlZGEBIG9uIHRoZSBgaW5jbHVzaW9uX2ZlZWAsIGJ1dCB3ZSBhbHNvIGFtcGxpZnkgdGhlIGltcGFjdCBvZiB0aXBzIGFwcGxpZWQgdG8gYE9wZXJhdGlvbmFsYDggdHJhbnNhY3Rpb25zLgAAAAALAAA4QXNzZXRUeFBheW1lbnQAAAFlCAAAAAAADQAAHFZlc3RpbmcBHFZlc3RpbmcIHFZlc3RpbmcAAQQCBP0KBAAE2CBJbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIHZlc3Rpbmcgb2YgYSBnaXZlbiBhY2NvdW50LgA4U3RvcmFnZVZlcnNpb24BAAULBAAMfCBTdG9yYWdlIHZlcnNpb24gb2YgdGhlIHBhbGxldC4AMQEgTmV3IG5ldHdvcmtzIHN0YXJ0IHdpdGggbGF0ZXN0IHZlcnNpb24sIGFzIGRldGVybWluZWQgYnkgdGhlIGdlbmVzaXMgYnVpbGQuAAFlAQABaQgACERNaW5WZXN0ZWRUcmFuc2ZlclUBQADh9QUAAAAAAAAAAAAAAAAE6CBUaGUgbWluaW11bSBhbW91bnQgdHJhbnNmZXJyZWQgdG8gY2FsbCBgdmVzdGVkX3RyYW5zZmVyYC4ATE1heFZlc3RpbmdTY2hlZHVsZXM4EBwAAAAAAAEJCwAAAA4AABhDbGFpbXMBGENsYWltcxQYQ2xhaW1zAAEEBnkBVQEEAAAAFFRvdGFsAQBVAUAAAAAAAAAAAAAAAAAAAAAAAAAcVmVzdGluZwABBAZ5AYEBBAAQeCBWZXN0aW5nIHNjaGVkdWxlIGZvciBhIGNsYWltLg0BIEZpcnN0IGJhbGFuY2UgaXMgdGhlIHRvdGFsIGFtb3VudCB0aGF0IHNob3VsZCBiZSBoZWxkIGZvciB2ZXN0aW5nLuQgU2Vjb25kIGJhbGFuY2UgaXMgaG93IG11Y2ggc2hvdWxkIGJlIHVubG9ja2VkIHBlciBibG9jay7MIFRoZSBibG9jayBudW1iZXIgaXMgd2hlbiB0aGUgdmVzdGluZyBzaG91bGQgc3RhcnQuABxTaWduaW5nAAEEBnkBiQEEAATAIFRoZSBzdGF0ZW1lbnQga2luZCB0aGF0IG11c3QgYmUgc2lnbmVkLCBpZiBhbnkuACRQcmVjbGFpbXMAAQQGBHkBBAAELQEgUHJlLWNsYWltZWQgRXRoZXJldW0gYWNjb3VudHMsIGJ5IHRoZSBBY2NvdW50IElEIHRoYXQgdGhleSBhcmUgY2xhaW1lZCB0by4AAW0BAAFtCAAEGFByZWZpeBiIhFBheSBET1RzIHRvIHRoZSBQb2xrYWRvdCBhY2NvdW50OgAAAQ0LAAAADwAAKEF1dGhvcnNoaXABKEF1dGhvcnNoaXAEGEF1dGhvcgAABAQABGQgQXV0aG9yIG9mIGN1cnJlbnQgYmxvY2suAAAAAAAAABQAAERDb2xsYXRvclNlbGVjdGlvbgFEQ29sbGF0b3JTZWxlY3Rpb24UNEludnVsbmVyYWJsZXMBABELBAAEEQEgVGhlIGludnVsbmVyYWJsZSwgcGVybWlzc2lvbmVkIGNvbGxhdG9ycy4gVGhpcyBsaXN0IG11c3QgYmUgc29ydGVkLgA0Q2FuZGlkYXRlTGlzdAEAFQsEABRpASBUaGUgKGNvbW11bml0eSwgbGltaXRlZCkgY29sbGF0aW9uIGNhbmRpZGF0ZXMuIGBDYW5kaWRhdGVzYCBhbmQgYEludnVsbmVyYWJsZXNgIHNob3VsZCBiZVAgbXV0dWFsbHkgZXhjbHVzaXZlLgB1ASBUaGlzIGxpc3QgaXMgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBieSBkZXBvc2l0IGFuZCB3aGVuIHRoZSBkZXBvc2l0cyBhcmUgZXF1YWwsIHRoZSBsZWFzdKAgcmVjZW50bHkgdXBkYXRlZCBpcyBjb25zaWRlcmVkIGdyZWF0ZXIuAERMYXN0QXV0aG9yZWRCbG9jawEBBAUEOBAAAAAABIQgTGFzdCBibG9jayBhdXRob3JlZCBieSBjb2xsYXRvci4ARERlc2lyZWRDYW5kaWRhdGVzAQA4EAAAAAAMeCBEZXNpcmVkIG51bWJlciBvZiBjYW5kaWRhdGVzLgB1ASBUaGlzIHNob3VsZCBpZGVhbGx5IGFsd2F5cyBiZSBsZXNzIHRoYW4gW2BDb25maWc6Ok1heENhbmRpZGF0ZXNgXSBmb3Igd2VpZ2h0cyB0byBiZSBjb3JyZWN0LgA0Q2FuZGlkYWN5Qm9uZAEAVQFAAAAAAAAAAAAAAAAAAAAAAAy4IEZpeGVkIGFtb3VudCB0byBkZXBvc2l0IHRvIGJlY29tZSBhIGNvbGxhdG9yLgBBASBXaGVuIGEgY29sbGF0b3IgY2FsbHMgYGxlYXZlX2ludGVudGAgdGhleSBpbW1lZGlhdGVseSByZWNlaXZlIHRoZSBkZXBvc2l0IGJhY2suAAGRAQABcQgAGBRQb3RJZCELIFBvdFN0YWtlBPQgQWNjb3VudCBJZGVudGlmaWVyIGZyb20gd2hpY2ggdGhlIGludGVybmFsIFBvdCBpcyBnZW5lcmF0ZWQuADRNYXhDYW5kaWRhdGVzOBBkAAAADMggTWF4aW11bSBudW1iZXIgb2YgY2FuZGlkYXRlcyB0aGF0IHdlIHNob3VsZCBoYXZlLgDMIFRoaXMgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIGludnVsbmVyYWJsZXMuAFBNaW5FbGlnaWJsZUNvbGxhdG9yczgQBAAAAAxVASBNaW5pbXVtIG51bWJlciBlbGlnaWJsZSBjb2xsYXRvcnMuIFNob3VsZCBhbHdheXMgYmUgZ3JlYXRlciB0aGFuIHplcm8uIFRoaXMgaW5jbHVkZXNRASBJbnZ1bG5lcmFibGUgY29sbGF0b3JzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGVyZSB3aWxsIGFsd2F5cyBiZSBvbmUgY29sbGF0b3Igd2hvIGNhbkQgcHJvZHVjZSBhIGJsb2NrLgBATWF4SW52dWxuZXJhYmxlczgQFAAAAASEIE1heGltdW0gbnVtYmVyIG9mIGludnVsbmVyYWJsZXMuADRLaWNrVGhyZXNob2xkOBAQDgAAAAAscG90X2FjY291bnQEgG1vZGxQb3RTdGFrZQAAAAAAAAAAAAAAAAAAAAAAAAAABKAgR2V0cyB0aGlzIHBhbGxldCdzIGRlcml2ZWQgcG90IGFjY291bnQuAAElCwAELFZhbGlkYXRvcklkBAR0IEEgc3RhYmxlIElEIGZvciBhIHZhbGlkYXRvci4AFQAAHFNlc3Npb24BHFNlc3Npb24gKFZhbGlkYXRvcnMBAF0BBAAEfCBUaGUgY3VycmVudCBzZXQgb2YgdmFsaWRhdG9ycy4AMEN1cnJlbnRJbmRleAEAOBAAAAAABHggQ3VycmVudCBpbmRleCBvZiB0aGUgc2Vzc2lvbi4ANFF1ZXVlZENoYW5nZWQBAFkBBAAIOQEgVHJ1ZSBpZiB0aGUgdW5kZXJseWluZyBlY29ub21pYyBpZGVudGl0aWVzIG9yIHdlaWdodGluZyBiZWhpbmQgdGhlIHZhbGlkYXRvcnOkIGhhcyBjaGFuZ2VkIGluIHRoZSBxdWV1ZWQgdmFsaWRhdG9yIHNldC4AKFF1ZXVlZEtleXMBACkLBAAIPQEgVGhlIHF1ZXVlZCBrZXlzIGZvciB0aGUgbmV4dCBzZXNzaW9uLiBXaGVuIHRoZSBuZXh0IHNlc3Npb24gYmVnaW5zLCB0aGVzZSBrZXlz4CB3aWxsIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB2YWxpZGF0b3IncyBzZXNzaW9uIGtleXMuAEhEaXNhYmxlZFZhbGlkYXRvcnMBADELBAAUgCBJbmRpY2VzIG9mIGRpc2FibGVkIHZhbGlkYXRvcnMuAD0BIFRoZSB2ZWMgaXMgYWx3YXlzIGtlcHQgc29ydGVkIHNvIHRoYXQgd2UgY2FuIGZpbmQgd2hldGhlciBhIGdpdmVuIHZhbGlkYXRvciBpcz0BIGRpc2FibGVkIHVzaW5nIGJpbmFyeSBzZWFyY2guIEl0IGdldHMgY2xlYXJlZCB3aGVuIGBvbl9zZXNzaW9uX2VuZGluZ2AgcmV0dXJuc2QgYSBuZXcgc2V0IG9mIGlkZW50aXRpZXMuACBOZXh0S2V5cwABBAUEmQEEAAScIFRoZSBuZXh0IHNlc3Npb24ga2V5cyBmb3IgYSB2YWxpZGF0b3IuACBLZXlPd25lcgABBAU9CwQEAAQJASBUaGUgb3duZXIgb2YgYSBrZXkuIFRoZSBrZXkgaXMgdGhlIGBLZXlUeXBlSWRgICsgdGhlIGVuY29kZWQga2V5LgBERXh0ZXJuYWxseVNldEtleXMAAQQFBBAEABAxASBBY2NvdW50cyB3aG9zZSBrZXlzIHdlcmUgc2V0IHZpYSBgU2Vzc2lvbkludGVyZmFjZWAgKGV4dGVybmFsIHBhdGgpIHdpdGhvdXQ5ASBpbmNyZW1lbnRpbmcgdGhlIGNvbnN1bWVyIHJlZmVyZW5jZSBvciBwbGFjaW5nIGEga2V5IGRlcG9zaXQuIGBkb19wdXJnZV9rZXlzYDkBIG9ubHkgZGVjcmVtZW50cyBjb25zdW1lcnMgZm9yIGFjY291bnRzIHRoYXQgd2VyZSByZWdpc3RlcmVkIHRocm91Z2ggdGhlIGxvY2FsQCBzZXNzaW9uIHBhbGxldC4AAZUBAAF1CAAEKEtleURlcG9zaXRVAUAAAAAAAAAAAAAAAAAAAAAABKQgVGhlIGFtb3VudCB0byBiZSBoZWxkIHdoZW4gc2V0dGluZyBrZXlzLgABRQsACCxWYWxpZGF0b3JJZAQEdCBBIHN0YWJsZSBJRCBmb3IgYSB2YWxpZGF0b3IuEEtleXOZAQQoIFRoZSBrZXlzLgAWAAAQQXVyYQEQQXVyYQgsQXV0aG9yaXRpZXMBAEkLBAAEbCBUaGUgY3VycmVudCBhdXRob3JpdHkgc2V0LgAsQ3VycmVudFNsb3QBAFELIAAAAAAAAAAADIAgVGhlIGN1cnJlbnQgc2xvdCBvZiB0aGlzIGJsb2NrLgCUIFRoaXMgd2lsbCBiZSBzZXQgaW4gYG9uX2luaXRpYWxpemVgLgAAAAQwU2xvdER1cmF0aW9uKCDgLgAAAAAAABQNASBUaGUgc2xvdCBkdXJhdGlvbiBBdXJhIHNob3VsZCBydW4gd2l0aCwgZXhwcmVzc2VkIGluIG1pbGxpc2Vjb25kcy4AIQEgVGhlIGVmZmVjdGl2ZSB2YWx1ZSBvZiB0aGlzIHR5cGUgY2FuIGJlIGNoYW5nZWQgd2l0aCBhIHJ1bnRpbWUgdXBncmFkZS4ANQEgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGVpdGhlciB1c2UgW2BNaW5pbXVtUGVyaW9kVGltZXNUd29gXSBvciBhIGNvbnN0LgAABCxBdXRob3JpdHlJZJ0BBJggVGhlIGlkZW50aWZpZXIgdHlwZSBmb3IgYW4gYXV0aG9yaXR5LgAXAAAcQXVyYUV4dAEcQXVyYUV4dAgsQXV0aG9yaXRpZXMBAEkLBAAUlCBTZXJ2ZXMgYXMgY2FjaGUgZm9yIHRoZSBhdXRob3JpdGllcy4AcQEgVGhlIGF1dGhvcml0aWVzIGluIEF1UmEgYXJlIG92ZXJ3cml0dGVuIGluIGBvbl9pbml0aWFsaXplYCB3aGVuIHdlIHN3aXRjaCB0byBhIG5ldyBzZXNzaW9uLF0BIGJ1dCB3ZSByZXF1aXJlIHRoZSBvbGQgYXV0aG9yaXRpZXMgdG8gdmVyaWZ5IHRoZSBzZWFsIHdoZW4gdmFsaWRhdGluZyBhIFBvVi4gVGhpcyB3aWxsDQEgYWx3YXlzIGJlIHVwZGF0ZWQgdG8gdGhlIGxhdGVzdCBBdVJhIGF1dGhvcml0aWVzIGluIGBvbl9maW5hbGl6ZWAuADRSZWxheVNsb3RJbmZvAABVCwQAEAkBIEN1cnJlbnQgcmVsYXkgY2hhaW4gc2xvdCBwYWlyZWQgd2l0aCBhIG51bWJlciBvZiBhdXRob3JlZCBibG9ja3MuAGUBIFRoaXMgaXMgdXBkYXRlZCBpbiBbYEZpeGVkVmVsb2NpdHlDb25zZW5zdXNIb29rOjpvbl9zdGF0ZV9wcm9vZmBdIHdpdGggdGhlIGN1cnJlbnQgcmVsYXncIGNoYWluIHNsb3QgYXMgcHJvdmlkZWQgYnkgdGhlIHJlbGF5IGNoYWluIHN0YXRlIHByb29mLgAAAAAAAAAYAAAkWGNtcFF1ZXVlASRYY21wUXVldWUcUEluYm91bmRYY21wU3VzcGVuZGVkAQBZCwQAIA0BIFRoZSBzdXNwZW5kZWQgaW5ib3VuZCBYQ01QIGNoYW5uZWxzLiBBbGwgb3RoZXJzIGFyZSBub3Qgc3VzcGVuZGVkLgBxASBUaGlzIGlzIGEgYFN0b3JhZ2VWYWx1ZWAgaW5zdGVhZCBvZiBhIGBTdG9yYWdlTWFwYCBzaW5jZSB3ZSBleHBlY3QgbXVsdGlwbGUgcmVhZHMgcGVyIGJsb2NraQEgdG8gZGlmZmVyZW50IGtleXMgd2l0aCBhIG9uZSBieXRlIHBheWxvYWQuIFRoZSBhY2Nlc3MgdG8gYEJvdW5kZWRCVHJlZVNldGAgd2lsbCBiZSBjYWNoZWQVASB3aXRoaW4gdGhlIGJsb2NrIGFuZCB0aGVyZWZvcmUgb25seSBpbmNsdWRlZCBvbmNlIGluIHRoZSBwcm9vZiBzaXplLgBlASBOT1RFOiBUaGUgUG9WIGJlbmNobWFya2luZyBjYW5ub3Qga25vdyB0aGlzIGFuZCB3aWxsIG92ZXItZXN0aW1hdGUsIGJ1dCB0aGUgYWN0dWFsIHByb29mRCB3aWxsIGJlIHNtYWxsZXIuAEhPdXRib3VuZFhjbXBTdGF0dXMBAGELBAAYXQEgVGhlIG5vbi1lbXB0eSBYQ01QIGNoYW5uZWxzIGluIG9yZGVyIG9mIGJlY29taW5nIG5vbi1lbXB0eSwgYW5kIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RRASBhbmQgbGFzdCBvdXRib3VuZCBtZXNzYWdlLiBJZiB0aGUgdHdvIGluZGljZXMgYXJlIGVxdWFsLCB0aGVuIGl0IGluZGljYXRlcyBhbiBlbXB0eVkBIHF1ZXVlIGFuZCB0aGVyZSBtdXN0IGJlIGEgbm9uLWBPa2AgYE91dGJvdW5kU3RhdHVzYC4gV2UgYXNzdW1lIHF1ZXVlcyBncm93IG5vIGdyZWF0ZXJZASB0aGFuIDY1NTM1IGl0ZW1zLiBRdWV1ZSBpbmRpY2VzIGZvciBub3JtYWwgbWVzc2FnZXMgYmVnaW4gYXQgb25lOyB6ZXJvIGlzIHJlc2VydmVkIGluEQEgY2FzZSBvZiB0aGUgbmVlZCB0byBzZW5kIGEgaGlnaC1wcmlvcml0eSBzaWduYWwgbWVzc2FnZSB0aGlzIGJsb2NrLgkBIFRoZSBib29sIGlzIHRydWUgaWYgdGhlcmUgaXMgYSBzaWduYWwgbWVzc2FnZSB3YWl0aW5nIHRvIGJlIHNlbnQuAFBPdXRib3VuZFhjbXBNZXNzYWdlcwEBCAIFdQt5CwQABLwgVGhlIG1lc3NhZ2VzIG91dGJvdW5kIGluIGEgZ2l2ZW4gWENNUCBjaGFubmVsLgA4U2lnbmFsTWVzc2FnZXMBAQQCnHkLBAAEoCBBbnkgc2lnbmFsIG1lc3NhZ2VzIHdhaXRpbmcgdG8gYmUgc2VudC4ALFF1ZXVlQ29uZmlnAQB9CzAgAAAAMAAAAAgAAAAEFQEgVGhlIGNvbmZpZ3VyYXRpb24gd2hpY2ggY29udHJvbHMgdGhlIGR5bmFtaWNzIG9mIHRoZSBvdXRib3VuZCBxdWV1ZS4AOFF1ZXVlU3VzcGVuZGVkAQBZAQQABEEBIFdoZXRoZXIgb3Igbm90IHRoZSBYQ01QIHF1ZXVlIGlzIHN1c3BlbmRlZCBmcm9tIGV4ZWN1dGluZyBpbmNvbWluZyBYQ01zIG9yIG5vdC4ARERlbGl2ZXJ5RmVlRmFjdG9yAQEEBZwJBUAAAGSns7bgDQAAAAAAAAAABMQgVGhlIGZhY3RvciB0byBtdWx0aXBseSB0aGUgYmFzZSBkZWxpdmVyeSBmZWUgYnkuAAGhAQABeQgADExNYXhJbmJvdW5kU3VzcGVuZGVkOBDoAwAAFEkBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbmJvdW5kIFhDTVAgY2hhbm5lbHMgdGhhdCBjYW4gYmUgc3VzcGVuZGVkIHNpbXVsdGFuZW91c2x5LgBdASBBbnkgZnVydGhlciBjaGFubmVsIHN1c3BlbnNpb25zIHdpbGwgZmFpbCBhbmQgbWVzc2FnZXMgbWF5IGdldCBkcm9wcGVkIHdpdGhvdXQgZnVydGhlckUBIG5vdGljZS4gQ2hvb3NpbmcgYSBoaWdoIHZhbHVlICgxMDAwKSBpcyBva2F5OyB0aGUgdHJhZGUtb2ZmIHRoYXQgaXMgZGVzY3JpYmVkIGlu2CBbYEluYm91bmRYY21wU3VzcGVuZGVkYF0gc3RpbGwgYXBwbGllcyBhdCB0aGF0IHNjYWxlLgBkTWF4QWN0aXZlT3V0Ym91bmRDaGFubmVsczgQgAAAACBlASBNYXhpbWFsIG51bWJlciBvZiBvdXRib3VuZCBYQ01QIGNoYW5uZWxzIHRoYXQgY2FuIGhhdmUgbWVzc2FnZXMgcXVldWVkIGF0IHRoZSBzYW1lIHRpbWUuAFUBIElmIHRoaXMgaXMgcmVhY2hlZCwgdGhlbiBubyBmdXJ0aGVyIG1lc3NhZ2VzIGNhbiBiZSBzZW50IHRvIGNoYW5uZWxzIHRoYXQgZG8gbm90IHlldF0BIGhhdmUgYSBtZXNzYWdlIHF1ZXVlZC4gVGhpcyBzaG91bGQgYmUgc2V0IHRvIHRoZSBleHBlY3RlZCBtYXhpbXVtIG9mIG91dGJvdW5kIGNoYW5uZWxzYQEgd2hpY2ggaXMgZGV0ZXJtaW5lZCBieSBbYFNlbGY6OkNoYW5uZWxJbmZvYF0uIEl0IGlzIGltcG9ydGFudCB0byBzZXQgdGhpcyBsYXJnZSBlbm91Z2gsXQEgc2luY2Ugb3RoZXJ3aXNlIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgcHJvdG9jb2wgd2lsbCBub3Qgd29yayBhcyBpbnRlbmRlZCBhbmQgbWVzc2FnZXNRASBtYXkgYmUgZHJvcHBlZC4gVGhpcyB2YWx1ZSBpbmNyZWFzZXMgdGhlIFBvViBhbmQgc2hvdWxkIHRoZXJlZm9yZSBub3QgYmUgcGlja2VkIHRvb00BIGhpZ2guIEdvdmVybmFuY2UgbmVlZHMgdG8gcGF5IGF0dGVudGlvbiB0byBub3Qgb3BlbiBtb3JlIGNoYW5uZWxzIHRoYW4gdGhpcyB2YWx1ZS4ALE1heFBhZ2VTaXplOBAAnAEAFLggVGhlIG1heGltYWwgcGFnZSBzaXplIGZvciBIUk1QIG1lc3NhZ2UgcGFnZXMuAGEBIEEgbG93ZXIgbGltaXQgY2FuIGJlIHNldCBkeW5hbWljYWxseSwgYnV0IHRoaXMgaXMgdGhlIGhhcmQtbGltaXQgZm9yIHRoZSBQb1Ygd29yc3QgY2FzZVUBIGJlbmNobWFya2luZy4gVGhlIGxpbWl0IGZvciB0aGUgc2l6ZSBvZiBhIG1lc3NhZ2UgaXMgc2xpZ2h0bHkgYmVsb3cgdGhpcywgc2luY2Ugc29tZbggb3ZlcmhlYWQgaXMgaW5jdXJyZWQgZm9yIGVuY29kaW5nIHRoZSBmb3JtYXQuAAGBCwAAAB4AACxQb2xrYWRvdFhjbQEsUG9sa2Fkb3RYY208MFF1ZXJ5Q291bnRlcgEAKCAAAAAAAAAAAASIIFRoZSBsYXRlc3QgYXZhaWxhYmxlIHF1ZXJ5IGluZGV4LgAcUXVlcmllcwABBAIohQsEAARUIFRoZSBvbmdvaW5nIHF1ZXJpZXMuAChBc3NldFRyYXBzAQEEBjw4EAAAAAAQaCBUaGUgZXhpc3RpbmcgYXNzZXQgdHJhcHMuAGEBIEtleSBpcyB0aGUgYmxha2UyIDI1NiBoYXNoIG9mIChvcmlnaW4sIHZlcnNpb25lZCBgQXNzZXRzYCkgcGFpci4gVmFsdWUgaXMgdGhlIG51bWJlciBvZh0BIHRpbWVzIHRoaXMgcGFpciBoYXMgYmVlbiB0cmFwcGVkICh1c3VhbGx5IGp1c3QgMSBpZiBpdCBleGlzdHMgYXQgYWxsKS4AOFNhZmVYY21WZXJzaW9uAAA4BAAIYQEgRGVmYXVsdCB2ZXJzaW9uIHRvIGVuY29kZSBYQ00gd2hlbiBsYXRlc3QgdmVyc2lvbiBvZiBkZXN0aW5hdGlvbiBpcyB1bmtub3duLiBJZiBgTm9uZWAsPQEgdGhlbiB0aGUgZGVzdGluYXRpb25zIHdob3NlIFhDTSB2ZXJzaW9uIGlzIHVua25vd24gYXJlIGNvbnNpZGVyZWQgdW5yZWFjaGFibGUuAEBTdXBwb3J0ZWRWZXJzaW9uAAEIBQKZCzgEAATwIFRoZSBMYXRlc3QgdmVyc2lvbnMgdGhhdCB3ZSBrbm93IHZhcmlvdXMgbG9jYXRpb25zIHN1cHBvcnQuAEBWZXJzaW9uTm90aWZpZXJzAAEIBQKZCygEAAQFASBBbGwgbG9jYXRpb25zIHRoYXQgd2UgaGF2ZSByZXF1ZXN0ZWQgdmVyc2lvbiBub3RpZmljYXRpb25zIGZyb20uAFBWZXJzaW9uTm90aWZ5VGFyZ2V0cwABCAUCmQudCwQACHEBIFRoZSB0YXJnZXQgbG9jYXRpb25zIHRoYXQgYXJlIHN1YnNjcmliZWQgdG8gb3VyIHZlcnNpb24gY2hhbmdlcywgYXMgd2VsbCBhcyB0aGUgbW9zdCByZWNlbnSUIG9mIG91ciB2ZXJzaW9ucyB3ZSBpbmZvcm1lZCB0aGVtIG9mLgBUVmVyc2lvbkRpc2NvdmVyeVF1ZXVlAQChCwQADGUBIERlc3RpbmF0aW9ucyB3aG9zZSBsYXRlc3QgWENNIHZlcnNpb24gd2Ugd291bGQgbGlrZSB0byBrbm93LiBEdXBsaWNhdGVzIG5vdCBhbGxvd2VkLCBhbmRxASB0aGUgYHUzMmAgY291bnRlciBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYSBzZW5kIHRvIHRoZSBkZXN0aW5hdGlvbiBoYXMgYmVlbiBhdHRlbXB0ZWQsjCB3aGljaCBpcyB1c2VkIGFzIGEgcHJpb3JpdGl6YXRpb24uAEBDdXJyZW50TWlncmF0aW9uAACtCwQABJwgVGhlIGN1cnJlbnQgbWlncmF0aW9uJ3Mgc3RhZ2UsIGlmIGFueS4AVFJlbW90ZUxvY2tlZEZ1bmdpYmxlcwABDAUCArELtQsEAATwIEZ1bmdpYmxlIGFzc2V0cyB3aGljaCB3ZSBrbm93IGFyZSBsb2NrZWQgb24gYSByZW1vdGUgY2hhaW4uADxMb2NrZWRGdW5naWJsZXMAAQQCBMULBAAE4CBGdW5naWJsZSBhc3NldHMgd2hpY2ggd2Uga25vdyBhcmUgbG9ja2VkIG9uIHRoaXMgY2hhaW4uAFRYY21FeGVjdXRpb25TdXNwZW5kZWQBAFkBBAAEtCBHbG9iYWwgc3VzcGVuc2lvbiBzdGF0ZSBvZiB0aGUgWENNIGV4ZWN1dG9yLgA8U2hvdWxkUmVjb3JkWGNtAQBZAQQAHFkBIFdoZXRoZXIgb3Igbm90IGluY29taW5nIFhDTXMgKGJvdGggZXhlY3V0ZWQgbG9jYWxseSBhbmQgcmVjZWl2ZWQpIHNob3VsZCBiZSByZWNvcmRlZC7EIE9ubHkgb25lIFhDTSBwcm9ncmFtIHdpbGwgYmUgcmVjb3JkZWQgYXQgYSB0aW1lLikBIFRoaXMgaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBydW50aW1lIEFQSXMsIGFuZCBpdCdzIGFkdmlzZWQgaXQgc3RheXMgZmFsc2UNASBmb3IgYWxsIG90aGVyIHVzZSBjYXNlcywgc28gYXMgdG8gbm90IGRlZ3JhZGUgcmVndWxhciBwZXJmb3JtYW5jZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgAsUmVjb3JkZWRYY20AAPUCBAAYSQEgSWYgW2BTaG91bGRSZWNvcmRYY21gXSBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiB0aGUgbGFzdCBYQ00gcHJvZ3JhbSBleGVjdXRlZCBsb2NhbGx5VCB3aWxsIGJlIHN0b3JlZCBoZXJlLikBIFJ1bnRpbWUgQVBJcyBjYW4gZmV0Y2ggdGhlIFhDTSB0aGF0IHdhcyBleGVjdXRlZCBieSBhY2Nlc3NpbmcgdGhpcyB2YWx1ZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgBEQXV0aG9yaXplZEFsaWFzZXMAAQQCqQHRCwQADGUBIE1hcCBvZiBhdXRob3JpemVkIGFsaWFzZXJzIG9mIGxvY2FsIG9yaWdpbnMuIEVhY2ggbG9jYWwgbG9jYXRpb24gY2FuIGF1dGhvcml6ZSBhIGxpc3Qgb2ZZASBvdGhlciBsb2NhdGlvbnMgdG8gYWxpYXMgaW50byBpdC4gRWFjaCBhbGlhc2VyIGlzIG9ubHkgdmFsaWQgdW50aWwgaXRzIGlubmVyIGBleHBpcnlgOCBibG9jayBudW1iZXIuAAGlAQgBArkBVGhpcyBleHRyaW5zaWMgdXNlcyBgV2VpZ2h0TGltaXQ6OlVubGltaXRlZGAsIHBsZWFzZSBtaWdyYXRlIHRvIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2Agb3IgYHRyYW5zZmVyX2Fzc2V0c2AAAgLZAVRoaXMgZXh0cmluc2ljIHVzZXMgYFdlaWdodExpbWl0OjpVbmxpbWl0ZWRgLCBwbGVhc2UgbWlncmF0ZSB0byBgbGltaXRlZF9yZXNlcnZlX3RyYW5zZmVyX2Fzc2V0c2Agb3IgYHRyYW5zZmVyX2Fzc2V0c2AAAX0IABBEVW5pdmVyc2FsTG9jYXRpb24BAhgCCQIAcRcEhCBUaGlzIGNoYWluJ3MgVW5pdmVyc2FsIExvY2F0aW9uLgBQQWR2ZXJ0aXNlZFhjbVZlcnNpb244EAUAAAAIJQEgVGhlIGxhdGVzdCBzdXBwb3J0ZWQgdmVyc2lvbiB0aGF0IHdlIGFkdmVydGlzZS4gR2VuZXJhbGx5IGp1c3Qgc2V0IGl0IHRvhCBgcGFsbGV0X3hjbTo6Q3VycmVudFhjbVZlcnNpb25gLgAoTWF4TG9ja2VyczgQCAAAAAQZASBUaGUgbWF4aW11bSBudW1iZXIgb2YgbG9jYWwgWENNIGxvY2tzIHRoYXQgYSBzaW5nbGUgYWNjb3VudCBtYXkgaGF2ZS4AWE1heFJlbW90ZUxvY2tDb25zdW1lcnM4EAAAAAAE/CBUaGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGEgc2luZ2xlIHJlbW90ZSBsb2NrIG1heSBoYXZlLgAB6QsEGAK8VXNlIGBMb2NhbEV4ZWN1dGlvbkluY29tcGxldGVXaXRoRXJyb3JgIGluc3RlYWQBGDIwLjAuMAgsUnVudGltZUNhbGwgBGQgVGhlIHJ1bnRpbWUgYENhbGxgIHR5cGUucFJlbW90ZUxvY2tDb25zdW1lcklkZW50aWZpZXIQBMQgVGhlIElEIHR5cGUgZm9yIGxvY2FsIGNvbnN1bWVycyBvZiByZW1vdGUgbG9ja3MuAB8AAChDdW11bHVzWGNtAAGlAwABjQgAAAAAACAAAERUb0t1c2FtYVhjbVJvdXRlcgFEVG9LdXNhbWFYY21Sb3V0ZXIEGEJyaWRnZQEA8QtEAABkp7O24A0AAAAAAAAAAAAcaCBCcmlkZ2UgdGhhdCB3ZSBhcmUgdXNpbmcuAHEBICoqYnJpZGdlcy12MSoqIGFzc3VtcHRpb25zOiBhbGwgb3V0Ym91bmQgbWVzc2FnZXMgdGhyb3VnaCB0aGlzIHJvdXRlciBhcmUgdXNpbmcgc2luZ2xlIGxhbmVtASBhbmQgdG8gc2luZ2xlIHJlbW90ZSBjb25zZW5zdXMuIElmIHRoZXJlIGlzIHNvbWUgb3RoZXIgcmVtb3RlIGNvbnNlbnN1cyB0aGF0IHVzZXMgdGhlIHNhbWVhASBicmlkZ2UgaHViLCB0aGUgc2VwYXJhdGUgcGFsbGV0IGluc3RhbmNlIHNoYWxsIGJlIHVzZWQsIEluIGB2MmAgd2UnbGwgaGF2ZSBhbGwgcmVxdWlyZWRxASBwcmltaXRpdmVzIChsYW5lLWlkIGFrYSBicmlkZ2UtaWQsIGRlcml2ZWQgZnJvbSBYQ00gbG9jYXRpb25zKSB0byBzdXBwb3J0IG11bHRpcGxlICBicmlkZ2VzdCBieSB0aGUgc2FtZSBwYWxsZXQgaW5zdGFuY2UuAAGpAwABkQgAAAAAACIAADBNZXNzYWdlUXVldWUBME1lc3NhZ2VRdWV1ZQwwQm9va1N0YXRlRm9yAQEEBbED9Qt0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEzCBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IGFuZCBsYXN0IChub24tZW1wdHkpIHBhZ2VzLgAsU2VydmljZUhlYWQAALEDBAAEvCBUaGUgb3JpZ2luIGF0IHdoaWNoIHdlIHNob3VsZCBiZWdpbiBzZXJ2aWNpbmcuABRQYWdlcwABCAUFAQwFDAQABIggVGhlIG1hcCBvZiBwYWdlIGluZGljZXMgdG8gcGFnZXMuAAGtAwABlQgAECBIZWFwU2l6ZTgQAAABABQ9ASBUaGUgc2l6ZSBvZiB0aGUgcGFnZTsgdGhpcyBpbXBsaWVzIHRoZSBtYXhpbXVtIG1lc3NhZ2Ugc2l6ZSB3aGljaCBjYW4gYmUgc2VudC4AWQEgQSBnb29kIHZhbHVlIGRlcGVuZHMgb24gdGhlIGV4cGVjdGVkIG1lc3NhZ2Ugc2l6ZXMsIHRoZWlyIHdlaWdodHMsIHRoZSB3ZWlnaHQgdGhhdCBpc10BIGF2YWlsYWJsZSBmb3IgcHJvY2Vzc2luZyB0aGVtIGFuZCB0aGUgbWF4aW1hbCBuZWVkZWQgbWVzc2FnZSBzaXplLiBUaGUgbWF4aW1hbCBtZXNzYWdlEQEgc2l6ZSBpcyBzbGlnaHRseSBsb3dlciB0aGFuIHRoaXMgYXMgZGVmaW5lZCBieSBbYE1heE1lc3NhZ2VMZW5PZmBdLgAgTWF4U3RhbGU4EAgAAAAMXQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWxlIHBhZ2VzIChpLmUuIG9mIG92ZXJ3ZWlnaHQgbWVzc2FnZXMpIGFsbG93ZWQgYmVmb3JlIGN1bGxpbmdRASBjYW4gaGFwcGVuLiBPbmNlIHRoZXJlIGFyZSBtb3JlIHN0YWxlIHBhZ2VzIHRoYW4gdGhpcywgdGhlbiBoaXN0b3JpY2FsIHBhZ2VzIG1heSBiZfwgZHJvcHBlZCwgZXZlbiBpZiB0aGV5IGNvbnRhaW4gdW5wcm9jZXNzZWQgb3ZlcndlaWdodCBtZXNzYWdlcy4ANFNlcnZpY2VXZWlnaHQNASwBBwAQpdToAgBAARhBASBUaGUgYW1vdW50IG9mIHdlaWdodCAoaWYgYW55KSB3aGljaCBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdGhlIG1lc3NhZ2UgcXVldWUgZm9yqCBzZXJ2aWNpbmcgZW5xdWV1ZWQgaXRlbXMgYG9uX2luaXRpYWxpemVgLgD8IFRoaXMgbWF5IGJlIGxlZ2l0aW1hdGVseSBgTm9uZWAgaW4gdGhlIGNhc2UgdGhhdCB5b3Ugd2lsbCBjYWxsXQEgYFNlcnZpY2VRdWV1ZXM6OnNlcnZpY2VfcXVldWVzYCBtYW51YWxseSBvciBzZXQgW2BTZWxmOjpJZGxlTWF4U2VydmljZVdlaWdodGBdIHRvIGhhdmVUIGl0IHJ1biBpbiBgb25faWRsZWAuAFBJZGxlTWF4U2VydmljZVdlaWdodA0BLAEHABCl1OgCAEABFF0BIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgKGlmIGFueSkgdG8gYmUgdXNlZCBmcm9tIHJlbWFpbmluZyB3ZWlnaHQgYG9uX2lkbGVgIHdoaWNoQQEgc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlIGZvciBzZXJ2aWNpbmcgZW5xdWV1ZWQgaXRlbXMgYG9uX2lkbGVgLj0BIFVzZWZ1bCBmb3IgcGFyYWNoYWlucyB0byBwcm9jZXNzIG1lc3NhZ2VzIGF0IHRoZSBzYW1lIGJsb2NrIHRoZXkgYXJlIHJlY2VpdmVkLgApASBJZiBgTm9uZWAsIGl0IHdpbGwgbm90IGNhbGwgYFNlcnZpY2VRdWV1ZXM6OnNlcnZpY2VfcXVldWVzYCBpbiBgb25faWRsZWAuAAENDAAEEFNpemU4BFQgUGFnZS9oZWFwIHNpemUgdHlwZS4AIwAAYFNub3dicmlkZ2VTeXN0ZW1Gcm9udGVuZAFgU25vd2JyaWRnZVN5c3RlbUZyb250ZW5kBExFeHBvcnRPcGVyYXRpbmdNb2RlAQC5AwQABNggVGhlIGN1cnJlbnQgb3BlcmF0aW5nIG1vZGUgZm9yIGV4cG9ydGluZyB0byBFdGhlcmV1bS4AAbUDAAGdCAAAAREMAAAAJAAAHFV0aWxpdHkAAckDAAGhCAAETGJhdGNoZWRfY2FsbHNfbGltaXQ4EKoqAAAEqCBUaGUgbGltaXQgb24gdGhlIG51bWJlciBvZiBiYXRjaGVkIGNhbGxzLgABFQwACCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLjRQYWxsZXRzT3JpZ2lu1QME8CBUaGUgY2FsbGVyIG9yaWdpbiwgb3ZlcmFyY2hpbmcgdHlwZSBvZiBhbGwgcGFsbGV0cyBvcmlnaW5zLgAoAAAgTXVsdGlzaWcBIE11bHRpc2lnBCRNdWx0aXNpZ3MAAQgFAhkMHQwEAASUIFRoZSBzZXQgb2Ygb3BlbiBtdWx0aXNpZyBvcGVyYXRpb25zLgABCQQAAaUIAAwsRGVwb3NpdEJhc2VVAUAA27t3AAAAAAAAAAAAAAAAGFkBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYSBtdWx0aXNpZyBleGVjdXRpb24gb3IgdG+EIHN0b3JlIGEgZGlzcGF0Y2ggY2FsbCBmb3IgbGF0ZXIuAAEBIFRoaXMgaXMgaGVsZCBmb3IgYW4gYWRkaXRpb25hbCBzdG9yYWdlIGl0ZW0gd2hvc2UgdmFsdWUgc2l6ZSBpczEBIGA0ICsgc2l6ZW9mKChCbG9ja051bWJlciwgQmFsYW5jZSwgQWNjb3VudElkKSlgIGJ5dGVzIGFuZCB3aG9zZSBrZXkgc2l6ZSBpc4AgYDMyICsgc2l6ZW9mKEFjY291bnRJZClgIGJ5dGVzLgA0RGVwb3NpdEZhY3RvclUBQADUMAAAAAAAAAAAAAAAAAAMVQEgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIHVuaXQgdGhyZXNob2xkIHdoZW4gY3JlYXRpbmcgYSBtdWx0aXNpZyBleGVjdXRpb24uACUBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIDMyIGJ5dGVzIG1vcmUgaW50byBhIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLgA4TWF4U2lnbmF0b3JpZXM4EGQAAAAE7CBUaGUgbWF4aW11bSBhbW91bnQgb2Ygc2lnbmF0b3JpZXMgYWxsb3dlZCBpbiB0aGUgbXVsdGlzaWcuAAElDAAELFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuACkAABRQcm94eQEUUHJveHkIHFByb3hpZXMBAQQFBCkMRAAAAAAAAAAAAAAAAAAAAAAACEUBIFRoZSBzZXQgb2YgYWNjb3VudCBwcm94aWVzLiBNYXBzIHRoZSBhY2NvdW50IHdoaWNoIGhhcyBkZWxlZ2F0ZWQgdG8gdGhlIGFjY291bnRzIQEgd2hpY2ggYXJlIGJlaW5nIGRlbGVnYXRlZCB0bywgdG9nZXRoZXIgd2l0aCB0aGUgYW1vdW50IGhlbGQgb24gZGVwb3NpdC4ANEFubm91bmNlbWVudHMBAQQFBDkMRAAAAAAAAAAAAAAAAAAAAAAABKwgVGhlIGFubm91bmNlbWVudHMgbWFkZSBieSB0aGUgcHJveHkgKGtleSkuAAEVBAABqQgAGEBQcm94eURlcG9zaXRCYXNlVQFAAJ1ydwAAAAAAAAAAAAAAABARASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGEgcHJveHkuAAEBIFRoaXMgaXMgaGVsZCBmb3IgYW4gYWRkaXRpb25hbCBzdG9yYWdlIGl0ZW0gd2hvc2UgdmFsdWUgc2l6ZSBpcyUBIGBzaXplb2YoQmFsYW5jZSlgIGJ5dGVzIGFuZCB3aG9zZSBrZXkgc2l6ZSBpcyBgc2l6ZW9mKEFjY291bnRJZClgIGJ5dGVzLgBIUHJveHlEZXBvc2l0RmFjdG9yVQFAoFoyAAAAAAAAAAAAAAAAABS8IFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciBwcm94eSBhZGRlZC4ANQEgVGhpcyBpcyBoZWxkIGZvciBhZGRpbmcgMzIgYnl0ZXMgcGx1cyBhbiBpbnN0YW5jZSBvZiBgUHJveHlUeXBlYCBtb3JlIGludG8gYWEBIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLiBUaHVzLCB3aGVuIGNvbmZpZ3VyaW5nIGBQcm94eURlcG9zaXRGYWN0b3JgIG9uZSBzaG91bGQgdGFrZfQgaW50byBhY2NvdW50IGAzMiArIHByb3h5X3R5cGUuZW5jb2RlKCkubGVuKClgIGJ5dGVzIG9mIGRhdGEuAChNYXhQcm94aWVzOBAgAAAABPAgVGhlIG1heGltdW0gYW1vdW50IG9mIHByb3hpZXMgYWxsb3dlZCBmb3IgYSBzaW5nbGUgYWNjb3VudC4AKE1heFBlbmRpbmc4ECAAAAAERQEgVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUtZGVsYXllZCBhbm5vdW5jZW1lbnRzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgcGVuZGluZy4AXEFubm91bmNlbWVudERlcG9zaXRCYXNlVQFAANJ+dwAAAAAAAAAAAAAAABAxASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGFuIGFubm91bmNlbWVudC4ASQEgVGhpcyBpcyBoZWxkIHdoZW4gYSBuZXcgc3RvcmFnZSBpdGVtIGhvbGRpbmcgYSBgQmFsYW5jZWAgaXMgY3JlYXRlZCAodHlwaWNhbGx5IDE2ICBieXRlcykuAGRBbm5vdW5jZW1lbnREZXBvc2l0RmFjdG9yVQFAQLVkAAAAAAAAAAAAAAAAABDUIFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciBhbm5vdW5jZW1lbnQgbWFkZS4AWQEgVGhpcyBpcyBoZWxkIGZvciBhZGRpbmcgYW4gYEFjY291bnRJZGAsIGBIYXNoYCBhbmQgYEJsb2NrTnVtYmVyYCAodHlwaWNhbGx5IDY4IGJ5dGVzKYwgaW50byBhIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLgABSQwACCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLiRQcm94eVR5cGUdBBBVASBBIGtpbmQgb2YgcHJveHk7IHNwZWNpZmllZCB3aXRoIHRoZSBwcm94eSBhbmQgcGFzc2VkIGluIHRvIHRoZSBgSXNQcm94eWFibGVgIGZpbHRlci5RASBUaGUgaW5zdGFuY2UgZmlsdGVyIGRldGVybWluZXMgd2hldGhlciBhIGdpdmVuIGNhbGwgbWF5IGJlIHByb3hpZWQgdW5kZXIgdGhpcyB0eXBlLgBNASBJTVBPUlRBTlQ6IGBEZWZhdWx0YCBtdXN0IGJlIHByb3ZpZGVkIGFuZCBNVVNUIEJFIHRoZSB0aGUgKm1vc3QgcGVybWlzc2l2ZSogdmFsdWUuCBgJ14NGcnoO9YwPoDuvoyPLxRSI2SoapxN7A7+1DvwXRGNoZWNrX3Blcm1pc3Npb25zCBBjYWxsIChwcm94eV90eXBlHQRZAQT0IENoZWNrIGlmIGEgYFJ1bnRpbWVDYWxsYCBpcyBhbGxvd2VkIGZvciBhIGdpdmVuIGBQcm94eVR5cGVgLgAYCdeDRnJ6DvWMD6A7r6MjFxSwYH1irwo7OwrSxdVcWCxpc19zdXBlcnNldAggdG9fY2hlY2sdBBxhZ2FpbnN0HQRZAQT0IENoZWNrIGlmIG9uZSBgUHJveHlUeXBlYCBpcyBhIHN1YnNldCBvZiBhbm90aGVyIGBQcm94eVR5cGVgLgAqAAAcSW5kaWNlcwEcSW5kaWNlcwQgQWNjb3VudHMAAQQCOE0MBAAEiCBUaGUgbG9va3VwIGZyb20gaW5kZXggdG8gYWNjb3VudC4AASEEAAGxCAAEHERlcG9zaXRVAUAA0n53AAAAAAAAAAAAAAAABKwgVGhlIGRlcG9zaXQgbmVlZGVkIGZvciByZXNlcnZpbmcgYW4gaW5kZXguAAFRDAAEMEFjY291bnRJbmRleDgIVQEgVHlwZSB1c2VkIGZvciBzdG9yaW5nIGFuIGFjY291bnQncyBpbmRleDsgaW1wbGllcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYWNjb3VudHMgdGhlRCBzeXN0ZW0gY2FuIGhvbGQuACsAABhBc3NldHMBGEFzc2V0cxgUQXNzZXQAAQQCOFUMBAAEVCBEZXRhaWxzIG9mIGFuIGFzc2V0LgAcQWNjb3VudAABCAICXQxhDAQABOQgVGhlIGhvbGRpbmdzIG9mIGEgc3BlY2lmaWMgYWNjb3VudCBmb3IgYSBzcGVjaWZpYyBhc3NldC4AJEFwcHJvdmFscwABDAICAm0McQwEAAxZASBBcHByb3ZlZCBiYWxhbmNlIHRyYW5zZmVycy4gRmlyc3QgYmFsYW5jZSBpcyB0aGUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2Zlci4gU2Vjb25k6CBpcyB0aGUgYW1vdW50IG9mIGBUOjpDdXJyZW5jeWAgcmVzZXJ2ZWQgZm9yIHN0b3JpbmcgdGhpcy5JASBGaXJzdCBrZXkgaXMgdGhlIGFzc2V0IElELCBzZWNvbmQga2V5IGlzIHRoZSBvd25lciBhbmQgdGhpcmQga2V5IGlzIHRoZSBkZWxlZ2F0ZS4AIE1ldGFkYXRhAQEEAjh1DFAAAAAAAAAAAAAAAAAAAAAAAAAAAARYIE1ldGFkYXRhIG9mIGFuIGFzc2V0LgAgUmVzZXJ2ZXMBAQQCOCkEBAAE/CBNYXBzIGFuIGFzc2V0IHRvIGEgbGlzdCBvZiBpdHMgY29uZmlndXJlZCByZXNlcnZlIGluZm9ybWF0aW9uLgAsTmV4dEFzc2V0SWQAADgEACRtASBUaGUgYXNzZXQgSUQgZW5mb3JjZWQgZm9yIHRoZSBuZXh0IGFzc2V0IGNyZWF0aW9uLCBpZiBhbnkgcHJlc2VudC4gT3RoZXJ3aXNlLCB0aGlzIHN0b3JhZ2VQIGl0ZW0gaGFzIG5vIGVmZmVjdC4AZQEgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBzZXR0aW5nIHVwIGNvbnN0cmFpbnRzIGZvciBJRHMgb2YgdGhlIG5ldyBhc3NldHMuIEZvciBleGFtcGxlLCBieWkBIHByb3ZpZGluZyBhbiBpbml0aWFsIFtgTmV4dEFzc2V0SWRgXSBhbmQgdXNpbmcgdGhlIFtgY3JhdGU6OkF1dG9JbmNBc3NldElkYF0gY2FsbGJhY2ssIGFu6CBhdXRvLWluY3JlbWVudCBtb2RlbCBjYW4gYmUgYXBwbGllZCB0byBhbGwgbmV3IGFzc2V0IElEcy4AIQEgVGhlIGluaXRpYWwgbmV4dCBhc3NldCBJRCBjYW4gYmUgc2V0IHVzaW5nIHRoZSBbYEdlbmVzaXNDb25maWdgXSBvciB0aGUhASBbU2V0TmV4dEFzc2V0SWRdKGBtaWdyYXRpb246Om5leHRfYXNzZXRfaWQ6OlNldE5leHRBc3NldElkYCkgbWlncmF0aW9uLgABJQQAAbUIABxAUmVtb3ZlSXRlbXNMaW1pdDgQ6AMAAAxRASBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIGRlc3Ryb3kgcGVyIGBkZXN0cm95X2FjY291bnRzYCBhbmQgYGRlc3Ryb3lfYXBwcm92YWxzYCBjYWxsLgA5ASBNdXN0IGJlIGNvbmZpZ3VyZWQgdG8gcmVzdWx0IGluIGEgd2VpZ2h0IHRoYXQgbWFrZXMgZWFjaCBjYWxsIGZpdCBpbiBhIGJsb2NrLgAwQXNzZXREZXBvc2l0VQFAwH5XeAAAAAAAAAAAAAAAAAT4IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBhc3NldC4ATEFzc2V0QWNjb3VudERlcG9zaXRVAUAA/k13AAAAAAAAAAAAAAAACEUBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhIG5vbi1wcm92aWRlciBhc3NldCBhY2NvdW50IHRvIGJlMCBtYWludGFpbmVkLgBMTWV0YWRhdGFEZXBvc2l0QmFzZVUBQIBWnXcAAAAAAAAAAAAAAAAEUQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBhc3NldC4AWE1ldGFkYXRhRGVwb3NpdFBlckJ5dGVVAUCghgEAAAAAAAAAAAAAAAAACFUBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyB5b3Ugc3RvcmUgaW4geW91ciggbWV0YWRhdGEuADxBcHByb3ZhbERlcG9zaXRVAUAA4fUFAAAAAAAAAAAAAAAABCEBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gY3JlYXRpbmcgYSBuZXcgYXBwcm92YWwuACxTdHJpbmdMaW1pdDgQMgAAAATgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIG5hbWUgb3Igc3ltYm9sIHN0b3JlZCBvbi1jaGFpbi4AAX0MABQcQmFsYW5jZVUBBJwgVGhlIHVuaXRzIGluIHdoaWNoIHdlIHJlY29yZCBiYWxhbmNlcy4cQXNzZXRJZDgEjCBJZGVudGlmaWVyIGZvciB0aGUgY2xhc3Mgb2YgYXNzZXQuQEFzc2V0SWRQYXJhbWV0ZXJgHFkBIFdyYXBwZXIgYXJvdW5kIGBTZWxmOjpBc3NldElkYCB0byB1c2UgaW4gZGlzcGF0Y2hhYmxlIGNhbGwgc2lnbmF0dXJlcy4gQWxsb3dzIHRoZSB1c2VRASBvZiBjb21wYWN0IGVuY29kaW5nIGluIGluc3RhbmNlcyBvZiB0aGUgcGFsbGV0LCB3aGljaCB3aWxsIHByZXZlbnQgYnJlYWtpbmcgY2hhbmdlcwUBIHJlc3VsdGluZyBmcm9tIHRoZSByZW1vdmFsIG9mIGBIYXNDb21wYWN0YCBmcm9tIGBTZWxmOjpBc3NldElkYC4AWQEgVGhpcyB0eXBlIGluY2x1ZGVzIHRoZSBgRnJvbTxTZWxmOjpBc3NldElkPmAgYm91bmQsIHNpbmNlIHRpZ2h0bHkgY291cGxlZCBwYWxsZXRzIG1heUUBIHdhbnQgdG8gY29udmVydCBhbiBgQXNzZXRJZGAgaW50byBhIHBhcmFtZXRlciBmb3IgY2FsbGluZyBkaXNwYXRjaGFibGUgZnVuY3Rpb25zKCBkaXJlY3RseS4sUmVzZXJ2ZURhdGEQBOggSW5mb3JtYXRpb24gYWJvdXQgcmVzZXJ2ZSBsb2NhdGlvbnMgZm9yIGEgY2xhc3Mgb2YgYXNzZXQuFEV4dHJhEAT4IEFkZGl0aW9uYWwgZGF0YSB0byBiZSBzdG9yZWQgd2l0aCBhbiBhY2NvdW50J3MgYXNzZXQgYmFsYW5jZS4QaCpZ1Rq55IqMjMQY/5cI0qcCl60LS909pLdGKaZablw0YXNzZXRfZGV0YWlscwQIaWQ4gQwEqCBQcm92aWRlIHRoZSBhc3NldCBkZXRhaWxzIGZvciBhc3NldCBgaWRgLgBoKlnVGrnkioyMxBj/lwjSUxrH4ht2sSHnYeRzQZobAihiYWxhbmNlX29mCAx3aG8ECGlkOEUEBLQgUHJvdmlkZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBmb3IgYXNzZXQgYGlkYC4AaCpZ1Rq55IqMjMQY/5cI0i6HZqQNG2nWFRvYAeV1UF4wZ2V0X21ldGFkYXRhBAhpZDiFDATAIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgbWV0YWRhdGEgZm9yIGFzc2V0IGBpZGAuAGgqWdUaueSKjIzEGP+XCNJk9j8pI+OYKCQxY4GuHmmGRGdldF9yZXNlcnZlc19kYXRhBAhpZDgtBATUIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgcmVzZXJ2ZXMgZGF0YSBmb3IgYXNzZXQgYGlkYC4AMgAAHFVuaXF1ZXMBHFVuaXF1ZXMoFENsYXNzAAEEAjiJDAQABGQgRGV0YWlscyBvZiBhIGNvbGxlY3Rpb24uAExPd25lcnNoaXBBY2NlcHRhbmNlAAEEAgQ4BAAEKQEgVGhlIGNvbGxlY3Rpb24sIGlmIGFueSwgb2Ygd2hpY2ggYW4gYWNjb3VudCBpcyB3aWxsaW5nIHRvIHRha2Ugb3duZXJzaGlwLgAcQWNjb3VudAABDAICAo0MEAQACFkBIFRoZSBpdGVtcyBoZWxkIGJ5IGFueSBnaXZlbiBhY2NvdW50OyBzZXQgb3V0IHRoaXMgd2F5IHNvIHRoYXQgaXRlbXMgb3duZWQgYnkgYSBzaW5nbGVsIGFjY291bnQgY2FuIGJlIGVudW1lcmF0ZWQuADBDbGFzc0FjY291bnQAAQgCAoUFEAQACGkBIFRoZSBjb2xsZWN0aW9ucyBvd25lZCBieSBhbnkgZ2l2ZW4gYWNjb3VudDsgc2V0IG91dCB0aGlzIHdheSBzbyB0aGF0IGNvbGxlY3Rpb25zIG93bmVkIGJ5kCBhIHNpbmdsZSBhY2NvdW50IGNhbiBiZSBlbnVtZXJhdGVkLgAUQXNzZXQAAQgCAsyRDAQABNAgVGhlIGl0ZW1zIGluIGV4aXN0ZW5jZSBhbmQgdGhlaXIgb3duZXJzaGlwIGRldGFpbHMuADxDbGFzc01ldGFkYXRhT2YAAQQCOJUMBAAEaCBNZXRhZGF0YSBvZiBhIGNvbGxlY3Rpb24uAEhJbnN0YW5jZU1ldGFkYXRhT2YAAQgCAsyZDAQABFQgTWV0YWRhdGEgb2YgYW4gaXRlbS4AJEF0dHJpYnV0ZQABDAICAp0MoQwEAARwIEF0dHJpYnV0ZXMgb2YgYSBjb2xsZWN0aW9uLgAsSXRlbVByaWNlT2YAAQgCAsylDAQABHAgUHJpY2Ugb2YgYW4gYXNzZXQgaW5zdGFuY2UuAExDb2xsZWN0aW9uTWF4U3VwcGx5AAEEAjg4BAAE8CBLZWVwcyB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBtaWdodCBoYXZlLgABMQQAAbkIACBEQ29sbGVjdGlvbkRlcG9zaXRVAUAA6HZIFwAAAAAAAAAAAAAABAEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBjb2xsZWN0aW9uLgAsSXRlbURlcG9zaXRVAUAA4fUFAAAAAAAAAAAAAAAABPQgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGl0ZW0uAExNZXRhZGF0YURlcG9zaXRCYXNlVQFAoGr6dwAAAAAAAAAAAAAAAARNASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGl0ZW0uAFBBdHRyaWJ1dGVEZXBvc2l0QmFzZVUBQACUNXcAAAAAAAAAAAAAAAAEVQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgYW4gYXR0cmlidXRlIHRvIGFuIGl0ZW0uADhEZXBvc2l0UGVyQnl0ZVUBQKCGAQAAAAAAAAAAAAAAAAAIWQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHN0b3JlIGluIG1ldGFkYXRhLMAgZWl0aGVyICJub3JtYWwiIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZSBtZXRhZGF0YS4ALFN0cmluZ0xpbWl0OBCAAAAABLAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGRhdGEgc3RvcmVkIG9uLWNoYWluLgAgS2V5TGltaXQ4ECAAAAAEoCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW4gYXR0cmlidXRlIGtleS4AKFZhbHVlTGltaXQ4EEAAAAAEqCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW4gYXR0cmlidXRlIHZhbHVlLgABqQwACDBDb2xsZWN0aW9uSWQ4BJwgSWRlbnRpZmllciBmb3IgdGhlIGNvbGxlY3Rpb24gb2YgaXRlbS4YSXRlbUlkOAT0IFRoZSB0eXBlIHVzZWQgdG8gaWRlbnRpZnkgYSB1bmlxdWUgaXRlbSB3aXRoaW4gYSBjb2xsZWN0aW9uLgAzAAAQTmZ0cwEQTmZ0czwoQ29sbGVjdGlvbgABBAI4rQwEAARkIERldGFpbHMgb2YgYSBjb2xsZWN0aW9uLgBMT3duZXJzaGlwQWNjZXB0YW5jZQABBAIEOAQABCkBIFRoZSBjb2xsZWN0aW9uLCBpZiBhbnksIG9mIHdoaWNoIGFuIGFjY291bnQgaXMgd2lsbGluZyB0byB0YWtlIG93bmVyc2hpcC4AHEFjY291bnQAAQwCAgKNDBAEAAhZASBUaGUgaXRlbXMgaGVsZCBieSBhbnkgZ2l2ZW4gYWNjb3VudDsgc2V0IG91dCB0aGlzIHdheSBzbyB0aGF0IGl0ZW1zIG93bmVkIGJ5IGEgc2luZ2xlbCBhY2NvdW50IGNhbiBiZSBlbnVtZXJhdGVkLgBEQ29sbGVjdGlvbkFjY291bnQAAQgCAoUFEAQACGkBIFRoZSBjb2xsZWN0aW9ucyBvd25lZCBieSBhbnkgZ2l2ZW4gYWNjb3VudDsgc2V0IG91dCB0aGlzIHdheSBzbyB0aGF0IGNvbGxlY3Rpb25zIG93bmVkIGJ5kCBhIHNpbmdsZSBhY2NvdW50IGNhbiBiZSBlbnVtZXJhdGVkLgBAQ29sbGVjdGlvblJvbGVPZgABCAICXQyxDAQACNAgVGhlIGl0ZW1zIGluIGV4aXN0ZW5jZSBhbmQgdGhlaXIgb3duZXJzaGlwIGRldGFpbHMuoCBTdG9yZXMgY29sbGVjdGlvbiByb2xlcyBhcyBwZXIgYWNjb3VudC4AEEl0ZW0AAQgCAsy5DAQABNAgVGhlIGl0ZW1zIGluIGV4aXN0ZW5jZSBhbmQgdGhlaXIgb3duZXJzaGlwIGRldGFpbHMuAFBDb2xsZWN0aW9uTWV0YWRhdGFPZgABBAI40QwEAARoIE1ldGFkYXRhIG9mIGEgY29sbGVjdGlvbi4AOEl0ZW1NZXRhZGF0YU9mAAEIAgLM1QwEAARUIE1ldGFkYXRhIG9mIGFuIGl0ZW0uACRBdHRyaWJ1dGUAARACAgIC3QzhDAQABHAgQXR0cmlidXRlcyBvZiBhIGNvbGxlY3Rpb24uACxJdGVtUHJpY2VPZgABCAICzKUMBAAEUCBBIHByaWNlIG9mIGFuIGl0ZW0uAGRJdGVtQXR0cmlidXRlc0FwcHJvdmFsc09mAQEIAgLM6QwEAARoIEl0ZW0gYXR0cmlidXRlIGFwcHJvdmFscy4AQE5leHRDb2xsZWN0aW9uSWQAADgEAAgxASBTdG9yZXMgdGhlIGBDb2xsZWN0aW9uSWRgIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBmb3IgdGhlIG5leHQgY29sbGVjdGlvbi7wIFRoaXMgZ2V0cyBpbmNyZW1lbnRlZCB3aGVuZXZlciBhIG5ldyBjb2xsZWN0aW9uIGlzIGNyZWF0ZWQuADRQZW5kaW5nU3dhcE9mAAEIAgLM8QwEAAR8IEhhbmRsZXMgYWxsIHRoZSBwZW5kaW5nIHN3YXBzLgBIQ29sbGVjdGlvbkNvbmZpZ09mAAEEAjhNBAQABGAgQ29uZmlnIG9mIGEgY29sbGVjdGlvbi4AMEl0ZW1Db25maWdPZgABCAICzHUEBAAETCBDb25maWcgb2YgYW4gaXRlbS4AAUkEAAG9CAA4RENvbGxlY3Rpb25EZXBvc2l0VQFAQPH7dwAAAAAAAAAAAAAAAAQBASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgY29sbGVjdGlvbi4ALEl0ZW1EZXBvc2l0VQFAEDIBAwAAAAAAAAAAAAAAAAT0IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBpdGVtLgBMTWV0YWRhdGFEZXBvc2l0QmFzZVUBQBBx/wsAAAAAAAAAAAAAAAAETQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBpdGVtLgBQQXR0cmlidXRlRGVwb3NpdEJhc2VVAUAAwusLAAAAAAAAAAAAAAAABFUBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIGFuIGF0dHJpYnV0ZSB0byBhbiBpdGVtLgA4RGVwb3NpdFBlckJ5dGVVAUCghgEAAAAAAAAAAAAAAAAACFkBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyBzdG9yZSBpbiBtZXRhZGF0YSzAIGVpdGhlciAibm9ybWFsIiBtZXRhZGF0YSBvciBhdHRyaWJ1dGUgbWV0YWRhdGEuACxTdHJpbmdMaW1pdDgQAAEAAASwIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBkYXRhIHN0b3JlZCBvbi1jaGFpbi4AIEtleUxpbWl0OBBAAAAABKAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFuIGF0dHJpYnV0ZSBrZXkuAChWYWx1ZUxpbWl0OBAAAQAABKggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFuIGF0dHJpYnV0ZSB2YWx1ZS4AOEFwcHJvdmFsc0xpbWl0OBAUAAAABKggVGhlIG1heGltdW0gYXBwcm92YWxzIGFuIGl0ZW0gY291bGQgaGF2ZS4AcEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxzTGltaXQ4EB4AAAAE1CBUaGUgbWF4aW11bSBhdHRyaWJ1dGVzIGFwcHJvdmFscyBhbiBpdGVtIGNvdWxkIGhhdmUuABxNYXhUaXBzOBAKAAAABKggVGhlIG1heCBudW1iZXIgb2YgdGlwcyBhIHVzZXIgY291bGQgc2VuZC4ATE1heERlYWRsaW5lRHVyYXRpb244EAAaTwAEqCBUaGUgbWF4IGR1cmF0aW9uIGluIGJsb2NrcyBmb3IgZGVhZGxpbmVzLgBQTWF4QXR0cmlidXRlc1BlckNhbGw4EAoAAAAE4CBUaGUgbWF4IG51bWJlciBvZiBhdHRyaWJ1dGVzIGEgdXNlciBjb3VsZCBzZXQgcGVyIGNhbGwuACBGZWF0dXJlc/UMIAAAAAAAAAAABJAgRGlzYWJsZXMgc29tZSBvZiBwYWxsZXQncyBmZWF0dXJlcy4AAf0MAAwwQ29sbGVjdGlvbklkOCScIElkZW50aWZpZXIgZm9yIHRoZSBjb2xsZWN0aW9uIG9mIGl0ZW0uAEkBIFNBRkVUWTogVGhlIGZ1bmN0aW9ucyBpbiB0aGUgYEluY3JlbWVudGFibGVgIHRyYWl0IGFyZSBmYWxsaWJsZS4gSWYgdGhlIGZ1bmN0aW9uc0EBIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBib3RoIHJldHVybiBgTm9uZWAsIHRoZSBhdXRvbWF0aWMgQ29sbGVjdGlvbklkIGdlbmVyYXRpb24pASBzaG91bGQgbm90IGJlIHVzZWQuIFNvIHRoZSBgY3JlYXRlYCBhbmQgYGZvcmNlX2NyZWF0ZWAgZXh0cmluc2ljcyBhbmQgdGhlTQEgYGNyZWF0ZV9jb2xsZWN0aW9uYCBmdW5jdGlvbiB3aWxsIHJldHVybiBhbiBgVW5rbm93bkNvbGxlY3Rpb25gIEVycm9yLiBJbnN0ZWFkIHVzZUEBIHRoZSBgY3JlYXRlX2NvbGxlY3Rpb25fd2l0aF9pZGAgZnVuY3Rpb24uIEhvd2V2ZXIsIGlmIHRoZSBgSW5jcmVtZW50YWJsZWAgdHJhaXRJASBpbXBsZW1lbnRhdGlvbiBoYXMgYW4gaW5jcmVtZW50YWwgb3JkZXIsIHRoZSBgY3JlYXRlX2NvbGxlY3Rpb25fd2l0aF9pZGAgZnVuY3Rpb278IHNob3VsZCBub3QgYmUgdXNlZCBhcyBpdCBjYW4gY2xhaW0gYSB2YWx1ZSBpbiB0aGUgSUQgc2VxdWVuY2UuGEl0ZW1JZDgE9CBUaGUgdHlwZSB1c2VkIHRvIGlkZW50aWZ5IGEgdW5pcXVlIGl0ZW0gd2l0aGluIGEgY29sbGVjdGlvbi5ET2ZmY2hhaW5TaWduYXR1cmWdBAxoIE9mZi1DaGFpbiBzaWduYXR1cmUgdHlwZS4ACQEgQ2FuIHZlcmlmeSB3aGV0aGVyIGFuIGBTZWxmOjpPZmZjaGFpblB1YmxpY2AgY3JlYXRlZCBhIHNpZ25hdHVyZS4ANAAANEZvcmVpZ25Bc3NldHMBNEZvcmVpZ25Bc3NldHMYFEFzc2V0AAEEAv0BVQwEAARUIERldGFpbHMgb2YgYW4gYXNzZXQuABxBY2NvdW50AAEIAgIBDWEMBAAE5CBUaGUgaG9sZGluZ3Mgb2YgYSBzcGVjaWZpYyBhY2NvdW50IGZvciBhIHNwZWNpZmljIGFzc2V0LgAkQXBwcm92YWxzAAEMAgICBQ1xDAQADFkBIEFwcHJvdmVkIGJhbGFuY2UgdHJhbnNmZXJzLiBGaXJzdCBiYWxhbmNlIGlzIHRoZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyLiBTZWNvbmToIGlzIHRoZSBhbW91bnQgb2YgYFQ6OkN1cnJlbmN5YCByZXNlcnZlZCBmb3Igc3RvcmluZyB0aGlzLkkBIEZpcnN0IGtleSBpcyB0aGUgYXNzZXQgSUQsIHNlY29uZCBrZXkgaXMgdGhlIG93bmVyIGFuZCB0aGlyZCBrZXkgaXMgdGhlIGRlbGVnYXRlLgAgTWV0YWRhdGEBAQQC/QEJDVAAAAAAAAAAAAAAAAAAAAAAAAAAAARYIE1ldGFkYXRhIG9mIGFuIGFzc2V0LgAgUmVzZXJ2ZXMBAQQC/QGtBAQABPwgTWFwcyBhbiBhc3NldCB0byBhIGxpc3Qgb2YgaXRzIGNvbmZpZ3VyZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbi4ALE5leHRBc3NldElkAAD9AQQAJG0BIFRoZSBhc3NldCBJRCBlbmZvcmNlZCBmb3IgdGhlIG5leHQgYXNzZXQgY3JlYXRpb24sIGlmIGFueSBwcmVzZW50LiBPdGhlcndpc2UsIHRoaXMgc3RvcmFnZVAgaXRlbSBoYXMgbm8gZWZmZWN0LgBlASBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHNldHRpbmcgdXAgY29uc3RyYWludHMgZm9yIElEcyBvZiB0aGUgbmV3IGFzc2V0cy4gRm9yIGV4YW1wbGUsIGJ5aQEgcHJvdmlkaW5nIGFuIGluaXRpYWwgW2BOZXh0QXNzZXRJZGBdIGFuZCB1c2luZyB0aGUgW2BjcmF0ZTo6QXV0b0luY0Fzc2V0SWRgXSBjYWxsYmFjaywgYW7oIGF1dG8taW5jcmVtZW50IG1vZGVsIGNhbiBiZSBhcHBsaWVkIHRvIGFsbCBuZXcgYXNzZXQgSURzLgAhASBUaGUgaW5pdGlhbCBuZXh0IGFzc2V0IElEIGNhbiBiZSBzZXQgdXNpbmcgdGhlIFtgR2VuZXNpc0NvbmZpZ2BdIG9yIHRoZSEBIFtTZXROZXh0QXNzZXRJZF0oYG1pZ3JhdGlvbjo6bmV4dF9hc3NldF9pZDo6U2V0TmV4dEFzc2V0SWRgKSBtaWdyYXRpb24uAAGpBAABxQgAHEBSZW1vdmVJdGVtc0xpbWl0OBDoAwAADFEBIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gZGVzdHJveSBwZXIgYGRlc3Ryb3lfYWNjb3VudHNgIGFuZCBgZGVzdHJveV9hcHByb3ZhbHNgIGNhbGwuADkBIE11c3QgYmUgY29uZmlndXJlZCB0byByZXN1bHQgaW4gYSB3ZWlnaHQgdGhhdCBtYWtlcyBlYWNoIGNhbGwgZml0IGluIGEgYmxvY2suADBBc3NldERlcG9zaXRVAUDAfld4AAAAAAAAAAAAAAAABPggVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGFzc2V0LgBMQXNzZXRBY2NvdW50RGVwb3NpdFUBQAD+TXcAAAAAAAAAAAAAAAAIRQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGEgbm9uLXByb3ZpZGVyIGFzc2V0IGFjY291bnQgdG8gYmUwIG1haW50YWluZWQuAExNZXRhZGF0YURlcG9zaXRCYXNlVQFAgFaddwAAAAAAAAAAAAAAAARRASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGFzc2V0LgBYTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZVUBQKCGAQAAAAAAAAAAAAAAAAAIVQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHlvdSBzdG9yZSBpbiB5b3VyKCBtZXRhZGF0YS4APEFwcHJvdmFsRGVwb3NpdFUBQADh9QUAAAAAAAAAAAAAAAAEIQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBhcHByb3ZhbC4ALFN0cmluZ0xpbWl0OBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgABEQ0AFBxCYWxhbmNlVQEEnCBUaGUgdW5pdHMgaW4gd2hpY2ggd2UgcmVjb3JkIGJhbGFuY2VzLhxBc3NldElk/QEEjCBJZGVudGlmaWVyIGZvciB0aGUgY2xhc3Mgb2YgYXNzZXQuQEFzc2V0SWRQYXJhbWV0ZXL9ARxZASBXcmFwcGVyIGFyb3VuZCBgU2VsZjo6QXNzZXRJZGAgdG8gdXNlIGluIGRpc3BhdGNoYWJsZSBjYWxsIHNpZ25hdHVyZXMuIEFsbG93cyB0aGUgdXNlUQEgb2YgY29tcGFjdCBlbmNvZGluZyBpbiBpbnN0YW5jZXMgb2YgdGhlIHBhbGxldCwgd2hpY2ggd2lsbCBwcmV2ZW50IGJyZWFraW5nIGNoYW5nZXMFASByZXN1bHRpbmcgZnJvbSB0aGUgcmVtb3ZhbCBvZiBgSGFzQ29tcGFjdGAgZnJvbSBgU2VsZjo6QXNzZXRJZGAuAFkBIFRoaXMgdHlwZSBpbmNsdWRlcyB0aGUgYEZyb208U2VsZjo6QXNzZXRJZD5gIGJvdW5kLCBzaW5jZSB0aWdodGx5IGNvdXBsZWQgcGFsbGV0cyBtYXlFASB3YW50IHRvIGNvbnZlcnQgYW4gYEFzc2V0SWRgIGludG8gYSBwYXJhbWV0ZXIgZm9yIGNhbGxpbmcgZGlzcGF0Y2hhYmxlIGZ1bmN0aW9ucyggZGlyZWN0bHkuLFJlc2VydmVEYXRhsQQE6CBJbmZvcm1hdGlvbiBhYm91dCByZXNlcnZlIGxvY2F0aW9ucyBmb3IgYSBjbGFzcyBvZiBhc3NldC4URXh0cmEQBPggQWRkaXRpb25hbCBkYXRhIHRvIGJlIHN0b3JlZCB3aXRoIGFuIGFjY291bnQncyBhc3NldCBiYWxhbmNlLhAw5kpWAm9LXjwtGWKDqaF9pwKXrQtL3T2kt0YpplpuXDRhc3NldF9kZXRhaWxzBAhpZP0BgQwEqCBQcm92aWRlIHRoZSBhc3NldCBkZXRhaWxzIGZvciBhc3NldCBgaWRgLgAw5kpWAm9LXjwtGWKDqaF9UxrH4ht2sSHnYeRzQZobAihiYWxhbmNlX29mCAx3aG8ECGlk/QFFBAS0IFByb3ZpZGUgdGhlIGJhbGFuY2Ugb2YgYHdob2AgZm9yIGFzc2V0IGBpZGAuADDmSlYCb0tePC0ZYoOpoX0uh2akDRtp1hUb2AHldVBeMGdldF9tZXRhZGF0YQQIaWT9ARUNBMAgUHJvdmlkZSB0aGUgY29uZmlndXJlZCBtZXRhZGF0YSBmb3IgYXNzZXQgYGlkYC4AMOZKVgJvS148LRlig6mhfWT2Pykj45goJDFjga4eaYZEZ2V0X3Jlc2VydmVzX2RhdGEECGlk/QG1BATUIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgcmVzZXJ2ZXMgZGF0YSBmb3IgYXNzZXQgYGlkYC4ANQAAKFBvb2xBc3NldHMBKFBvb2xBc3NldHMYFEFzc2V0AAEEAjhVDAQABFQgRGV0YWlscyBvZiBhbiBhc3NldC4AHEFjY291bnQAAQgCAl0MYQwEAATkIFRoZSBob2xkaW5ncyBvZiBhIHNwZWNpZmljIGFjY291bnQgZm9yIGEgc3BlY2lmaWMgYXNzZXQuACRBcHByb3ZhbHMAAQwCAgJtDHEMBAAMWQEgQXBwcm92ZWQgYmFsYW5jZSB0cmFuc2ZlcnMuIEZpcnN0IGJhbGFuY2UgaXMgdGhlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIuIFNlY29uZOggaXMgdGhlIGFtb3VudCBvZiBgVDo6Q3VycmVuY3lgIHJlc2VydmVkIGZvciBzdG9yaW5nIHRoaXMuSQEgRmlyc3Qga2V5IGlzIHRoZSBhc3NldCBJRCwgc2Vjb25kIGtleSBpcyB0aGUgb3duZXIgYW5kIHRoaXJkIGtleSBpcyB0aGUgZGVsZWdhdGUuACBNZXRhZGF0YQEBBAI4GQ1QAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4AIFJlc2VydmVzAQEEAjgpBAQABPwgTWFwcyBhbiBhc3NldCB0byBhIGxpc3Qgb2YgaXRzIGNvbmZpZ3VyZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbi4ALE5leHRBc3NldElkAAA4BAAkbQEgVGhlIGFzc2V0IElEIGVuZm9yY2VkIGZvciB0aGUgbmV4dCBhc3NldCBjcmVhdGlvbiwgaWYgYW55IHByZXNlbnQuIE90aGVyd2lzZSwgdGhpcyBzdG9yYWdlUCBpdGVtIGhhcyBubyBlZmZlY3QuAGUBIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Igc2V0dGluZyB1cCBjb25zdHJhaW50cyBmb3IgSURzIG9mIHRoZSBuZXcgYXNzZXRzLiBGb3IgZXhhbXBsZSwgYnlpASBwcm92aWRpbmcgYW4gaW5pdGlhbCBbYE5leHRBc3NldElkYF0gYW5kIHVzaW5nIHRoZSBbYGNyYXRlOjpBdXRvSW5jQXNzZXRJZGBdIGNhbGxiYWNrLCBhbuggYXV0by1pbmNyZW1lbnQgbW9kZWwgY2FuIGJlIGFwcGxpZWQgdG8gYWxsIG5ldyBhc3NldCBJRHMuACEBIFRoZSBpbml0aWFsIG5leHQgYXNzZXQgSUQgY2FuIGJlIHNldCB1c2luZyB0aGUgW2BHZW5lc2lzQ29uZmlnYF0gb3IgdGhlIQEgW1NldE5leHRBc3NldElkXShgbWlncmF0aW9uOjpuZXh0X2Fzc2V0X2lkOjpTZXROZXh0QXNzZXRJZGApIG1pZ3JhdGlvbi4AAbkEAAHJCAAcQFJlbW92ZUl0ZW1zTGltaXQ4EOgDAAAMUQEgTWF4IG51bWJlciBvZiBpdGVtcyB0byBkZXN0cm95IHBlciBgZGVzdHJveV9hY2NvdW50c2AgYW5kIGBkZXN0cm95X2FwcHJvdmFsc2AgY2FsbC4AOQEgTXVzdCBiZSBjb25maWd1cmVkIHRvIHJlc3VsdCBpbiBhIHdlaWdodCB0aGF0IG1ha2VzIGVhY2ggY2FsbCBmaXQgaW4gYSBibG9jay4AMEFzc2V0RGVwb3NpdFUBQAAAAAAAAAAAAAAAAAAAAAAE+CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gYXNzZXQuAExBc3NldEFjY291bnREZXBvc2l0VQFAAP5NdwAAAAAAAAAAAAAAAAhFASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYSBub24tcHJvdmlkZXIgYXNzZXQgYWNjb3VudCB0byBiZTAgbWFpbnRhaW5lZC4ATE1ldGFkYXRhRGVwb3NpdEJhc2VVAUAAAAAAAAAAAAAAAAAAAAAABFEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgYXNzZXQuAFhNZXRhZGF0YURlcG9zaXRQZXJCeXRlVQFAAAAAAAAAAAAAAAAAAAAAAAhVASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgeW91IHN0b3JlIGluIHlvdXIoIG1ldGFkYXRhLgA8QXBwcm92YWxEZXBvc2l0VQFAAOH1BQAAAAAAAAAAAAAAAAQhASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGNyZWF0aW5nIGEgbmV3IGFwcHJvdmFsLgAsU3RyaW5nTGltaXQ4EDIAAAAE4CBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBuYW1lIG9yIHN5bWJvbCBzdG9yZWQgb24tY2hhaW4uAAEhDQAUHEJhbGFuY2VVAQScIFRoZSB1bml0cyBpbiB3aGljaCB3ZSByZWNvcmQgYmFsYW5jZXMuHEFzc2V0SWQ4BIwgSWRlbnRpZmllciBmb3IgdGhlIGNsYXNzIG9mIGFzc2V0LkBBc3NldElkUGFyYW1ldGVyOBxZASBXcmFwcGVyIGFyb3VuZCBgU2VsZjo6QXNzZXRJZGAgdG8gdXNlIGluIGRpc3BhdGNoYWJsZSBjYWxsIHNpZ25hdHVyZXMuIEFsbG93cyB0aGUgdXNlUQEgb2YgY29tcGFjdCBlbmNvZGluZyBpbiBpbnN0YW5jZXMgb2YgdGhlIHBhbGxldCwgd2hpY2ggd2lsbCBwcmV2ZW50IGJyZWFraW5nIGNoYW5nZXMFASByZXN1bHRpbmcgZnJvbSB0aGUgcmVtb3ZhbCBvZiBgSGFzQ29tcGFjdGAgZnJvbSBgU2VsZjo6QXNzZXRJZGAuAFkBIFRoaXMgdHlwZSBpbmNsdWRlcyB0aGUgYEZyb208U2VsZjo6QXNzZXRJZD5gIGJvdW5kLCBzaW5jZSB0aWdodGx5IGNvdXBsZWQgcGFsbGV0cyBtYXlFASB3YW50IHRvIGNvbnZlcnQgYW4gYEFzc2V0SWRgIGludG8gYSBwYXJhbWV0ZXIgZm9yIGNhbGxpbmcgZGlzcGF0Y2hhYmxlIGZ1bmN0aW9ucyggZGlyZWN0bHkuLFJlc2VydmVEYXRhEAToIEluZm9ybWF0aW9uIGFib3V0IHJlc2VydmUgbG9jYXRpb25zIGZvciBhIGNsYXNzIG9mIGFzc2V0LhRFeHRyYRAE+CBBZGRpdGlvbmFsIGRhdGEgdG8gYmUgc3RvcmVkIHdpdGggYW4gYWNjb3VudCdzIGFzc2V0IGJhbGFuY2UuEE2wa6HKbxix7bBv8ILSRAmnApetC0vdPaS3RimmWm5cNGFzc2V0X2RldGFpbHMECGlkOIEMBKggUHJvdmlkZSB0aGUgYXNzZXQgZGV0YWlscyBmb3IgYXNzZXQgYGlkYC4ATbBrocpvGLHtsG/wgtJECVMax+IbdrEh52Hkc0GaGwIoYmFsYW5jZV9vZggMd2hvBAhpZDhFBAS0IFByb3ZpZGUgdGhlIGJhbGFuY2Ugb2YgYHdob2AgZm9yIGFzc2V0IGBpZGAuAE2wa6HKbxix7bBv8ILSRAkuh2akDRtp1hUb2AHldVBeMGdldF9tZXRhZGF0YQQIaWQ4JQ0EwCBQcm92aWRlIHRoZSBjb25maWd1cmVkIG1ldGFkYXRhIGZvciBhc3NldCBgaWRgLgBNsGuhym8Yse2wb/CC0kQJZPY/KSPjmCgkMWOBrh5phkRnZXRfcmVzZXJ2ZXNfZGF0YQQIaWQ4LQQE1CBQcm92aWRlIHRoZSBjb25maWd1cmVkIHJlc2VydmVzIGRhdGEgZm9yIGFzc2V0IGBpZGAuADYAADxBc3NldENvbnZlcnNpb24BPEFzc2V0Q29udmVyc2lvbggUUG9vbHMAAQQC0QgpDQQACGkBIE1hcCBmcm9tIGBQb29sQXNzZXRJZGAgdG8gYFBvb2xJbmZvYC4gVGhpcyBlc3RhYmxpc2hlcyB3aGV0aGVyIGEgcG9vbCBoYXMgYmVlbiBvZmZpY2lhbGx5PQEgY3JlYXRlZCByYXRoZXIgdGhhbiBwZW9wbGUgc2VuZGluZyB0b2tlbnMgZGlyZWN0bHkgdG8gYSBwb29sJ3MgcHVibGljIGFjY291bnQuADxOZXh0UG9vbEFzc2V0SWQAADgEAAglASBTdG9yZXMgdGhlIGBQb29sQXNzZXRJZGAgdGhhdCBpcyBnb2luZyB0byBiZSB1c2VkIGZvciB0aGUgbmV4dCBscCB0b2tlbi7kIFRoaXMgZ2V0cyBpbmNyZW1lbnRlZCB3aGVuZXZlciBhIG5ldyBscCBwb29sIGlzIGNyZWF0ZWQuAAG9BAABzQgAHBRMUEZlZdUIELgLAAAEHQEgVGhlIGZyYWN0aW9uIG9mIGV2ZXJ5IHN3YXAgdGhhdCB0aGUgbGlxdWlkaXR5IHByb3ZpZGVycyB0YWtlIGFzIGEgZmVlLgAwUG9vbFNldHVwRmVlVQFAQC2T7wAAAAAAAAAAAAAAAASIIEEgb25lLXRpbWUgZmVlIHRvIHNldHVwIHRoZSBwb29sLgBEUG9vbFNldHVwRmVlQXNzZXT9AQgBAAQ5ASBBc3NldCBjbGFzcyBmcm9tIFtgQ29uZmlnOjpBc3NldHNgXSB1c2VkIHRvIHBheSB0aGUgW2BDb25maWc6OlBvb2xTZXR1cEZlZWBdLgBYTGlxdWlkaXR5V2l0aGRyYXdhbEZlZdUIEAAAAAAEhCBBIGZlZSB0byB3aXRoZHJhdyB0aGUgbGlxdWlkaXR5LgBATWludE1pbkxpcXVpZGl0eVUBQGQAAAAAAAAAAAAAAAAAAAAEPQEgVGhlIG1pbmltdW0gTFAgdG9rZW4gYW1vdW50IHRoYXQgY291bGQgYmUgbWludGVkLiBBbWVsaW9yYXRlcyByb3VuZGluZyBlcnJvcnMuAERNYXhTd2FwUGF0aExlbmd0aDgQAwAAAASIIFRoZSBtYXggbnVtYmVyIG9mIGhvcHMgaW4gYSBzd2FwLgAgUGFsbGV0SWQhCyBweS9hc2NvbgT0IFRoZSBwYWxsZXQncyBpZCwgdXNlZCBmb3IgZGVyaXZpbmcgaXRzIHNvdmVyZWlnbiBhY2NvdW50IElELgABLQ0ACCRBc3NldEtpbmT9AQhdASBUeXBlIG9mIGFzc2V0IGNsYXNzLCBzb3VyY2VkIGZyb20gW2BDb25maWc6OkFzc2V0c2BdLCB1dGlsaXplZCB0byBvZmZlciBsaXF1aWRpdHkgdG8gYRggcG9vbC4YUG9vbElk0QgEbCBMaXF1aWRpdHkgcG9vbCBpZGVudGlmaWVyLgy1JgbagNAqs3RCg2ml8kbxS1pnVmbe//3TGtEv26r/4zBnZXRfcmVzZXJ2ZXMIGGFzc2V0Mf0BGGFzc2V0Mv0BMQ0IvCBSZXR1cm5zIHRoZSBiYWxhbmNlIG9mIGVhY2ggYXNzZXQgaW4gdGhlIHBvb2wuVQEgVGhlIHR1cGxlIHJlc3VsdCBpcyBpbiB0aGUgb3JkZXIgcmVxdWVzdGVkIChub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgcG9vbCBvcmRlcikuALUmBtqA0CqzdEKDaaXyRvF454NwvdVcmGRJvGzVUBALjHF1b3RlX3ByaWNlX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zEBhhc3NldDH9ARhhc3NldDL9ARhhbW91bnRVASxpbmNsdWRlX2ZlZVkBRQQcEQEgR2V0cyBhIHF1b3RlIGZvciBzd2FwcGluZyBhbiBleGFjdCBhbW91bnQgb2YgYGFzc2V0MWAgZm9yIGBhc3NldDJgLgA1ASBJZiBgaW5jbHVkZV9mZWVgIGlzIHRydWUsIHRoZSBxdW90ZSB3aWxsIGluY2x1ZGUgdGhlIGxpcXVpZGl0eSBwcm92aWRlciBmZWUuEQEgSWYgdGhlIHBvb2wgZG9lcyBub3QgZXhpc3Qgb3IgaGFzIG5vIGxpcXVpZGl0eSwgYE5vbmVgIGlzIHJldHVybmVkLjkBIE5vdGUgdGhhdCB0aGUgcHJpY2UgbWF5IGhhdmUgY2hhbmdlZCBieSB0aGUgdGltZSB0aGUgdHJhbnNhY3Rpb24gaXMgZXhlY3V0ZWQusCAoVXNlIGBhbW91bnRfb3V0X21pbmAgdG8gY29udHJvbCBzbGlwcGFnZS4pqCBSZXR1cm5zIGBTb21lKHF1b3RlZF9hbW91bnQpYCBvbiBzdWNjZXNzLgC1JgbagNAqs3RCg2ml8kbxKHkP75st419EjT7Dc5NpjYxxdW90ZV9wcmljZV90b2tlbnNfZm9yX2V4YWN0X3Rva2VucxAYYXNzZXQx/QEYYXNzZXQy/QEYYW1vdW50VQEsaW5jbHVkZV9mZWVZAUUEHEEBIEdldHMgYSBxdW90ZSBmb3Igc3dhcHBpbmcgYGFtb3VudGAgb2YgYGFzc2V0MWAgZm9yIGFuIGV4YWN0IGFtb3VudCBvZiBgYXNzZXQyYC4ANQEgSWYgYGluY2x1ZGVfZmVlYCBpcyB0cnVlLCB0aGUgcXVvdGUgd2lsbCBpbmNsdWRlIHRoZSBsaXF1aWRpdHkgcHJvdmlkZXIgZmVlLhEBIElmIHRoZSBwb29sIGRvZXMgbm90IGV4aXN0IG9yIGhhcyBubyBsaXF1aWRpdHksIGBOb25lYCBpcyByZXR1cm5lZC45ASBOb3RlIHRoYXQgdGhlIHByaWNlIG1heSBoYXZlIGNoYW5nZWQgYnkgdGhlIHRpbWUgdGhlIHRyYW5zYWN0aW9uIGlzIGV4ZWN1dGVkLqwgKFVzZSBgYW1vdW50X2luX21heGAgdG8gY29udHJvbCBzbGlwcGFnZS4pqCBSZXR1cm5zIGBTb21lKHF1b3RlZF9hbW91bnQpYCBvbiBzdWNjZXNzLgA3AAA0QXNzZXRzRnJlZXplcgE0QXNzZXRzRnJlZXplcggcRnJlZXplcwEBCAICXQzVCgQABBUBIEEgbWFwIHRoYXQgc3RvcmVzIGZyZWV6ZXMgYXBwbGllZCBvbiBhbiBhY2NvdW50IGZvciBhIGdpdmVuIEFzc2V0SWQuADhGcm96ZW5CYWxhbmNlcwABCAICXQxVAQQABGUBIEEgbWFwIHRoYXQgc3RvcmVzIHRoZSBjdXJyZW50IHRvdGFsIGZyb3plbiBiYWxhbmNlIGZvciBldmVyeSBhY2NvdW50IG9uIGEgZ2l2ZW4gQXNzZXRJZC4AAAHhCAAAATkNAARMUnVudGltZUZyZWV6ZVJlYXNvbt0KBHwgVGhlIG92ZXJhcmNoaW5nIGZyZWV6ZSByZWFzb24uADgAADBBc3NldHNIb2xkZXIBMEFzc2V0c0hvbGRlcggUSG9sZHMBAQgCAl0MyQoEAAQNASBBIG1hcCB0aGF0IHN0b3JlcyBob2xkcyBhcHBsaWVkIG9uIGFuIGFjY291bnQgZm9yIGEgZ2l2ZW4gQXNzZXRJZC4AOEJhbGFuY2VzT25Ib2xkAAEIAgJdDFUBBAAEaQEgQSBtYXAgdGhhdCBzdG9yZXMgdGhlIGN1cnJlbnQgdG90YWwgYmFsYW5jZSBvbiBob2xkIGZvciBldmVyeSBhY2NvdW50IG9uIGEgZ2l2ZW4gQXNzZXRJZC4AAAHlCAAAAT0NAAREUnVudGltZUhvbGRSZWFzb24xCAR8IFRoZSBvdmVyYXJjaGluZyBmcmVlemUgcmVhc29uLgA5AAAgVHJlYXN1cnkBIFRyZWFzdXJ5HDRQcm9wb3NhbENvdW50AQA4EAAAAAAQQQEgREVQUkVDQVRFRDogYXNzb2NpYXRlZCB3aXRoIGBzcGVuZF9sb2NhbGAgY2FsbCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIE1heSAyMDI1LmkBIFJlZmVyIHRvIDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9wb2xrYWRvdC1zZGsvcHVsbC81OTYxPiBmb3IgbWlncmF0aW9uIHRvIGBzcGVuZGAuAKQgTnVtYmVyIG9mIHByb3Bvc2FscyB0aGF0IGhhdmUgYmVlbiBtYWRlLgAkUHJvcG9zYWxzAAEEBThBDQQAEEEBIERFUFJFQ0FURUQ6IGFzc29jaWF0ZWQgd2l0aCBgc3BlbmRfbG9jYWxgIGNhbGwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBNYXkgMjAyNS5pASBSZWZlciB0byA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvcG9sa2Fkb3Qtc2RrL3B1bGwvNTk2MT4gZm9yIG1pZ3JhdGlvbiB0byBgc3BlbmRgLgB8IFByb3Bvc2FscyB0aGF0IGhhdmUgYmVlbiBtYWRlLgAsRGVhY3RpdmF0ZWQBAFUBQAAAAAAAAAAAAAAAAAAAAAAE8CBUaGUgYW1vdW50IHdoaWNoIGhhcyBiZWVuIHJlcG9ydGVkIGFzIGluYWN0aXZlIHRvIEN1cnJlbmN5LgAkQXBwcm92YWxzAQBFDQQAEEEBIERFUFJFQ0FURUQ6IGFzc29jaWF0ZWQgd2l0aCBgc3BlbmRfbG9jYWxgIGNhbGwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBNYXkgMjAyNS5pASBSZWZlciB0byA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvcG9sa2Fkb3Qtc2RrL3B1bGwvNTk2MT4gZm9yIG1pZ3JhdGlvbiB0byBgc3BlbmRgLgD4IFByb3Bvc2FsIGluZGljZXMgdGhhdCBoYXZlIGJlZW4gYXBwcm92ZWQgYnV0IG5vdCB5ZXQgYXdhcmRlZC4AKFNwZW5kQ291bnQBADgQAAAAAASkIFRoZSBjb3VudCBvZiBzcGVuZHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4AGFNwZW5kcwABBAU4SQ0EAATQIFNwZW5kcyB0aGF0IGhhdmUgYmVlbiBhcHByb3ZlZCBhbmQgYmVpbmcgcHJvY2Vzc2VkLgA8TGFzdFNwZW5kUGVyaW9kAAA4BAAE1CBUaGUgYmxvY2tudW1iZXIgZm9yIHRoZSBsYXN0IHRyaWdnZXJlZCBzcGVuZCBwZXJpb2QuAAHFBAgDApUBVGhlIGBzcGVuZF9sb2NhbGAgY2FsbCB3aWxsIGJlIHJlbW92ZWQgYnkgTWF5IDIwMjUuIE1pZ3JhdGUgdG8gdGhlIG5ldyBmbG93IGFuZCB1c2UgdGhlIGBzcGVuZGAgY2FsbC4ABAK1AVRoZSBgcmVtb3ZlX2FwcHJvdmFsYCBjYWxsIHdpbGwgYmUgcmVtb3ZlZCBieSBNYXkgMjAyNS4gSXQgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXByZWNhdGVkIGBzcGVuZF9sb2NhbGAgY2FsbC4AAekIABgsU3BlbmRQZXJpb2Q4EMCoAAAEiCBQZXJpb2QgYmV0d2VlbiBzdWNjZXNzaXZlIHNwZW5kcy4AEEJ1cm7VCBAAAAAABBEBIFBlcmNlbnRhZ2Ugb2Ygc3BhcmUgZnVuZHMgKGlmIGFueSkgdGhhdCBhcmUgYnVybnQgcGVyIHNwZW5kIHBlcmlvZC4AIFBhbGxldElkIQsgcHkvdHJzcnkEGQEgVGhlIHRyZWFzdXJ5J3MgcGFsbGV0IGlkLCB1c2VkIGZvciBkZXJpdmluZyBpdHMgc292ZXJlaWduIGFjY291bnQgSUQuADBNYXhBcHByb3ZhbHM4EGQAAAAYQQEgREVQUkVDQVRFRDogYXNzb2NpYXRlZCB3aXRoIGBzcGVuZF9sb2NhbGAgY2FsbCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIE1heSAyMDI1LmkBIFJlZmVyIHRvIDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9wb2xrYWRvdC1zZGsvcHVsbC81OTYxPiBmb3IgbWlncmF0aW9uIHRvIGBzcGVuZGAuABUBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhcHByb3ZhbHMgdGhhdCBjYW4gd2FpdCBpbiB0aGUgc3BlbmRpbmcgcXVldWUuAE0BIE5PVEU6IFRoaXMgcGFyYW1ldGVyIGlzIGFsc28gdXNlZCB3aXRoaW4gdGhlIEJvdW50aWVzIFBhbGxldCBleHRlbnNpb24gaWYgZW5hYmxlZC4AMFBheW91dFBlcmlvZDgQAOEAAAQZASBUaGUgcGVyaW9kIGR1cmluZyB3aGljaCBhbiBhcHByb3ZlZCB0cmVhc3VyeSBzcGVuZCBoYXMgdG8gYmUgY2xhaW1lZC4ALHBvdF9hY2NvdW50BIBtb2RscHkvdHJzcnkAAAAAAAAAAAAAAAAAAAAAAAAAAASgIEdldHMgdGhpcyBwYWxsZXQncyBkZXJpdmVkIHBvdCBhY2NvdW50LgABUQ0ACCRBc3NldEtpbmTJBAQtASBUeXBlIHBhcmFtZXRlciByZXByZXNlbnRpbmcgdGhlIGFzc2V0IGtpbmRzIHRvIGJlIHNwZW50IGZyb20gdGhlIHRyZWFzdXJ5LixCZW5lZmljaWFyec0EBF0BIFR5cGUgcGFyYW1ldGVyIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGJlbmVmaWNpYXJpZXMgZWxpZ2libGUgdG8gcmVjZWl2ZSB0cmVhc3VyeSBzcGVuZHMuADwAAEBDb252aWN0aW9uVm90aW5nAUBDb252aWN0aW9uVm90aW5nCCRWb3RpbmdGb3IBAQgFBVUNWQ3YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHUBIEFsbCB2b3RpbmcgZm9yIGEgcGFydGljdWxhciB2b3RlciBpbiBhIHBhcnRpY3VsYXIgdm90aW5nIGNsYXNzLiBXZSBzdG9yZSB0aGUgYmFsYW5jZSBmb3IgdGhlnCBudW1iZXIgb2Ygdm90ZXMgdGhhdCB3ZSBoYXZlIHJlY29yZGVkLgA0Q2xhc3NMb2Nrc0ZvcgEBBAUEeQ0EAAxpASBUaGUgdm90aW5nIGNsYXNzZXMgd2hpY2ggaGF2ZSBhIG5vbi16ZXJvIGxvY2sgcmVxdWlyZW1lbnQgYW5kIHRoZSBsb2NrIGFtb3VudHMgd2hpY2ggdGhleW0BIHJlcXVpcmUuIFRoZSBhY3R1YWwgYW1vdW50IGxvY2tlZCBvbiBiZWhhbGYgb2YgdGhpcyBwYWxsZXQgc2hvdWxkIGFsd2F5cyBiZSB0aGUgbWF4aW11bSBvZiwgdGhpcyBsaXN0LgAB0QQAAe0IAAggTWF4Vm90ZXM4EAACAAAQ8CBUaGUgbWF4aW11bSBudW1iZXIgb2YgY29uY3VycmVudCB2b3RlcyBhbiBhY2NvdW50IG1heSBoYXZlLgBVASBBbHNvIHVzZWQgdG8gY29tcHV0ZSB3ZWlnaHQsIGFuIG92ZXJseSBsYXJnZSB2YWx1ZSBjYW4gbGVhZCB0byBleHRyaW5zaWNzIHdpdGggbGFyZ2XAIHdlaWdodCBlc3RpbWF0aW9uOiBzZWUgYGRlbGVnYXRlYCBmb3IgaW5zdGFuY2UuAERWb3RlTG9ja2luZ1BlcmlvZDgQwIkBABCQIFRoZSBtaW5pbXVtIHBlcmlvZCBvZiB2b3RlIGxvY2tpbmcuAGUBIEl0IHNob3VsZCBiZSBubyBzaG9ydGVyIHRoYW4gZW5hY3RtZW50IHBlcmlvZCB0byBlbnN1cmUgdGhhdCBpbiB0aGUgY2FzZSBvZiBhbiBhcHByb3ZhbCxJASB0aG9zZSBzdWNjZXNzZnVsIHZvdGVycyBhcmUgbG9ja2VkIGludG8gdGhlIGNvbnNlcXVlbmNlcyB0aGF0IHRoZWlyIHZvdGVzIGVudGFpbC4AAYUNAAAAPQAAJFJlZmVyZW5kYQEkUmVmZXJlbmRhFDxSZWZlcmVuZHVtQ291bnQBADgQAAAAAAQxASBUaGUgbmV4dCBmcmVlIHJlZmVyZW5kdW0gaW5kZXgsIGFrYSB0aGUgbnVtYmVyIG9mIHJlZmVyZW5kYSBzdGFydGVkIHNvIGZhci4ARFJlZmVyZW5kdW1JbmZvRm9yAAEEAjiJDQQABLQgSW5mb3JtYXRpb24gY29uY2VybmluZyBhbnkgZ2l2ZW4gcmVmZXJlbmR1bS4AKFRyYWNrUXVldWUBAQQF0QOpDQQAEF0BIFRoZSBzb3J0ZWQgbGlzdCBvZiByZWZlcmVuZGEgcmVhZHkgdG8gYmUgZGVjaWRlZCBidXQgbm90IHlldCBiZWluZyBkZWNpZGVkLCBvcmRlcmVkIGJ5fCBjb252aWN0aW9uLXdlaWdodGVkIGFwcHJvdmFscy4AQQEgVGhpcyBzaG91bGQgYmUgZW1wdHkgaWYgYERlY2lkaW5nQ291bnRgIGlzIGxlc3MgdGhhbiBgVHJhY2tJbmZvOjptYXhfZGVjaWRpbmdgLgA0RGVjaWRpbmdDb3VudAEBBAXRAzgQAAAAAATEIFRoZSBudW1iZXIgb2YgcmVmZXJlbmRhIGJlaW5nIGRlY2lkZWQgY3VycmVudGx5LgAoTWV0YWRhdGFPZgABBAI4PAQAGAUBIFRoZSBtZXRhZGF0YSBpcyBhIGdlbmVyYWwgaW5mb3JtYXRpb24gY29uY2VybmluZyB0aGUgcmVmZXJlbmR1bS5JASBUaGUgYEhhc2hgIHJlZmVycyB0byB0aGUgcHJlaW1hZ2Ugb2YgdGhlIGBQcmVpbWFnZXNgIHByb3ZpZGVyIHdoaWNoIGNhbiBiZSBhIEpTT06IIGR1bXAgb3IgSVBGUyBoYXNoIG9mIGEgSlNPTiBmaWxlLgB1ASBDb25zaWRlciBhIGdhcmJhZ2UgY29sbGVjdGlvbiBmb3IgYSBtZXRhZGF0YSBvZiBmaW5pc2hlZCByZWZlcmVuZHVtcyB0byBgdW5yZXF1ZXN0YCAocmVtb3ZlKUQgbGFyZ2UgcHJlaW1hZ2VzLgAB5QQAAfEIABREU3VibWlzc2lvbkRlcG9zaXRVAUAA6HZIFwAAAAAAAAAAAAAABDUBIFRoZSBtaW5pbXVtIGFtb3VudCB0byBiZSB1c2VkIGFzIGEgZGVwb3NpdCBmb3IgYSBwdWJsaWMgcmVmZXJlbmR1bSBwcm9wb3NhbC4AJE1heFF1ZXVlZDgQZAAAAATkIE1heGltdW0gc2l6ZSBvZiB0aGUgcmVmZXJlbmR1bSBxdWV1ZSBmb3IgYSBzaW5nbGUgdHJhY2suAERVbmRlY2lkaW5nVGltZW91dDgQwKgAAAhVASBUaGUgbnVtYmVyIG9mIGJsb2NrcyBhZnRlciBzdWJtaXNzaW9uIHRoYXQgYSByZWZlcmVuZHVtIG11c3QgYmVnaW4gYmVpbmcgZGVjaWRlZCBieS7kIE9uY2UgdGhpcyBwYXNzZXMsIHRoZW4gYW55b25lIG1heSBjYW5jZWwgdGhlIHJlZmVyZW5kdW0uADRBbGFybUludGVydmFsOBABAAAADF0BIFF1YW50aXphdGlvbiBsZXZlbCBmb3IgdGhlIHJlZmVyZW5kdW0gd2FrZXVwIHNjaGVkdWxlci4gQSBoaWdoZXIgbnVtYmVyIHdpbGwgcmVzdWx0IGluXQEgZmV3ZXIgc3RvcmFnZSByZWFkcy93cml0ZXMgbmVlZGVkIGZvciBzbWFsbGVyIHZvdGVycywgYnV0IGFsc28gcmVzdWx0IGluIGRlbGF5cyB0byB0aGVVASBhdXRvbWF0aWMgcmVmZXJlbmR1bSBzdGF0dXMgY2hhbmdlcy4gRXhwbGljaXQgc2VydmljaW5nIGluc3RydWN0aW9ucyBhcmUgdW5hZmZlY3RlZC4AGFRyYWNrc7UNFRpAAABkcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgMakfo0DAAAAAAAAAAAAsAQAAAAnBgBAOAAAQDgAAAKQ1z4NAAAAAFdD3hMAAAAAVEPeEwAAAAAAAMqaOwAAAAAAZc0dAQBkd2hpdGVsaXN0ZWRfY2FsbGVyAAAAAAAAAGQAAAAAQHoQ81oAAAAAAAAAAAAALAEAAAAnBgBkAAAAZAAAAALslyUQAAAAAHtXPBcAAAAAQjkvEgAAAAACDgCEAAAAAADW5h8BAAAAADlieQIAAAAAAgBkd2lzaF9mb3JfY2hhbmdlAAAAAAAAAAAAAAoAAAAAgPQg5rUAAAAAAAAAAAAAsAQAAAAnBgBAOAAAZAAAAAKQ1z4NAAAAAFdD3hMAAAAAVEPeEwAAAAAAAMqaOwAAAAAAZc0dCgBkc3Rha2luZ19hZG1pbgAAAAAAAAAAAAAAAAoAAAAAID2IeS0AAAAAAAAAAAAAsAQAAAAnBgAIBwAAZAAAAADJQzAkAGXNHQDKmjsCXW94AAAAAADoLu0AAAAAAIxoif//////CwBkdHJlYXN1cmVyAAAAAAAAAAAAAAAAAAAAAAIAAAAAoDGpX+MAAAAAAAAAAAAAsAQAAAAnBgDAiQEAQDgAAAKQ1z4NAAAAAFdD3hMAAAAAVEPeEwAAAAAAAMqaO4CWmAAAZc0dDABkbGVhc2VfYWRtaW4AAAAAAAAAAAAAAAAAAAoAAAAAID2IeS0AAAAAAAAAAAAAsAQAAAAnBgAIBwAAZAAAAADJQzAkAGXNHQDKmjsCXW94AAAAAADoLu0AAAAAAIxoif//////DQBkZmVsbG93c2hpcF9hZG1pbgAAAAAAAAAAAAoAAAAAID2IeS0AAAAAAAAAAAAAsAQAAAAnBgAIBwAAZAAAAADJQzAkAGXNHQDKmjsCXW94AAAAAADoLu0AAAAAAIxoif//////DgBkZ2VuZXJhbF9hZG1pbgAAAAAAAAAAAAAAAAoAAAAAID2IeS0AAAAAAAAAAAAAsAQAAAAnBgAIBwAAZAAAAAKQ1z4NAAAAAFdD3hMAAAAAVEPeEwAAAAACWaL0AgAAAACjKWsFAAAAAC5rSv3/////DwBkYXVjdGlvbl9hZG1pbgAAAAAAAAAAAAAAAAoAAAAAID2IeS0AAAAAAAAAAAAAsAQAAAAnBgAIBwAAZAAAAAKQ1z4NAAAAAFdD3hMAAAAAVEPeEwAAAAACWaL0AgAAAACjKWsFAAAAAC5rSv3/////FABkcmVmZXJlbmR1bV9jYW5jZWxsZXIAAAAAAPQBAAAAID2IeS0AAAAAAAAAAAAAsAQAAMCJAQAIBwAAZAAAAADJQzAkAGXNHQDKmjsCXW94AAAAAADoLu0AAAAAAIxoif//////FQBkcmVmZXJlbmR1bV9raWxsZXIAAAAAAAAAAOgDAAAAQGNSv8YBAAAAAAAAAAAAsAQAAAAnBgAIBwAAZAAAAADJQzAkAGXNHQDKmjsCXW94AAAAAADoLu0AAAAAAIxoif//////HgBkc21hbGxfdGlwcGVyAAAAAAAAAAAAAAAAAMgAAAAA5AtUAgAAAAAAAAAAAAAACgAAAMCJAQBkAAAACgAAAABJkUkVAGXNHQDKmjsC+boYAAAAAAAqTTEAAAAAAGtZ5///////HwBkYmlnX3RpcHBlcgAAAAAAAAAAAAAAAAAAAGQAAAAA6HZIFwAAAAAAAAAAAAAAZAAAAMCJAQBYAgAAZAAAAABJkUkVAGXNHQDKmjsCaU8/AAAAAAA1ln0AAAAAAOU0wf//////IABkc21hbGxfc3BlbmRlcgAAAAAAAAAAAAAAAAUAAAAAoHJOGAkAAAAAAAAAAAAAYAkAAAAnBgCAcAAAQDgAAADJQzAkAGXNHQDKmjsCCrM6AAAAAABTrXUAAAAAADcLEgAAAAAAIQBkbWVkaXVtX3NwZW5kZXIAAAAAAAAAAAAAADIAAAAAIEqp0QEAAAAAAAAAAAAAYAkAAAAnBgAA4QAAQDgAAABbAfYwAGXNHQDKmjsCIJ5pAAAAAABPd9IAAAAAAP4c5P//////IgBkYmlnX3NwZW5kZXIAAAAAAAAAAAAAAAAAAAMAAAAAID2IeS0AAAAAAAAAAAAAYAkAAAAnBgDAiQEAQDgAAAAAypo7AGXNHQDKmjsCzVhiAAAAAABbJMUAAAAAADVZEQAAAAAADEggQSBsaXN0IG9mIHRyYWNrcy4AXQEgTm90ZTogaWYgdGhlIHRyYWNrcyBhcmUgZHluYW1pYywgdGhlIHZhbHVlIGluIHRoZSBzdGF0aWMgbWV0YWRhdGEgbWlnaHQgYmUgaW5hY2N1cmF0ZS4AAc0NAAwsUnVudGltZUNhbGwgABRWb3Rlc1UBBMwgVGhlIGNvdW50aW5nIHR5cGUgZm9yIHZvdGVzLiBVc3VhbGx5IGp1c3QgYmFsYW5jZS4UVGFsbHn1CARMIFRoZSB0YWxseWluZyB0eXBlLgA+AAAcT3JpZ2lucwAAAAAAAAA/AAAkV2hpdGVsaXN0ASRXaGl0ZWxpc3QEPFdoaXRlbGlzdGVkQ2FsbAABBAU8EAQAAAAB+QQAAfkIAAAB0Q0ABCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLgBAAAAgQm91bnRpZXMBIEJvdW50aWVzECxCb3VudHlDb3VudAEAOBAAAAAABMAgTnVtYmVyIG9mIGJvdW50eSBwcm9wb3NhbHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4AIEJvdW50aWVzAAEEBTjVDQQABHggQm91bnRpZXMgdGhhdCBoYXZlIGJlZW4gbWFkZS4ASEJvdW50eURlc2NyaXB0aW9ucwABBAU43Q0EAASAIFRoZSBkZXNjcmlwdGlvbiBvZiBlYWNoIGJvdW50eS4APEJvdW50eUFwcHJvdmFscwEARQ0EAATsIEJvdW50eSBpbmRpY2VzIHRoYXQgaGF2ZSBiZWVuIGFwcHJvdmVkIGJ1dCBub3QgeWV0IGZ1bmRlZC4AAf0EAAEJCQAkREJvdW50eURlcG9zaXRCYXNlVQFAAI4MAQAAAAAAAAAAAAAAAAToIFRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0IGZvciBwbGFjaW5nIGEgYm91bnR5IHByb3Bvc2FsLgBgQm91bnR5RGVwb3NpdFBheW91dERlbGF5OBAAAAAABFkBIFRoZSBkZWxheSBwZXJpb2QgZm9yIHdoaWNoIGEgYm91bnR5IGJlbmVmaWNpYXJ5IG5lZWQgdG8gd2FpdCBiZWZvcmUgY2xhaW0gdGhlIHBheW91dC4ASEJvdW50eVVwZGF0ZVBlcmlvZDgQAAQXAxj0IFRoZSB0aW1lIGxpbWl0IGZvciBhIGN1cmF0b3IgdG8gYWN0IGJlZm9yZSBhIGJvdW50eSBleHBpcmVzLgBVASBUaGUgcGVyaW9kIHRoYXQgc3RhcnRzIHdoZW4gYSBjdXJhdG9yIGlzIGFwcHJvdmVkLCBkdXJpbmcgd2hpY2ggdGhleSBtdXN0IGV4ZWN1dGUgb3JVASB1cGRhdGUgdGhlIGJvdW50eSB2aWEgYGV4dGVuZF9ib3VudHlfZXhwaXJ5YC4gSWYgbWlzc2VkLCB0aGUgYm91bnR5IGV4cGlyZXMsIGFuZCB0aGVVASBjdXJhdG9yIG1heSBiZSBzbGFzaGVkLiBJZiBgQmxvY2tOdW1iZXJGb3I6Ok1BWGAsIGJvdW50aWVzIHN0YXkgYWN0aXZlIGluZGVmaW5pdGVseSy4IHJlbW92aW5nIHRoZSBuZWVkIGZvciBgZXh0ZW5kX2JvdW50eV9leHBpcnlgLgBgQ3VyYXRvckRlcG9zaXRNdWx0aXBsaWVy1QgQIKEHABAZASBUaGUgY3VyYXRvciBkZXBvc2l0IGlzIGNhbGN1bGF0ZWQgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBjdXJhdG9yIGZlZS4AOQEgVGhpcyBkZXBvc2l0IGhhcyBvcHRpb25hbCB1cHBlciBhbmQgbG93ZXIgYm91bmRzIHdpdGggYEN1cmF0b3JEZXBvc2l0TWF4YCBhbmRUIGBDdXJhdG9yRGVwb3NpdE1pbmAuAERDdXJhdG9yRGVwb3NpdE1heEUERAEAIEqp0QEAAAAAAAAAAAAABEkBIE1heGltdW0gYW1vdW50IG9mIGZ1bmRzIHRoYXQgc2hvdWxkIGJlIHBsYWNlZCBpbiBhIGRlcG9zaXQgZm9yIG1ha2luZyBhIHByb3Bvc2FsLgBEQ3VyYXRvckRlcG9zaXRNaW5FBEQBAOh2SBcAAAAAAAAAAAAAAARJASBNaW5pbXVtIGFtb3VudCBvZiBmdW5kcyB0aGF0IHNob3VsZCBiZSBwbGFjZWQgaW4gYSBkZXBvc2l0IGZvciBtYWtpbmcgYSBwcm9wb3NhbC4ASEJvdW50eVZhbHVlTWluaW11bVUBQADodkgXAAAAAAAAAAAAAAAEcCBNaW5pbXVtIHZhbHVlIGZvciBhIGJvdW50eS4ASERhdGFEZXBvc2l0UGVyQnl0ZVUBQKCGAQAAAAAAAAAAAAAAAAAEYQEgVGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQgcGVyIGJ5dGUgd2l0aGluIHRoZSB0aXAgcmVwb3J0IHJlYXNvbiBvciBib3VudHkgZGVzY3JpcHRpb24uAExNYXhpbXVtUmVhc29uTGVuZ3RoOBAAQAAADIggTWF4aW11bSBhY2NlcHRhYmxlIHJlYXNvbiBsZW5ndGguAGUBIEJlbmNobWFya3MgZGVwZW5kIG9uIHRoaXMgdmFsdWUsIGJlIHN1cmUgdG8gdXBkYXRlIHdlaWdodHMgZmlsZSB3aGVuIGNoYW5naW5nIHRoaXMgdmFsdWUAAeENAAAAQQAANENoaWxkQm91bnRpZXMBNENoaWxkQm91bnRpZXMcQENoaWxkQm91bnR5Q291bnQBADgQAAAAAAhtASBERVBSRUNBVEVEOiBSZXBsYWNlZCB3aXRoIGBQYXJlbnRUb3RhbENoaWxkQm91bnRpZXNgIHN0b3JhZ2UgaXRlbSBrZWVwaW5nIGRlZGljYXRlZCBjb3VudHNVASBmb3IgZWFjaCBwYXJlbnQgYm91bnR5LiBOdW1iZXIgb2YgdG90YWwgY2hpbGQgYm91bnRpZXMuIFdpbGwgYmUgcmVtb3ZlZCBpbiBNYXkgMjAyNS4ATFBhcmVudENoaWxkQm91bnRpZXMBAQQFODgQAAAAAAjMIE51bWJlciBvZiBhY3RpdmUgY2hpbGQgYm91bnRpZXMgcGVyIHBhcmVudCBib3VudHku4CBNYXAgb2YgcGFyZW50IGJvdW50eSBpbmRleCB0byBudW1iZXIgb2YgY2hpbGQgYm91bnRpZXMuAGBQYXJlbnRUb3RhbENoaWxkQm91bnRpZXMBAQQFODgQAAAAAARBASBOdW1iZXIgb2YgdG90YWwgY2hpbGQgYm91bnRpZXMgcGVyIHBhcmVudCBib3VudHksIGluY2x1ZGluZyBjb21wbGV0ZWQgYm91bnRpZXMuADRDaGlsZEJvdW50aWVzAAEIBQXM5Q0EAASUIENoaWxkIGJvdW50aWVzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkLgBkQ2hpbGRCb3VudHlEZXNjcmlwdGlvbnNWMQABCAUFzN0NBAAMKQEgVGhlIGRlc2NyaXB0aW9uIG9mIGVhY2ggY2hpbGQtYm91bnR5LiBJbmRleGVkIGJ5IGAocGFyZW50X2lkLCBjaGlsZF9pZClgLgBtASBUaGlzIGl0ZW0gcmVwbGFjZXMgdGhlIGBDaGlsZEJvdW50eURlc2NyaXB0aW9uc2Agc3RvcmFnZSBpdGVtIGZyb20gdGhlIFYwIHN0b3JhZ2UgdmVyc2lvbi4AUFYwVG9WMUNoaWxkQm91bnR5SWRzAAEEBTjMBAAUXQEgVGhlIG1hcHBpbmcgb2YgdGhlIGNoaWxkIGJvdW50eSBpZHMgZnJvbSBzdG9yYWdlIHZlcnNpb24gYFYwYCB0byB0aGUgbmV3IGBWMWAgdmVyc2lvbi4AbQEgVGhlIGBWMGAgaWRzIGJhc2VkIG9uIHRvdGFsIGNoaWxkIGJvdW50eSBjb3VudCBbYENoaWxkQm91bnR5Q291bnRgXWAuIFRoZSBgVjFgIHZlcnNpb24gaWRzQQEgYmFzZWQgb24gdGhlIGNoaWxkIGJvdW50eSBjb3VudCBwZXIgcGFyZW50IGJvdW50eSBbYFBhcmVudFRvdGFsQ2hpbGRCb3VudGllc2BdLmUBIFRoZSBpdGVtIGludGVuZGVkIHNvbGVseSBmb3IgY2xpZW50IGNvbnZlbmllbmNlIGFuZCBub3QgdXNlZCBpbiB0aGUgcGFsbGV0J3MgY29yZSBsb2dpYy4ATENoaWxkcmVuQ3VyYXRvckZlZXMBAQQFOFUBQAAAAAAAAAAAAAAAAAAAAAAEAQEgVGhlIGN1bXVsYXRpdmUgY2hpbGQtYm91bnR5IGN1cmF0b3IgZmVlIGZvciBlYWNoIHBhcmVudCBib3VudHkuAAEBBQABDQkACGRNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50OBBkAAAABB0BIE1heGltdW0gbnVtYmVyIG9mIGNoaWxkIGJvdW50aWVzIHRoYXQgY2FuIGJlIGFkZGVkIHRvIGEgcGFyZW50IGJvdW50eS4AXENoaWxkQm91bnR5VmFsdWVNaW5pbXVtVQFAAOQLVAIAAAAAAAAAAAAAAASIIE1pbmltdW0gdmFsdWUgZm9yIGEgY2hpbGQtYm91bnR5LgAB7Q0AAABCAAAkQXNzZXRSYXRlASRBc3NldFJhdGUEWENvbnZlcnNpb25SYXRlVG9OYXRpdmUAAQQCyQQJBQQADB0BIE1hcHMgYW4gYXNzZXQgdG8gaXRzIGZpeGVkIHBvaW50IHJlcHJlc2VudGF0aW9uIGluIHRoZSBuYXRpdmUgYmFsYW5jZS4ATQEgRS5nLiBgbmF0aXZlX2Ftb3VudCA9IGFzc2V0X2Ftb3VudCAqIENvbnZlcnNpb25SYXRlVG9OYXRpdmU6OjxUPjo6Z2V0KGFzc2V0X2tpbmQpYAABBQUAAREJAAAB8Q0ABCRBc3NldEtpbmTJBARFASBUaGUgdHlwZSBmb3IgYXNzZXQga2luZHMgZm9yIHdoaWNoIHRoZSBjb252ZXJzaW9uIHJhdGUgdG8gbmF0aXZlIGJhbGFuY2UgaXMgc2V0LgBDAABITXVsdGlBc3NldEJvdW50aWVzAUhNdWx0aUFzc2V0Qm91bnRpZXMcLEJvdW50eUNvdW50AQA4EAAAAAAEwCBOdW1iZXIgb2YgYm91bnR5IHByb3Bvc2FscyB0aGF0IGhhdmUgYmVlbiBtYWRlLgAgQm91bnRpZXMAAQQFOPUNBAAEeCBCb3VudGllcyB0aGF0IGhhdmUgYmVlbiBtYWRlLgA0Q2hpbGRCb3VudGllcwABCAUFzAEOBAAMlCBDaGlsZCBib3VudGllcyB0aGF0IGhhdmUgYmVlbiBhZGRlZC4AyCBJbmRleGVkIGJ5IGAocGFyZW50X2JvdW50eV9pZCwgY2hpbGRfYm91bnR5X2lkKWAuAFhDaGlsZEJvdW50aWVzUGVyUGFyZW50AQEEBTg4EAAAAAAMzCBOdW1iZXIgb2YgYWN0aXZlIGNoaWxkIGJvdW50aWVzIHBlciBwYXJlbnQgYm91bnR5LgB8IEluZGV4ZWQgYnkgYHBhcmVudF9ib3VudHlfaWRgLgBsVG90YWxDaGlsZEJvdW50aWVzUGVyUGFyZW50AQEEBTg4EAAAAAAMQQEgTnVtYmVyIG9mIHRvdGFsIGNoaWxkIGJvdW50aWVzIHBlciBwYXJlbnQgYm91bnR5LCBpbmNsdWRpbmcgY29tcGxldGVkIGJvdW50aWVzLgB8IEluZGV4ZWQgYnkgYHBhcmVudF9ib3VudHlfaWRgLgBsQ2hpbGRCb3VudGllc1ZhbHVlUGVyUGFyZW50AQEEBThVAUAAAAAAAAAAAAAAAAAAAAAAEG0BIFRoZSBjdW11bGF0aXZlIGNoaWxkLWJvdW50eSB2YWx1ZSBmb3IgZWFjaCBwYXJlbnQgYm91bnR5LiBUbyBiZSBzdWJ0cmFjdGVkIGZyb20gdGhlIHBhcmVudJAgYm91bnR5IHBheW91dCB3aGVuIGF3YXJkaW5nIGJvdW50eS4AfCBJbmRleGVkIGJ5IGBwYXJlbnRfYm91bnR5X2lkYC4AOEN1cmF0b3JEZXBvc2l0AAEIBQUFDgkOBAAsZQEgVGhlIGNvbnNpZGVyYXRpb24gY29zdCBpbmN1cnJlZCBieSB0aGUgY2hpbGQtL2JvdW50eSBjdXJhdG9yIGZvciBjb21taXR0aW5nIHRvIHRoZSByb2xlLgBxASBEZXRlcm1pbmVkIGJ5IFtgcGFsbGV0OjpDb25maWc6OkNvbnNpZGVyYXRpb25gXS4gSXQgaXMgY3JlYXRlZCB3aGVuIHRoZSBjdXJhdG9yIGFjY2VwdHMgdGhlRQEgcm9sZSwgYW5kIGlzIGVpdGhlciBidXJuZWQgaWYgdGhlIGN1cmF0b3IgbWlzYmVoYXZlcyBvciBjb25zdW1lZCB1cG9uIHN1Y2Nlc3NmdWyEIGNvbXBsZXRpb24gb2YgdGhlIGNoaWxkLS9ib3VudHkuABEBIE5vdGU6IElmIHRoZSBwYXJlbnQgY3VyYXRvciBpcyBhbHNvIGFzc2lnbmVkIHRvIHRoZSBjaGlsZC1ib3VudHksICANASB0aGUgY29uc2lkZXJhdGlvbiBjb3N0IGlzIGNoYXJnZWQgb25seSBvbmNlIOKAlCB3aGVuIHRoZSBjdXJhdG9yICCgIGFjY2VwdHMgdGhlIHJvbGUgZm9yIHRoZSBwYXJlbnQgYm91bnR5LgDIIEluZGV4ZWQgYnkgYChwYXJlbnRfYm91bnR5X2lkLCBjaGlsZF9ib3VudHlfaWQpYC4AAQ0FAAEVCQAMSEJvdW50eVZhbHVlTWluaW11bVUBQADIF6gEAAAAAAAAAAAAAAAEcCBNaW5pbXVtIHZhbHVlIGZvciBhIGJvdW50eS4AXENoaWxkQm91bnR5VmFsdWVNaW5pbXVtVQFAAJQ1dwAAAAAAAAAAAAAAAASIIE1pbmltdW0gdmFsdWUgZm9yIGEgY2hpbGQtYm91bnR5LgBkTWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudDgQZAAAAAQdASBNYXhpbXVtIG51bWJlciBvZiBjaGlsZCBib3VudGllcyB0aGF0IGNhbiBiZSBhZGRlZCB0byBhIHBhcmVudCBib3VudHkuAAENDgAIJEFzc2V0S2luZMkECEEBIFR5cGUgcGFyYW1ldGVyIHJlcHJlc2VudGluZyB0aGUgYXNzZXQga2luZHMgdXNlZCB0byBmdW5kLCByZWZ1bmQgYW5kIHNwZW5kIGZyb20oIGJvdW50aWVzLixCZW5lZmljaWFyec0EBEEBIFR5cGUgcGFyYW1ldGVyIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGJlbmVmaWNpYXJpZXMgZWxpZ2libGUgdG8gcmVjZWl2ZSBwYXltZW50cy4ARAAADERhcAEMRGFwCEBCdWRnZXRBbGxvY2F0aW9uAQAVBQQAELwgQnVkZ2V0IGFsbG9jYXRpb24gbWFwOiBgQnVkZ2V0S2V5IC0+IFBlcmJpbGxgLgA1ASBLZXlzIG11c3QgY29ycmVzcG9uZCB0byByZWdpc3RlcmVkIGBCdWRnZXRSZWNpcGllbnRzYC4gU3VtIG9mIHZhbHVlcyBtdXN0IGJlKQEgZXhhY3RseSBgUGVyYmlsbDo6b25lKClgICgxMDAlKS4gUmVjaXBpZW50cyBub3QgaW5jbHVkZWQgcmVjZWl2ZSBub3RoaW5nLgBUTGFzdElzc3VhbmNlVGltZXN0YW1wAQAoIAAAAAAAAAAAEKggVGltZXN0YW1wIChtcykgb2YgdGhlIGxhc3QgaXNzdWFuY2UgZHJpcC4AsCBPbiBleGlzdGluZyBjaGFpbnMsIHRoaXMgbXVzdCBiZSBzZWVkZWQgdmlhOQEgW2BtaWdyYXRpb25zOjpNaWdyYXRlVjFUb1YyYF0gdG8gcHJldmVudCBpbmNvcnJlY3QgbWludGluZyBvbiB0aGUgZmlyc3QgZHJpcC4AAREFAAEZCQAMIFBhbGxldElkIQsgZGFwL2J1ZmYExCBUaGUgcGFsbGV0IElEIHVzZWQgdG8gZGVyaXZlIHRoZSBidWZmZXIgYWNjb3VudC4APElzc3VhbmNlQ2FkZW5jZSggYOoAAAAAAAAYyCBNaW5pbXVtIGVsYXBzZWQgdGltZSAobXMpIGJldHdlZW4gaXNzdWFuY2UgZHJpcHMuAGQgLSBgMGAgPSBkcmlwIGV2ZXJ5IGJsb2NrtCAtIGA2MF8wMDBgID0gZHJpcCBldmVyeSBtaW51dGUgKFJlY29tbWVuZGVkKQCgIFNob3VsZCBiZSBzbWFsbCByZWxhdGl2ZSB0byBlcmEgbGVuZ3RoLgBETWF4RWxhcHNlZFBlckRyaXAoIMAnCQAAAAAAFB0BIFNhZmV0eSBjZWlsaW5nOiBtYXhpbXVtIGVsYXBzZWQgdGltZSAobXMpIGNvbnNpZGVyZWQgaW4gYSBzaW5nbGUgZHJpcC4AFQEgSWYgbW9yZSB0aW1lIGhhcyBwYXNzZWQgdGhhbiB0aGlzLCBlbGFwc2VkIGlzIGNsYW1wZWQgdG8gdGhpcyB2YWx1ZS4ZASBQcmV2ZW50cyBhY2NpZGVudGFsIG92ZXItbWludGluZyBmcm9tIGJ1Z3MsIG1pc2NvbmZpZ3VyYXRpb24sIG9yIGxvbmdgIHBlcmlvZHMgd2l0aG91dCBibG9ja3MuAAERDgAACM0UMQ+FJvUE242YVI2L7jaGWvtI3s12RwMsNPBRNHlFRGJ1ZGdldF9yZWNpcGllbnRzABUOEB0BIEFsbCByZWdpc3RlcmVkIGJ1ZGdldCByZWNpcGllbnRzIHdpdGggdGhlaXIgY3VycmVudCBhbGxvY2F0aW9uIHNoYXJlcy4AHQEgVGhlIGBQZXJiaWxsYCBpcyB0YWtlbiBmcm9tIGBCdWRnZXRBbGxvY2F0aW9uYDsgcmVjaXBpZW50cyBhYnNlbnQgZnJvbZwgdGhlIG1hcCBhcHBlYXIgd2l0aCBgUGVyYmlsbDo6emVybygpYC4AzRQxD4Um9QTbjZhUjYvuNqlnawb9+BLEv3FJDsztnT0cc3RhZ2luZwAEDBUBIEFjY291bnQgdGhhdCBob2xkcyBidXJuZWQvc2xhc2hlZCBmdW5kcyBiZWZvcmUgdGhleSBhcmUgZHJhaW5lZCBpbnRvGQEgdGhlIERBUCBidWZmZXIgYnkgYG9uX2lkbGVgLiBFeHBvc2VkIHRvIGNsaWVudHMgc28gdGhleSBkb24ndCBoYXZlIHRvmCByZS1kZXJpdmUgdGhlIHN1Yi1hY2NvdW50IHRoZW1zZWx2ZXMuAEUAAEhTdGF0ZVRyaWVNaWdyYXRpb24BSFN0YXRlVHJpZU1pZ3JhdGlvbgxATWlncmF0aW9uUHJvY2VzcwEANQU4AAAAAAAAAAAAAAAAAAAQUCBNaWdyYXRpb24gcHJvZ3Jlc3MuAF0BIFRoaXMgc3RvcmVzIHRoZSBzbmFwc2hvdCBvZiB0aGUgbGFzdCBtaWdyYXRlZCBrZXlzLiBJdCBjYW4gYmUgc2V0IGludG8gbW90aW9uIGFuZCBtb3Zl1CBmb3J3YXJkIGJ5IGFueSBvZiB0aGUgbWVhbnMgcHJvdmlkZWQgYnkgdGhpcyBwYWxsZXQuAChBdXRvTGltaXRzAQAtBQQADNQgVGhlIGxpbWl0cyB0aGF0IGFyZSBpbXBvc2VkIG9uIGF1dG9tYXRpYyBtaWdyYXRpb25zLgDUIElmIHNldCB0byBOb25lLCB0aGVuIG5vIGF1dG9tYXRpYyBtaWdyYXRpb24gaGFwcGVucy4AYFNpZ25lZE1pZ3JhdGlvbk1heExpbWl0cwAAMQUEAAzgIFRoZSBtYXhpbXVtIGxpbWl0cyB0aGF0IHRoZSBzaWduZWQgbWlncmF0aW9uIGNvdWxkIHVzZS4AtCBJZiBub3Qgc2V0LCBubyBzaWduZWQgc3VibWlzc2lvbiBpcyBhbGxvd2VkLgABKQUAASEJAAQkTWF4S2V5TGVuOBAAAgAAVLQgTWF4aW1hbCBudW1iZXIgb2YgYnl0ZXMgdGhhdCBhIGtleSBjYW4gaGF2ZS4AsCBGUkFNRSBpdHNlbGYgZG9lcyBub3QgbGltaXQgdGhlIGtleSBsZW5ndGguAQEgVGhlIGNvbmNyZXRlIHZhbHVlIG11c3QgdGhlcmVmb3JlIGRlcGVuZCBvbiB5b3VyIHN0b3JhZ2UgdXNhZ2UuWQEgQSBbYGZyYW1lX3N1cHBvcnQ6OnN0b3JhZ2U6OlN0b3JhZ2VOTWFwYF0gZm9yIGV4YW1wbGUgY2FuIGhhdmUgYW4gYXJiaXRyYXJ5IG51bWJlciBvZkUBIGtleXMgd2hpY2ggYXJlIHRoZW4gaGFzaGVkIGFuZCBjb25jYXRlbmF0ZWQsIHJlc3VsdGluZyBpbiBhcmJpdHJhcmlseSBsb25nIGtleXMuAEEBIFVzZSB0aGUgKnN0YXRlIG1pZ3JhdGlvbiBSUEMqIHRvIHJldHJpZXZlIHRoZSBsZW5ndGggb2YgdGhlIGxvbmdlc3Qga2V5IGluIHlvdXIBASBzdG9yYWdlOiA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL2lzc3Vlcy8xMTY0Mj4AKQEgVGhlIG1pZ3JhdGlvbiB3aWxsIGhhbHQgd2l0aCBhIGBIYWx0ZWRgIGV2ZW50IGlmIHRoaXMgdmFsdWUgaXMgdG9vIHNtYWxsLkkBIFNpbmNlIHRoZXJlIGlzIG5vIHJlYWwgcGVuYWx0eSBmcm9tIG92ZXItZXN0aW1hdGluZywgaXQgaXMgYWR2aXNlZCB0byB1c2UgYSBsYXJnZYAgdmFsdWUuIFRoZSBkZWZhdWx0IGlzIDUxMiBieXRlLgCAIFNvbWUga2V5IGxlbmd0aHMgZm9yIHJlZmVyZW5jZTrQIC0gW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlVmFsdWVgXTogMzIgYnl0ZcggLSBbYGZyYW1lX3N1cHBvcnQ6OnN0b3JhZ2U6OlN0b3JhZ2VNYXBgXTogNjQgYnl0ZeAgLSBbYGZyYW1lX3N1cHBvcnQ6OnN0b3JhZ2U6OlN0b3JhZ2VEb3VibGVNYXBgXTogOTYgYnl0ZQBIIEZvciBtb3JlIGluZm8gc2VlRQEgPGh0dHBzOi8vd3d3LnNoYXdudGFicml6aS5jb20vYmxvZy9pbnRlcmFjdGluZy13aXRoLXRoZS1zdWJzdHJhdGUtcnBjLWVuZHBvaW50Lz4AASkJAAAARgAAPE5vbWluYXRpb25Qb29scwE8Tm9taW5hdGlvblBvb2xzVEBUb3RhbFZhbHVlTG9ja2VkAQBVAUAAAAAAAAAAAAAAAAAAAAAAFIwgVGhlIHN1bSBvZiBmdW5kcyBhY3Jvc3MgYWxsIHBvb2xzLgBxASBUaGlzIG1pZ2h0IGJlIGxvd2VyIGJ1dCBuZXZlciBoaWdoZXIgdGhhbiB0aGUgc3VtIG9mIGB0b3RhbF9iYWxhbmNlYCBvZiBhbGwgW2BQb29sTWVtYmVyc2BdWQEgYmVjYXVzZSBjYWxsaW5nIGBwb29sX3dpdGhkcmF3X3VuYm9uZGVkYCBtaWdodCBkZWNyZWFzZSB0aGUgdG90YWwgc3Rha2Ugb2YgdGhlIHBvb2wncykBIGBib25kZWRfYWNjb3VudGAgd2l0aG91dCBhZGp1c3RpbmcgdGhlIHBhbGxldC1pbnRlcm5hbCBgVW5ib25kaW5nUG9vbGAncy4ALE1pbkpvaW5Cb25kAQBVAUAAAAAAAAAAAAAAAAAAAAAABJwgTWluaW11bSBhbW91bnQgdG8gYm9uZCB0byBqb2luIGEgcG9vbC4ANE1pbkNyZWF0ZUJvbmQBAFUBQAAAAAAAAAAAAAAAAAAAAAAcoCBNaW5pbXVtIGJvbmQgcmVxdWlyZWQgdG8gY3JlYXRlIGEgcG9vbC4AZQEgVGhpcyBpcyB0aGUgYW1vdW50IHRoYXQgdGhlIGRlcG9zaXRvciBtdXN0IHB1dCBhcyB0aGVpciBpbml0aWFsIHN0YWtlIGluIHRoZSBwb29sLCBhcyBhboggaW5kaWNhdGlvbiBvZiAic2tpbiBpbiB0aGUgZ2FtZSIuAGkBIFRoaXMgaXMgdGhlIHZhbHVlIHRoYXQgd2lsbCBhbHdheXMgZXhpc3QgaW4gdGhlIHN0YWtpbmcgbGVkZ2VyIG9mIHRoZSBwb29sIGJvbmRlZCBhY2NvdW50gCB3aGlsZSBhbGwgb3RoZXIgYWNjb3VudHMgbGVhdmUuACBNYXhQb29scwAAOAQACGkBIE1heGltdW0gbnVtYmVyIG9mIG5vbWluYXRpb24gcG9vbHMgdGhhdCBjYW4gZXhpc3QuIElmIGBOb25lYCwgdGhlbiBhbiB1bmJvdW5kZWQgbnVtYmVyIG9mRCBwb29scyBjYW4gZXhpc3QuADhNYXhQb29sTWVtYmVycwAAOAQACEkBIE1heGltdW0gbnVtYmVyIG9mIG1lbWJlcnMgdGhhdCBjYW4gZXhpc3QgaW4gdGhlIHN5c3RlbS4gSWYgYE5vbmVgLCB0aGVuIHRoZSBjb3VudLggbWVtYmVycyBhcmUgbm90IGJvdW5kIG9uIGEgc3lzdGVtIHdpZGUgYmFzaXMuAFRNYXhQb29sTWVtYmVyc1BlclBvb2wAADgEAAhBASBNYXhpbXVtIG51bWJlciBvZiBtZW1iZXJzIHRoYXQgbWF5IGJlbG9uZyB0byBwb29sLiBJZiBgTm9uZWAsIHRoZW4gdGhlIGNvdW50IG9mqCBtZW1iZXJzIGlzIG5vdCBib3VuZCBvbiBhIHBlciBwb29sIGJhc2lzLgBMR2xvYmFsTWF4Q29tbWlzc2lvbgAAGQUEAAxpASBUaGUgbWF4aW11bSBjb21taXNzaW9uIHRoYXQgY2FuIGJlIGNoYXJnZWQgYnkgYSBwb29sLiBVc2VkIG9uIGNvbW1pc3Npb24gcGF5b3V0cyB0byBib3VuZCUBIHBvb2wgY29tbWlzc2lvbnMgdGhhdCBhcmUgPiBgR2xvYmFsTWF4Q29tbWlzc2lvbmAsIG5lY2Vzc2FyeSBpZiBhIGZ1dHVyZQ0BIGBHbG9iYWxNYXhDb21taXNzaW9uYCBpcyBsb3dlciB0aGFuIHNvbWUgY3VycmVudCBwb29sIGNvbW1pc3Npb25zLgAsUG9vbE1lbWJlcnMAAQQFBB0OBAAMQCBBY3RpdmUgbWVtYmVycy4A0CBUV09YLU5PVEU6IFNBRkUgc2luY2UgYEFjY291bnRJZGAgaXMgYSBzZWN1cmUgaGFzaC4AVENvdW50ZXJGb3JQb29sTWVtYmVycwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwACxCb25kZWRQb29scwABBAU4KQ4EAARoIFN0b3JhZ2UgZm9yIGJvbmRlZCBwb29scy4AVENvdW50ZXJGb3JCb25kZWRQb29scwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwACxSZXdhcmRQb29scwABBAU4OQ4EAAh1ASBSZXdhcmQgcG9vbHMuIFRoaXMgaXMgd2hlcmUgdGhlcmUgcmV3YXJkcyBmb3IgZWFjaCBwb29sIGFjY3VtdWxhdGUuIFdoZW4gYSBtZW1iZXJzIHBheW91dCBpc1kBIGNsYWltZWQsIHRoZSBiYWxhbmNlIGNvbWVzIG91dCBvZiB0aGUgcmV3YXJkIHBvb2wuIEtleWVkIGJ5IHRoZSBib25kZWQgcG9vbHMgYWNjb3VudC4AVENvdW50ZXJGb3JSZXdhcmRQb29scwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwADxTdWJQb29sc1N0b3JhZ2UAAQQFOD0OBAAIGQEgR3JvdXBzIG9mIHVuYm9uZGluZyBwb29scy4gRWFjaCBncm91cCBvZiB1bmJvbmRpbmcgcG9vbHMgYmVsb25ncyB0byBhKQEgYm9uZGVkIHBvb2wsIGhlbmNlIHRoZSBuYW1lIHN1Yi1wb29scy4gS2V5ZWQgYnkgdGhlIGJvbmRlZCBwb29scyBhY2NvdW50LgBkQ291bnRlckZvclN1YlBvb2xzU3RvcmFnZQEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwACBNZXRhZGF0YQEBBAU4QQEEAARcIE1ldGFkYXRhIGZvciB0aGUgcG9vbC4ASENvdW50ZXJGb3JNZXRhZGF0YQEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAChMYXN0UG9vbElkAQA4EAAAAAAE0CBFdmVyIGluY3JlYXNpbmcgbnVtYmVyIG9mIGFsbCBwb29scyBjcmVhdGVkIHNvIGZhci4ATFJldmVyc2VQb29sSWRMb29rdXAAAQQFBDgEABDcIEEgcmV2ZXJzZSBsb29rdXAgZnJvbSB0aGUgcG9vbCdzIGFjY291bnQgaWQgdG8gaXRzIGlkLgB1ASBUaGlzIGlzIG9ubHkgdXNlZCBmb3Igc2xhc2hpbmcgYW5kIG9uIGF1dG9tYXRpYyB3aXRoZHJhdyB1cGRhdGUuIEluIGFsbCBvdGhlciBpbnN0YW5jZXMsIHRoZSUBIHBvb2wgaWQgaXMgdXNlZCwgYW5kIHRoZSBhY2NvdW50cyBhcmUgZGV0ZXJtaW5pc3RpY2FsbHkgZGVyaXZlZCBmcm9tIGl0LgB0Q291bnRlckZvclJldmVyc2VQb29sSWRMb29rdXABADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcABAQ2xhaW1QZXJtaXNzaW9ucwEBBAUEXQUEAgQBASBNYXAgZnJvbSBhIHBvb2wgbWVtYmVyIGFjY291bnQgdG8gdGhlaXIgb3B0ZWQgY2xhaW0gcGVybWlzc2lvbi4AAUEFAAEtCQAMIFBhbGxldElkIQsgcHkvbm9wbHMEhCBUaGUgbm9taW5hdGlvbiBwb29sJ3MgcGFsbGV0IGlkLgBITWF4UG9pbnRzVG9CYWxhbmNlDAQKMB0BIFRoZSBtYXhpbXVtIHBvb2wgcG9pbnRzLXRvLWJhbGFuY2UgcmF0aW8gdGhhdCBhbiBgb3BlbmAgcG9vbCBjYW4gaGF2ZS4AVQEgVGhpcyBpcyBpbXBvcnRhbnQgaW4gdGhlIGV2ZW50IHNsYXNoaW5nIHRha2VzIHBsYWNlIGFuZCB0aGUgcG9vbCdzIHBvaW50cy10by1iYWxhbmNlfCByYXRpbyBiZWNvbWVzIGRpc3Byb3BvcnRpb25hbC4AZQEgTW9yZW92ZXIsIHRoaXMgcmVsYXRlcyB0byB0aGUgYFJld2FyZENvdW50ZXJgIHR5cGUgYXMgd2VsbCwgYXMgdGhlIGFyaXRobWV0aWMgb3BlcmF0aW9uc1UBIGFyZSBhIGZ1bmN0aW9uIG9mIG51bWJlciBvZiBwb2ludHMsIGFuZCBieSBzZXR0aW5nIHRoaXMgdmFsdWUgdG8gZS5nLiAxMCwgeW91IGVuc3VyZWUBIHRoYXQgdGhlIHRvdGFsIG51bWJlciBvZiBwb2ludHMgaW4gdGhlIHN5c3RlbSBhcmUgYXQgbW9zdCAxMCB0aW1lcyB0aGUgdG90YWxfaXNzdWFuY2Ugb2acIHRoZSBjaGFpbiwgaW4gdGhlIGFic29sdXRlIHdvcnNlIGNhc2UuAEkBIEZvciBhIHZhbHVlIG9mIDEwLCB0aGUgdGhyZXNob2xkIHdvdWxkIGJlIGEgcG9vbCBwb2ludHMtdG8tYmFsYW5jZSByYXRpbyBvZiAxMDoxLjEBIFN1Y2ggYSBzY2VuYXJpbyB3b3VsZCBhbHNvIGJlIHRoZSBlcXVpdmFsZW50IG9mIHRoZSBwb29sIGJlaW5nIDkwJSBzbGFzaGVkLgAwTWF4VW5ib25kaW5nOBAgAAAABD0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzaW11bHRhbmVvdXMgdW5ib25kaW5nIGNodW5rcyB0aGF0IGNhbiBleGlzdCBwZXIgbWVtYmVyLgABVQ4ABDRSZXdhcmRDb3VudGVyCQUwqCBUaGUgdHlwZSB0aGF0IGlzIHVzZWQgZm9yIHJld2FyZCBjb3VudGVyLgA1ASBUaGUgYXJpdGhtZXRpYyBvZiB0aGUgcmV3YXJkIGNvdW50ZXIgbWlnaHQgc2F0dXJhdGUgYmFzZWQgb24gdGhlIHNpemUgb2YgdGhlZQEgYEN1cnJlbmN5OjpCYWxhbmNlYC4gSWYgdGhpcyBoYXBwZW5zLCBvcGVyYXRpb25zIGZhaWxzLiBOb25ldGhlbGVzcywgdGhpcyB0eXBlIHNob3VsZCBiZWUBIGNob3NlbiBzdWNoIHRoYXQgdGhpcyBmYWlsdXJlIGFsbW9zdCBuZXZlciBoYXBwZW5zLCBhcyBpZiBpdCBoYXBwZW5zLCB0aGUgcG9vbCBiYXNpY2FsbHllASBuZWVkcyB0byBiZSBkaXNtYW50bGVkIChvciBhbGwgcG9vbHMgbWlncmF0ZWQgdG8gYSBsYXJnZXIgYFJld2FyZENvdW50ZXJgIHR5cGUsIHdoaWNoIGlzPCBhIFBJVEEgdG8gZG8pLgBhASBTZWUgdGhlIGlubGluZSBjb2RlIGRvY3Mgb2YgYE1lbWJlcjo6cGVuZGluZ19yZXdhcmRzYCBhbmQgYFJld2FyZFBvb2w6OnVwZGF0ZV9yZWNvcmRlZGBlASBmb3IgZXhhbXBsZSBhbmFseXNpcy4gQSBbYHNwX3J1bnRpbWU6OkZpeGVkVTEyOGBdIHNob3VsZCBiZSBmaW5lIGZvciBjaGFpbnMgd2l0aCBiYWxhbmNlUQEgdHlwZXMgc2ltaWxhciB0byB0aGF0IG9mIFBvbGthZG90IGFuZCBLdXNhbWEsIGluIHRoZSBhYnNlbmNlIG9mIHNldmVyZSBzbGFzaGluZyAob3I9ASBwcmV2ZW50ZWQgdmlhIGEgcmVhc29uYWJsZSBgTWF4UG9pbnRzVG9CYWxhbmNlYCksIGZvciBtYW55IG1hbnkgeWVhcnMgdG8gY29tZS4AUAAAJFZvdGVyTGlzdAEkVm90ZXJMaXN0HCRMaXN0Tm9kZXMAAQQFBF0OBAAMgCBBIHNpbmdsZSBub2RlLCB3aXRoaW4gc29tZSBiYWcuAAUBIE5vZGVzIHN0b3JlIGxpbmtzIGZvcndhcmQgYW5kIGJhY2sgd2l0aGluIHRoZWlyIHJlc3BlY3RpdmUgYmFncy4ATENvdW50ZXJGb3JMaXN0Tm9kZXMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAgTGlzdEJhZ3MAAQQFKGEOBAAMZCBBIGJhZyBzdG9yZWQgaW4gc3RvcmFnZS4AGQEgU3RvcmVzIGEgYEJhZ2Agc3RydWN0LCB3aGljaCBzdG9yZXMgaGVhZCBhbmQgdGFpbCBwb2ludGVycyB0byBpdHNlbGYuAFBOZXh0Tm9kZUF1dG9SZWJhZ2dlZAAABAQACAUBIFBvaW50ZXIgdGhhdCByZW1lbWJlcnMgdGhlIG5leHQgbm9kZSB0aGF0IHdpbGwgYmUgYXV0by1yZWJhZ2dlZC4BASBXaGVuIGBOb25lYCwgdGhlIG5leHQgc2NhbiB3aWxsIHN0YXJ0IGZyb20gdGhlIGxpc3QgaGVhZCBhZ2Fpbi4AEExvY2sAABAEABCEIExvY2sgYWxsIHVwZGF0ZXMgdG8gdGhpcyBwYWxsZXQuADkBIElmIGFueSBub2RlcyBuZWVkcyB1cGRhdGluZywgcmVtb3ZhbCBvciBhZGRpdGlvbiBkdWUgdG8gYSB0ZW1wb3JhcnkgbG9jaywgdGhldCBbYENhbGw6OnJlYmFnYF0gY2FuIGJlIHVzZWQuADBQZW5kaW5nUmViYWcAAQQFBBAEADgdASBBY2NvdW50cyB0aGF0IGZhaWxlZCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBiYWdzLWxpc3QgZHVlIHRvIGxvY2tpbmcuWQEgVGhlc2UgYWNjb3VudHMgd2lsbCBiZSBwcm9jZXNzZWQgd2l0aCBwcmlvcml0eSBpbiBgb25faWRsZWAgb3IgdmlhIGByZWJhZ2AgZXh0cmluc2ljLgBNASBOb3RlOiBUaGlzIHN0b3JhZ2UgaXMgaW50ZW50aW9uYWxseSB1bmJvdW5kZWQuIFRoZSBmb2xsb3dpbmcgZmFjdG9ycyBtYWtlIGJvdW5kaW5nNCB1bm5lY2Vzc2FyeTpRASAxLiBUaGUgc3RvcmFnZSB1c2FnZSBpcyB0ZW1wb3JhcnkgLSBhY2NvdW50cyBhcmUgcHJvY2Vzc2VkIGFuZCByZW1vdmVkIGluIGBvbl9pZGxlYEUBIDIuIFRoZSBwYWxsZXQgaXMgb25seSBsb2NrZWQgZHVyaW5nIHNuYXBzaG90IGdlbmVyYXRpb24sIHdoaWNoIGlzIHdlaWdodC1saW1pdGVkbQEgMy4gUHJvY2Vzc2luZyBoYXBwZW5zIGF0IG11bHRpcGxlIGFjY291bnRzIHBlciBibG9jaywgY2xlYXJpbmcgZXZlbiBsYXJnZSBiYWNrbG9ncyBxdWlja2x5QQEgNC4gQW4gYXJ0aWZpY2lhbCBsaW1pdCBjb3VsZCBiZSBleGhhdXN0ZWQgYnkgYW4gYXR0YWNrZXIsIHByZXZlbnRpbmcgbGVnaXRpbWF0ZQEBICAgIGF1dG8tcmViYWdnaW5nIGZyb20gcHV0dGluZyBhY2NvdW50cyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbgBpASBXZSBkb24ndCBzdG9yZSB0aGUgc2NvcmUgaGVyZSAtIGl0J3MgYWx3YXlzIGZldGNoZWQgZnJvbSBgU2NvcmVQcm92aWRlcmAgd2hlbiBwcm9jZXNzaW5nLGkBIGVuc3VyaW5nIHdlIHVzZSB0aGUgbW9zdCB1cC10by1kYXRlIHNjb3JlIChhY2NvdW50cyBtYXkgaGF2ZSBiZWVuIHNsYXNoZWQsIHJld2FyZGVkLCBldGMudCB3aGlsZSB3YWl0aW5nIGluIHRoZSBxdWV1ZSkuAFhDb3VudGVyRm9yUGVuZGluZ1JlYmFnAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAAXUFAAE1CQAINEJhZ1RocmVzaG9sZHNlDgkZIQMA5AtUAgAAAPOegJcCAAAAqLGX4gIAAACUSS42AwAAACecOpMDAAAAA7zO+gMAAABCwBtuBAAAABtHde4EAAAAOF5VfQUAAABG3GAcBgAAAIk4bM0GAAAAtu6AkgcAAAD+fuNtCAAAAOgbGmIJAAAAsBn0cQoAAAAQNZKgCwAAAM/Jb/EMAAAAQRRtaA4AAADnm9oJEAAAAM7ohdoRAAAAKKnH3xMAAAC7cJMfFgAAAI5AiaAYAAAAgQoJahsAAAA2akiEHgAAAFvTavghAAAAgHyc0CUAAADJVTAYKgAAAL1jwdsuAAAAceBXKTQAAABokJIQOgAAAO3E1KJAAAAAaZN580cAAACP2AwYUAAAAEuviihZAAAAahamP2MAAAAJlRd7bgAAAHjF9Pt6AAAAYsgR54gAAABRv21lmAAAAASOq6SpAAAAVEaY17wAAACRysA20gAAABdfGAHqAAAAvRWyfAQBAABDNY/3IQEAALj8hMhCAQAAmWc8UGcBAAAH5E76jwEAALNBgz69AQAAAn8uou8BAACYg7y5JwIAABZNZSpmAgAAtJUTrKsCAAAtjoIL+QIAAKHmmCxPAwAAphYIDa8DAADMnTfHGQQAAKDVhJWQBAAAQufg1RQFAAACjNcNqAUAAA91Cu9LBgAA6o0uXAIHAADDy5luzQcAALHlcXyvCAAAqiuOH6sJAAC1wSA9wwoAACbQPQ77CwAAcMdZKVYNAADrrdqM2A4AAPeX26qGEAAAz/BEdmUSAAAfJmBxehQAAAmmEb7LFgAAHfvoL2AZAACUOjxgPxwAAIr+icRxHwAAztljxwAjAAADqSrk9iYAAP5y7sVfKwAANsnMaUgwAADa4zJFvzUAAAYqdHDUOwAAfJcy1plCAACEoyRoI0oAAFca1FmHUgAA5/ECYt5bAAANuHYDRGYAAK4EAd7WcQAAfZ6zCLl+AAAeBEp2EI0AADod8GQHnQAA4E+v2syuAABWefAvlcIAAJXDqqma2AAAlnwFJR7xAAAXembWZwwBACjLHx7IKgEA+igvdZhMAQDVfch0PHIBAH3Es/sinAEANlzedMfKAQCeuOFCs/4BAAwxrlR/OAIAX+EB6NV4AgBjc9p+dMACAFHRpg0uEAMAx+mkaO1oAwBhwJH3t8sDAL8nobewOQQAexSZlBu0BACFI+0iYTwFAGml1MUS1AUA7IyTTe98BgD1qpAb6DgHAIy+XdsmCggAApeM4RPzCAD64xRDXfYJAN3xLbr+FgsALrrcb0pYDAAMVRjE8r0NAPC7VDEVTA8ASY6Ga0YHEQCywVPen/QSACeKL7LOGRUAsjmfhCR9FwDhmecEqiUaALoT9aszGx0AJkeFzHhmIACIv4A/LREkAByYI/gdJigAzMQi1FCxLADwiIIFKMAxADZ8bX6JYTcAbpMp0wqmPQCMvGwTIqBEAABw8ypcZEwAtDuEaZkJVQCAtKvkUKleAKDNqXnbX2kATMJ/TMdMdQDQrA66NJOCAEg+DM89WpEAaMaOdGnNoQAoHm+lKx20AJipIyZ0f8gA8Jp0Y00w3wCAzfxLjXL4AJAUYC2akBQB8LQT2UXdMwEglzWWwbRWAVDc+66tfX0B4BGYuUeqqAEwx+4Wu7nYASBuSIaXOQ4CoPpLHXLHSQLAEXFwtRKMAoCKFkOm3tUCwPgjsaIEKAOAr1lwonaDA8BvLYf/QekDQJN/rI+SWgQAkQlxF7bYBEAP31shIGUFAEnBSURuAQYAjrym5WyvBgBZVoaFHHEHgGiqNKS3SAiAoeKeUrk4CQC9q+iA5EMKACpytCBMbQuA8cATM1y4DACgPMvc4ygOgLhimp4gww8A3laT0sqLEQBdf0yTI4gTABqH3zUEvhUAp85LhO8zGAABEPvqJPEaAIAq5dG1/R0AIqE0YJ1iIQBEIWvw2iklAAJh8YKPXikAZiDPhR4NLgCEEBlSUkMzAKDBj8qEEDkAJq0Uk8yFPwDQzSRmL7ZGAJzhmhzatk4AWMzCDF+fVwAgCnV4+4lhADC7u9bkk2wAYMun3J7deAC4O8BCW4uGALiGI2FkxZUA+PFf3JO4pgAgapHA1pa5ANjv4o/Al84AaCmb9S755f//////////rNAgVGhlIGxpc3Qgb2YgdGhyZXNob2xkcyBzZXBhcmF0aW5nIHRoZSB2YXJpb3VzIGJhZ3MuAEkBIElkcyBhcmUgc2VwYXJhdGVkIGludG8gdW5zb3J0ZWQgYmFncyBhY2NvcmRpbmcgdG8gdGhlaXIgc2NvcmUuIFRoaXMgc3BlY2lmaWVzIHRoZWEBIHRocmVzaG9sZHMgc2VwYXJhdGluZyB0aGUgYmFncy4gQW4gaWQncyBiYWcgaXMgdGhlIGxhcmdlc3QgYmFnIGZvciB3aGljaCB0aGUgaWQncyBzY29yZbggaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGl0cyB1cHBlciB0aHJlc2hvbGQuAGUBIFdoZW4gaWRzIGFyZSBpdGVyYXRlZCwgaGlnaGVyIGJhZ3MgYXJlIGl0ZXJhdGVkIGNvbXBsZXRlbHkgYmVmb3JlIGxvd2VyIGJhZ3MuIFRoaXMgbWVhbnNZASB0aGF0IGl0ZXJhdGlvbiBpcyBfc2VtaS1zb3J0ZWRfOiBpZHMgb2YgaGlnaGVyIHNjb3JlIHRlbmQgdG8gY29tZSBiZWZvcmUgaWRzIG9mIGxvd2VyLQEgc2NvcmUsIGJ1dCBwZWVyIGlkcyB3aXRoaW4gYSBwYXJ0aWN1bGFyIGJhZyBhcmUgc29ydGVkIGluIGluc2VydGlvbiBvcmRlci4AaCAjIEV4cHJlc3NpbmcgdGhlIGNvbnN0YW50AE0BIFRoaXMgY29uc3RhbnQgbXVzdCBiZSBzb3J0ZWQgaW4gc3RyaWN0bHkgaW5jcmVhc2luZyBvcmRlci4gRHVwbGljYXRlIGl0ZW1zIGFyZSBub3QsIHBlcm1pdHRlZC4AQQEgVGhlcmUgaXMgYW4gaW1wbGllZCB1cHBlciBsaW1pdCBvZiBgU2NvcmU6Ok1BWGA7IHRoYXQgdmFsdWUgZG9lcyBub3QgbmVlZCB0byBiZSEBIHNwZWNpZmllZCB3aXRoaW4gdGhlIGJhZy4gRm9yIGFueSB0d28gdGhyZXNob2xkIGxpc3RzLCBpZiBvbmUgZW5kcyB3aXRoMQEgYFNjb3JlOjpNQVhgLCB0aGUgb3RoZXIgb25lIGRvZXMgbm90LCBhbmQgdGhleSBhcmUgb3RoZXJ3aXNlIGVxdWFsLCB0aGUgdHdvfCBsaXN0cyB3aWxsIGJlaGF2ZSBpZGVudGljYWxseS4AOCAjIENhbGN1bGF0aW9uAFUBIEl0IGlzIHJlY29tbWVuZGVkIHRvIGdlbmVyYXRlIHRoZSBzZXQgb2YgdGhyZXNob2xkcyBpbiBhIGdlb21ldHJpYyBzZXJpZXMsIHN1Y2ggdGhhdEEBIHRoZXJlIGV4aXN0cyBzb21lIGNvbnN0YW50IHJhdGlvIHN1Y2ggdGhhdCBgdGhyZXNob2xkW2sgKyAxXSA9PSAodGhyZXNob2xkW2tdICrQIGNvbnN0YW50X3JhdGlvKS5tYXgodGhyZXNob2xkW2tdICsgMSlgIGZvciBhbGwgYGtgLgBZASBUaGUgaGVscGVycyBpbiB0aGUgYC91dGlscy9mcmFtZS9nZW5lcmF0ZS1iYWdzYCBtb2R1bGUgY2FuIHNpbXBsaWZ5IHRoaXMgY2FsY3VsYXRpb24uACwgIyBFeGFtcGxlcwBRASAtIElmIGBCYWdUaHJlc2hvbGRzOjpnZXQoKS5pc19lbXB0eSgpYCwgdGhlbiBhbGwgaWRzIGFyZSBwdXQgaW50byB0aGUgc2FtZSBiYWcsIGFuZLAgICBpdGVyYXRpb24gaXMgc3RyaWN0bHkgaW4gaW5zZXJ0aW9uIG9yZGVyLmEBIC0gSWYgYEJhZ1RocmVzaG9sZHM6OmdldCgpLmxlbigpID09IDY0YCwgYW5kIHRoZSB0aHJlc2hvbGRzIGFyZSBkZXRlcm1pbmVkIGFjY29yZGluZyB0bxEBICAgdGhlIHByb2NlZHVyZSBnaXZlbiBhYm92ZSwgdGhlbiB0aGUgY29uc3RhbnQgcmF0aW8gaXMgZXF1YWwgdG8gMi5lASAtIElmIGBCYWdUaHJlc2hvbGRzOjpnZXQoKS5sZW4oKSA9PSAyMDBgLCBhbmQgdGhlIHRocmVzaG9sZHMgYXJlIGRldGVybWluZWQgYWNjb3JkaW5nIHRvWQEgICB0aGUgcHJvY2VkdXJlIGdpdmVuIGFib3ZlLCB0aGVuIHRoZSBjb25zdGFudCByYXRpbyBpcyBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIDEuMjQ4LmEBIC0gSWYgdGhlIHRocmVzaG9sZCBsaXN0IGJlZ2lucyBgWzEsIDIsIDMsIC4uLl1gLCB0aGVuIGFuIGlkIHdpdGggc2NvcmUgMCBvciAxIHdpbGwgZmFsbPAgICBpbnRvIGJhZyAwLCBhbiBpZCB3aXRoIHNjb3JlIDIgd2lsbCBmYWxsIGludG8gYmFnIDEsIGV0Yy4AMCAjIE1pZ3JhdGlvbgBhASBJbiB0aGUgZXZlbnQgdGhhdCB0aGlzIGxpc3QgZXZlciBjaGFuZ2VzLCBhIGNvcHkgb2YgdGhlIG9sZCBiYWdzIGxpc3QgbXVzdCBiZSByZXRhaW5lZC5dASBXaXRoIHRoYXQgYExpc3Q6Om1pZ3JhdGVgIGNhbiBiZSBjYWxsZWQsIHdoaWNoIHdpbGwgcGVyZm9ybSB0aGUgYXBwcm9wcmlhdGUgbWlncmF0aW9uLgBQTWF4QXV0b1JlYmFnUGVyQmxvY2s4EAoAAAAQNQEgTWF4aW11bSBudW1iZXIgb2YgYWNjb3VudHMgdGhhdCBtYXkgYmUgcmUtYmFnZ2VkIGF1dG9tYXRpY2FsbHkgaW4gYG9uX2lkbGVgLgBRASBBIHZhbHVlIG9mIGAwYCAob2J0YWluZWQgYnkgY29uZmlndXJpbmcgYHR5cGUgTWF4QXV0b1JlYmFnUGVyQmxvY2sgPSAoKTtgKSBkaXNhYmxlczQgdGhlIGZlYXR1cmUuAAFpDgAEFFNjb3JlKAQJASBUaGUgdHlwZSB1c2VkIHRvIGRpY3RhdGUgYSBub2RlIHBvc2l0aW9uIHJlbGF0aXZlIHRvIG90aGVyIG5vZGVzLgR03XAtpG9316z3f1pI1K99EkZQnSHNsSbousVoE8SinhhzY29yZXMEDHdobwRxDhiwIEdldCB0aGUgY3VycmVudCBgc2NvcmVgIG9mIGEgZ2l2ZW4gYWNjb3VudC4AYQEgUmV0dXJucyBgKGN1cnJlbnQsIHJlYWxfc2NvcmUpYCwgdGhlIGZvcm1lciBiZWluZyB0aGUgY3VycmVudCBzY29yZSB0aGF0IHRoaXMgcGFsbGV0IGlzWQEgYXdhcmUgb2YsIHdoaWNoIG1heSBvciBtYXkgbm90IGJlIHVwIHRvIGRhdGUsIGFuZCB0aGUgbGF0dGVyIGJlaW5nIHRoZSByZWFsIHNjb3JlLCBhczAgcHJvdmlkZWQgYnkdASBJZiB0aGUgdHdvIGRpZmZlciwgaXQgbWVhbnMgdGhpcyBub2RlIGlzIGVsaWdpYmxlIGZvciBbYENhbGw6OnJlYmFnYF0uAFIAAEBEZWxlZ2F0ZWRTdGFraW5nAUBEZWxlZ2F0ZWRTdGFraW5nEChEZWxlZ2F0b3JzAAEEBQR1DgQAEKQgTWFwIG9mIERlbGVnYXRvcnMgdG8gdGhlaXIgYERlbGVnYXRpb25gLgBhASBJbXBsZW1lbnRhdGlvbiBub3RlOiBXZSBhcmUgbm90IHVzaW5nIGEgZG91YmxlIG1hcCB3aXRoIGBkZWxlZ2F0b3JgIGFuZCBgYWdlbnRgIGFjY291bnRhASBhcyBrZXlzIHNpbmNlIHdlIHdhbnQgdG8gcmVzdHJpY3QgZGVsZWdhdG9ycyB0byBkZWxlZ2F0ZSBvbmx5IHRvIG9uZSBhY2NvdW50IGF0IGEgdGltZS4AUENvdW50ZXJGb3JEZWxlZ2F0b3JzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAGEFnZW50cwABBAUEeQ4EAASIIE1hcCBvZiBgQWdlbnRgIHRvIHRoZWlyIGBMZWRnZXJgLgBAQ291bnRlckZvckFnZW50cwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAAABOQkACCBQYWxsZXRJZCELIHB5L2Rsc3RrBJAgSW5qZWN0ZWQgaWRlbnRpZmllciBmb3IgdGhlIHBhbGxldC4ATFNsYXNoUmV3YXJkRnJhY3Rpb24ZBRCAlpgABFEBIEZyYWN0aW9uIG9mIHRoZSBzbGFzaCB0aGF0IGlzIHJld2FyZGVkIHRvIHRoZSBjYWxsZXIgb2YgcGVuZGluZyBzbGFzaCB0byB0aGUgYWdlbnQuAAF9DgAAAFMAADxTdGFraW5nUmNDbGllbnQBPFN0YWtpbmdSY0NsaWVudAxcSW5jb21wbGV0ZVNlc3Npb25SZXBvcnQAAH0FBAAEHQEgQW4gaW5jb21wbGV0ZSBpbmNvbWluZyBzZXNzaW9uIHJlcG9ydCB0aGF0IHdlIGhhdmUgbm90IGFjdGVkIHVwb24geWV0LgBwTGFzdFNlc3Npb25SZXBvcnRFbmRpbmdJbmRleAAAOAQAIPwgVGhlIGxhc3Qgc2Vzc2lvbiByZXBvcnQncyBgZW5kX2luZGV4YCB0aGF0IHdlIGhhdmUgYWN0ZWQgdXBvbi4AYQEgVGhpcyBhbGxvd3MgdGhpcyBwYWxsZXQgdG8gZW5zdXJlIGEgc2VxdWVudGlhbGx5IGluY3JlYXNpbmcgc2VxdWVuY2Ugb2Ygc2Vzc2lvbiByZXBvcnRzTCBwYXNzZWQgdG8gc3Rha2luZy4AXQEgTm90ZSB0aGF0IHdpdGggdGhlIFhDTSBiZWluZyB0aGUgYmFja2JvbmUgb2YgY29tbXVuaWNhdGlvbiwgd2UgaGF2ZSBhIGd1YXJhbnRlZSBvbiB0aGVhASBvcmRlcmluZyBvZiBtZXNzYWdlcy4gQXMgbG9uZyBhcyB0aGUgUkMgc2VuZHMgc2Vzc2lvbiByZXBvcnRzIGluIG9yZGVyLCB3ZSBfZXZlbnR1YWxseV/AIHJlY2VpdmUgdGhlbSBpbiB0aGUgc2FtZSBjb3JyZWN0IG9yZGVyIGFzIHdlbGwuAFBPdXRnb2luZ1ZhbGlkYXRvclNldAAAgQ4EABDYIEEgdmFsaWRhdG9yIHNldCB0aGF0IGlzIG91dGdvaW5nLCBhbmQgc2hvdWxkIGJlIHNlbnQuAHUBIFRoaXMgd2lsbCBiZSBhdHRlbXB0ZWQgdG8gYmUgc2VudCwgcG9zc2libHkgb24gZXZlcnkgYG9uX2luaXRpYWxpemVgIGNhbGwsIHVudGlsIGl0IGlzIHNlbnQs9CBvciB0aGUgc2Vjb25kIHZhbHVlIHJlYWNoZXMgemVybywgYXQgd2hpY2ggcG9pbnQgd2UgZHJvcCBpdC4AAXkFAAE9CQAEKEtleURlcG9zaXRVAUAA6HZIFwAAAAAAAAAAAAAABC0BIERlcG9zaXQgaGVsZCB3aGVuIGEgdmFsaWRhdG9yIHNldHMgc2Vzc2lvbiBrZXlzLiBSZWxlYXNlZCBvbiBgcHVyZ2Vfa2V5c2AuAAGJDgAAAFQAAEhNdWx0aUJsb2NrRWxlY3Rpb24BSE11bHRpQmxvY2tFbGVjdGlvbhwUUm91bmQBADgQAAAAABisIEludGVybmFsIGNvdW50ZXIgZm9yIHRoZSBudW1iZXIgb2Ygcm91bmRzLgBVASBUaGlzIGlzIHVzZWZ1bCBmb3IgZGUtZHVwbGljYXRpb24gb2YgdHJhbnNhY3Rpb25zIHN1Ym1pdHRlZCB0byB0aGUgcG9vbCwgYW5kIGdlbmVyYWxsIGRpYWdub3N0aWNzIG9mIHRoZSBwYWxsZXQuAE0BIFRoaXMgaXMgbWVyZWx5IGluY3JlbWVudGVkIG9uY2UgcGVyIGV2ZXJ5IHRpbWUgdGhhdCBhbiB1cHN0cmVhbSBgZWxlY3RgIGlzIGNhbGxlZC4AMEN1cnJlbnRQaGFzZQEApQUEAAQ8IEN1cnJlbnQgcGhhc2UuADhEZXNpcmVkVGFyZ2V0cwABBAU4OAQABMwgRGVzaXJlZCBudW1iZXIgb2YgdGFyZ2V0cyB0byBlbGVjdCBmb3IgdGhpcyByb3VuZC4ASFBhZ2VkVm90ZXJTbmFwc2hvdAABCAUFzI0OBAAEAQEgUGFnaW5hdGVkIHZvdGVyIHNuYXBzaG90LiBBdCBtb3N0IFtgVDo6UGFnZXNgXSBrZXlzIHdpbGwgZXhpc3QuAFhQYWdlZFZvdGVyU25hcHNob3RIYXNoAAEIBQXMPAQADDEBIFNhbWUgYXMgW2BQYWdlZFZvdGVyU25hcHNob3RgXSwgYnV0IGl0IHdpbGwgc3RvcmUgdGhlIGhhc2ggb2YgdGhlIHNuYXBzaG90LgD8IFRoZSBoYXNoIGlzIGdlbmVyYXRlZCB1c2luZyBbYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpIYXNoaW5nYF0uAExQYWdlZFRhcmdldFNuYXBzaG90AAEIBQXMnQ4EAAxsIFBhZ2luYXRlZCB0YXJnZXQgc25hcHNob3QuAFkBIEZvciB0aGUgdGltZSBiZWluZywgc2luY2Ugd2UgYXNzdW1lIG9uZSBwYWdlcyBvZiB0YXJnZXRzLCBhdCBtb3N0IE9ORSBrZXkgd2lsbCBleGlzdC4AXFBhZ2VkVGFyZ2V0U25hcHNob3RIYXNoAAEIBQXMPAQADDUBIFNhbWUgYXMgW2BQYWdlZFRhcmdldFNuYXBzaG90YF0sIGJ1dCBpdCB3aWxsIHN0b3JlIHRoZSBoYXNoIG9mIHRoZSBzbmFwc2hvdC4A/CBUaGUgaGFzaCBpcyBnZW5lcmF0ZWQgdXNpbmcgW2BmcmFtZV9zeXN0ZW06OkNvbmZpZzo6SGFzaGluZ2BdLgABnQUAAUUJABg0VW5zaWduZWRQaGFzZTgQlgAAAASAIER1cmF0aW9uIG9mIHRoZSB1bnNpZ25lZCBwaGFzZS4ALFNpZ25lZFBoYXNlOBAsAQAABHggRHVyYXRpb24gb2YgdGhlIHNpZ25lZCBwaGFzZS4AVFNpZ25lZFZhbGlkYXRpb25QaGFzZTgQAAIAABCkIER1cmF0aW9uIG9mIHRoZSBzaW5nZWQgdmFsaWRhdGlvbiBwaGFzZS4AVQEgVGhlIGR1cmF0aW9uIG9mIHRoaXMgc2hvdWxkIG5vdCBiZSBsZXNzIHRoYW4gYFQ6OlBhZ2VzYCwgYW5kIHRoZXJlIGlzIG5vIHBvaW50IGluIGl0AQEgYmVpbmcgbW9yZSB0aGFuIGBTaWduZWRQaGFzZTo6TWF4U3VibWlzc2lvbjo6Z2V0KCkgKiBUOjpQYWdlc2AuAFRWb3RlclNuYXBzaG90UGVyQmxvY2s4EMACAAAEyCBUaGUgbnVtYmVyIG9mIHNuYXBzaG90IHZvdGVycyB0byBmZXRjaCBwZXIgYmxvY2suAFhUYXJnZXRTbmFwc2hvdFBlckJsb2NrOBDQBwAABMwgVGhlIG51bWJlciBvZiBzbmFwc2hvdCB0YXJnZXRzIHRvIGZldGNoIHBlciBibG9jay4AFFBhZ2VzOBAgAAAAGFQgVGhlIG51bWJlciBvZiBwYWdlcy4AAQEgVGhlIHNuYXBzaG90IGlzIGNyZWF0ZWQgd2l0aCB0aGlzIG1hbnkga2V5cyBpbiB0aGUgc3RvcmFnZSBtYXAuAFEBIFRoZSBzb2x1dGlvbnMgbWF5IGNvbnRhaW4gYXQgTU9TVCB0aGlzIG1hbnkgcGFnZXMsIGJ1dCBsZXNzIHBhZ2VzIGFyZSBhY2NlcHRhYmxlIGFzGCB3ZWxsLgABoQ4AAABVAABoTXVsdGlCbG9ja0VsZWN0aW9uVmVyaWZpZXIBaE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyHDxRdWV1ZWRTb2x1dGlvblgAAQgFBcytBQQAHD0BIFRoZSBgWGAgdmFyaWFudCBvZiB0aGUgY3VycmVudCBxdWV1ZWQgc29sdXRpb24uIE1pZ2h0IGJlIHRoZSB2YWxpZCBvbmUgb3Igbm90LgBpASBUaGUgdHdvIHZhcmlhbnRzIG9mIHRoaXMgc3RvcmFnZSBpdGVtIGlzIHRvIGF2b2lkIHRoZSBuZWVkIG9mIGNvcHlpbmcuIFJlY2FsbCB0aGF0IG9uY2UgYXEBIGBWZXJpZnlpbmdTb2x1dGlvbmAgaXMgYmVpbmcgcHJvY2Vzc2VkLCBpdCBuZWVkcyB0byB3cml0ZSBpdHMgcGFydGlhbCBzdXBwb3J0cyAqc29tZXdoZXJlKi5pASBXcml0aW5nIHRoZXNlcyBzdXBwb3J0cyBvbiB0b3Agb2YgYSAqZ29vZCogcXVldWVkIHN1cHBvcnRzIGlzIHdyb25nLCBzaW5jZSB3ZSBtaWdodCBiYWlsLnUBIFdyaXRpbmcgdGhlbSB0byBhIGJ1Z2dlciBhbmQgY29weWluZyBhdCB0aGUgbmVkIGlzIHNsaWdodGx5IGJldHRlciwgYnV0IGV4cGVuc2l2ZS4gVGhpcyBmbGFnfCBzeXN0ZW0gaXMgYmVzdCBvZiBib3RoIHdvcmxkcy4APFF1ZXVlZFNvbHV0aW9uWQABCAUFzK0FBAAEPQEgVGhlIGBZYCB2YXJpYW50IG9mIHRoZSBjdXJyZW50IHF1ZXVlZCBzb2x1dGlvbi4gTWlnaHQgYmUgdGhlIHZhbGlkIG9uZSBvciBub3QuAEhRdWV1ZWRWYWxpZFZhcmlhbnQBAQQFOKUOBAEIXQEgUG9pbnRlciB0byB0aGUgdmFyaWFudCBvZiBbYFF1ZXVlZFNvbHV0aW9uWGBdIG9yIFtgUXVldWVkU29sdXRpb25ZYF0gdGhhdCBpcyBjdXJyZW50bHkcIHZhbGlkLgBYUXVldWVkU29sdXRpb25CYWNraW5ncwABCAUFzKkOBAAg1CBUaGUgYChhbW91bnQsIGNvdW50KWAgb2YgYmFja2luZ3MsIGRpdmlkZWQgcGVyIHBhZ2UuAHEBIFRoaXMgaXMgc3RvcmVkIGJlY2F1c2UgaW4gdGhlIGxhc3QgYmxvY2sgb2YgdmVyaWZpY2F0aW9uIHdlIG5lZWQgdGhlbSB0byBjb21wdXRlIHRoZSBzY29yZSyYIGFuZCBjaGVjayBgTWF4QmFja2Vyc1Blcldpbm5lckZpbmFsYC4AcQEgVGhpcyBjYW4gb25seSBldmVyIGxpdmUgZm9yIHRoZSBpbnZhbGlkIHZhcmlhbnQgb2YgdGhlIHNvbHV0aW9uLiBPbmNlIGl0IGlzIHZhbGlkLCB3ZSBkb24ndBUBIG5lZWQgdGhpcyBpbmZvcm1hdGlvbiBhbnltb3JlOyB0aGUgc2NvcmUgaXMgYWxyZWFkeSBjb21wdXRlZCBvbmNlIGlu9CBbYFF1ZXVlZFNvbHV0aW9uU2NvcmVgXSwgYW5kIHRoZSBiYWNraW5nIGNvdW50cyBhcmUgY2hlY2tlZC4ATFF1ZXVlZFNvbHV0aW9uU2NvcmUAAQQFOM0FBAAM2CBUaGUgc2NvcmUgb2YgdGhlIHZhbGlkIHZhcmlhbnQgb2YgW2BRdWV1ZWRTb2x1dGlvbmBdLgC4IFRoaXMgb25seSBldmVyIGxpdmVzIGZvciB0aGUgYHZhbGlkYCB2YXJpYW50LgAwTWluaW11bVNjb3JlAADNBQQABFUBIFRoZSBtaW5pbXVtIHNjb3JlIHRoYXQgZWFjaCBzb2x1dGlvbiBtdXN0IGF0dGFpbiBpbiBvcmRlciB0byBiZSBjb25zaWRlcmVkIGZlYXNpYmxlLgA0U3RhdHVzU3RvcmFnZQEAuQ4EAQR0IFN0b3JhZ2UgaXRlbSBmb3IgW2BTdGF0dXNgXS4AAdEFAAFJCQAMYE1heEJhY2tlcnNQZXJXaW5uZXJGaW5hbDgQ5FcAABQdASBNYXhpbXVtIG51bWJlciBvZiBiYWNrZXJzLCBwZXIgd2lubmVyLCBhbW9uZyBhbGwgcGFnZXMgb2YgYW4gZWxlY3Rpb24uAAUBIFRoaXMgY2FuIG9ubHkgYmUgY2hlY2tlZCBhdCB0aGUgdmVyeSBmaW5hbCBzdGVwIG9mIHZlcmlmaWNhdGlvbi4AXQEgTk9URTogYXQgdGhlIG1vbWVudCwgd2UgZG9uJ3QgY2hlY2sgdGhpcywgYW5kIGl0IGlzIGluIHBsYWNlIGZvciBmdXR1cmUgY29tcGF0aWJpbGl0eS4ATE1heEJhY2tlcnNQZXJXaW5uZXI4EMACAAAExCBNYXhpbXVtIG51bWJlciBvZiBiYWNrZXJzLCBwZXIgd2lubmVyLCBwZXIgcGFnZS4ARE1heFdpbm5lcnNQZXJQYWdlOBDoAwAACGEBIE1heGltdW0gbnVtYmVyIG9mIHN1cHBvcnRzIChha2EuIHdpbm5lcnMvdmFsaWRhdG9ycy90YXJnZXRzKSB0aGF0IGNhbiBiZSByZXByZXNlbnRlZCBpbkwgYSBwYWdlIG9mIHJlc3VsdHMuAAAAAFYAAGhNdWx0aUJsb2NrRWxlY3Rpb25VbnNpZ25lZAAB1QUAAAAAAABXAABgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkAWBNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQQNEludnVsbmVyYWJsZXMBAJUOBAAkFQEgQWNjb3VudHMgd2hpdGVsaXN0ZWQgYnkgZ292ZXJuYW5jZSB0byBhbHdheXMgc3VibWl0IHRoZWlyIHNvbHV0aW9ucy4AcCBUaGV5IGFyZSBkaWZmZXJlbnQgaW4gdGhhdDoA/CAqIFRoZXkgYWx3YXlzIHBheSBhIGZpeGVkIGRlcG9zaXQgZm9yIHN1Ym1pc3Npb24sIHNwZWNpZmllZCBiefQgICBbYENvbmZpZzo6SW52dWxuZXJhYmxlRGVwb3NpdGBdLiBUaGV5IHBheSBubyBwYWdlIGRlcG9zaXQuaQEgKiBJZiBfZWplY3RlZF8gYnkgYmV0dGVyIHNvbHV0aW9uIGZyb20gW2BTb3J0ZWRTY29yZXNgXSwgdGhleSB3aWxsIGdldCB0aGVpciBmdWxsIGRlcG9zaXQgICAgYmFjay4JASAqIFRoZXkgYWx3YXlzIGdldCB0aGVpciB0eC1mZWUgYmFjayBldmVuIGlmIHRoZXkgYXJlIF9kaXNjYXJkZWRfLgAwU29ydGVkU2NvcmVzAQEEBTi9DgQAAABEU3VibWlzc2lvblN0b3JhZ2UAAQwFBQXJDuEFBAAE7CBUcmlwbGUgbWFwIGZyb20gKHJvdW5kLCBhY2NvdW50LCBwYWdlKSB0byBhIHNvbHV0aW9uIHBhZ2UuAGRTdWJtaXNzaW9uTWV0YWRhdGFTdG9yYWdlAAEIBQVdDM0OBAAQ2CBNYXAgZnJvbSBhY2NvdW50IHRvIHRoZSBtZXRhZGF0YSBvZiB0aGVpciBzdWJtaXNzaW9uLgBxASBpbnZhcmlhbnQ6IGZvciBhbnkgS2V5MSBvZiB0eXBlIGBBY2NvdW50SWRgIGluIFtgU3VibWlzc2lvbnNgXSwgdGhpcyBzdG9yYWdlIG1hcCBhbHNvIGhhcyBhHCB2YWx1ZS4AAa0GAAFZCQAAAdkOAAAEdwtlUEJoC88FOdIE31nTKImvpgvJyUyOJHbtm6qpMAUsZGVwb3NpdF9mb3IIDHdobwQUcGFnZXM4VQEUEQEgR2V0IHRoZSBkZXBvc2l0IGFtb3VudCB0aGF0IHdpbGwgYmUgaGVsZCBmb3IgYSBzb2x1dGlvbiBvZiBgcGFnZXNgLgBBASBUaGlzIGFsbG93cyBhbiBvZmZjaGFpbiBhcHBsaWNhdGlvbiB0byBrbm93IHdoYXQgW2BDb25maWc6OkRlcG9zaXRQZXJQYWdlYF0gYW5kZQEgW2BDb25maWc6OkRlcG9zaXRCYXNlYF0gYXJlIGRvaW5nIHVuZGVyIHRoZSBob29kLiBJdCBhbHNvIHRha2VzIGludG8gYWNjb3VudCBpZiBgd2hvYCBpc2ggW2BJbnZ1bG5lcmFibGVzYF0gb3Igbm90LgBYAAAcU3Rha2luZwEcU3Rha2luZ9A4VmFsaWRhdG9yQ291bnQBADgQAAAAAAScIFRoZSBpZGVhbCBudW1iZXIgb2YgYWN0aXZlIHZhbGlkYXRvcnMuABhCb25kZWQAAQQFBAQEAAwBASBNYXAgZnJvbSBhbGwgbG9ja2VkICJzdGFzaCIgYWNjb3VudHMgdG8gdGhlIGNvbnRyb2xsZXIgYWNjb3VudC4A0CBUV09YLU5PVEU6IFNBRkUgc2luY2UgYEFjY291bnRJZGAgaXMgYSBzZWN1cmUgaGFzaC4AQE1pbk5vbWluYXRvckJvbmQBAFUBQAAAAAAAAAAAAAAAAAAAAAAEIQEgVGhlIG1pbmltdW0gYWN0aXZlIGJvbmQgdG8gYmVjb21lIGFuZCBtYWludGFpbiB0aGUgcm9sZSBvZiBhIG5vbWluYXRvci4AQE1pblZhbGlkYXRvckJvbmQBAFUBQAAAAAAAAAAAAAAAAAAAAAAEIQEgVGhlIG1pbmltdW0gYWN0aXZlIGJvbmQgdG8gYmVjb21lIGFuZCBtYWludGFpbiB0aGUgcm9sZSBvZiBhIHZhbGlkYXRvci4ASE1pbmltdW1BY3RpdmVTdGFrZQEAVQFAAAAAAAAAAAAAAAAAAAAAAAQRASBUaGUgbWluaW11bSBhY3RpdmUgbm9taW5hdG9yIHN0YWtlIG9mIHRoZSBsYXN0IHN1Y2Nlc3NmdWwgZWxlY3Rpb24uADRNaW5Db21taXNzaW9uAQAZBRAAAAAADOggVGhlIG1pbmltdW0gYW1vdW50IG9mIGNvbW1pc3Npb24gdGhhdCB2YWxpZGF0b3JzIGNhbiBzZXQuAIAgSWYgc2V0IHRvIGAwYCwgbm8gbGltaXQgZXhpc3RzLgA0TWF4Q29tbWlzc2lvbgEAGQUQAMqaOwzAIFRoZSBtYXhpbXVtIGNvbW1pc3Npb24gdGhhdCB2YWxpZGF0b3JzIGNhbiBzZXQuABkBIElmIG5vdCBzZXQsIGRlZmF1bHRzIHRvIGBQZXJiaWxsOjpvbmUoKWAgKDEwMCUpLCBpLmUuIG5vIHVwcGVyIGxpbWl0LgBMRGlzYWJsZU1pbnRpbmdHdWFyZAAAOAQAHD0BIFNhZmV0eSBndWFyZDogdGhlIGVyYSBmcm9tIHdoaWNoIGxlZ2FjeSBtaW50aW5nIGlzIHBlcm1hbmVudGx5IGRpc2FibGVkIG9uIHRoZRUBIHBheW91dCBzaWRlLiAqKklycmV2ZXJzaWJsZSoqIOKAlCBvbmNlIHNldCwgc2hvdWxkIG5ldmVyIGJlIGNsZWFyZWQuADEBIFNlcGFyYXRlIGZyb20gW2BDb25maWc6OkRpc2FibGVNaW50aW5nYF0gd2hpY2ggY29udHJvbHMgdGhlIGBlbmRfZXJhYCBwYXRoLjUBIFRoaXMgc3RvcmFnZSBndWFyZHMgYWdhaW5zdCBtaW50aW5nIGR1cmluZyBwYXlvdXQgZm9yIGVyYXMgdGhhdCB3ZXJlIGNyZWF0ZWRJASBpbiBEQVAgbW9kZS4gU2V0IGF1dG9tYXRpY2FsbHkgYnkgYGVuZF9lcmFfZGFwYCBvbiBmaXJzdCBzdWNjZXNzZnVsIHBvdCBzbmFwc2hvdC4ZASBJbiBsZWdhY3kgbW9kZSAoS3VzYW1hKSwgdGhpcyBpcyBuZXZlciBzZXQgYW5kIHRoZSBndWFyZCBpcyBpbmFjdGl2ZS4AQE9wdGltdW1TZWxmU3Rha2UBAFUBQAAAAAAAAAAAAAAAAAAAAAAQtCBPcHRpbXVtIHNlbGYtc3Rha2UgdGhyZXNob2xkIGZvciB2YWxpZGF0b3JzLgAhASBCZWxvdyB0aGlzIHRocmVzaG9sZCwgdGhlIGluY2VudGl2ZSB3ZWlnaHQgZ3Jvd3MgYXMgYHNxcnQoc2VsZl9zdGFrZSlgLuggQWJvdmUgaXQsIGdyb3d0aCBpcyBkYW1wZW5lZCBieSBbYFNlbGZTdGFrZVNsb3BlRmFjdG9yYF0uAEBIYXJkQ2FwU2VsZlN0YWtlAQBVAUAAAAAAAAAAAAAAAAAAAAAADLAgSGFyZCBjYXAgb24gZWZmZWN0aXZlIHZhbGlkYXRvciBzZWxmLXN0YWtlLgA1ASBTZWxmLXN0YWtlIGFib3ZlIHRoaXMgdmFsdWUgcmVjZWl2ZXMgbm8gYWRkaXRpb25hbCByZXdhcmQgYmVuZWZpdCAocGxhdGVhdSkuAFBTZWxmU3Rha2VTbG9wZUZhY3RvcgEAGQUQAAAAAAxlASBTbG9wZSBmYWN0b3IgY29udHJvbGxpbmcgdGhlIGRpc2NvdXJhZ2VtZW50IHJhdGUgZm9yIHNlbGYtc3Rha2UgYmV0d2VlbiBvcHRpbXVtIGFuZCBjYXAuAEUBIFZhbHVlIGJldHdlZW4gMCBhbmQgMTogaz0xIG1lYW5zIG5vIGRpc2NvdXJhZ2VtZW50LCBrPTAgbWVhbnMgaW1tZWRpYXRlIHBsYXRlYXUuAHBFcmFzVmFsaWRhdG9ySW5jZW50aXZlQnVkZ2V0AQEEBThVAUAAAAAAAAAAAAAAAAAAAAAADEEBIFRoZSB0b3RhbCB2YWxpZGF0b3IgaW5jZW50aXZlIGJ1ZGdldCBmb3IgdGhlIGdpdmVuIGVyYSwgc25hcHNob3R0ZWQgYXQgZXJhIGVuZC4AVQEgVGhpcyBpcyB0aGUgc2ltaWxhciB0byBbYEVyYXNWYWxpZGF0b3JSZXdhcmRgXSBidXQgZm9yIHRoZSBzZWxmLXN0YWtlIGluY2VudGl2ZSBwb3QuAHxFcmFzU3VtVmFsaWRhdG9ySW5jZW50aXZlV2VpZ2h0AQEEBThVAUAAAAAAAAAAAAAAAAAAAAAADNggU3VtIG9mIGFsbCB2YWxpZGF0b3JzJyBpbmNlbnRpdmUgd2VpZ2h0cyBmb3IgdGhlIGVyYS4A1CBEaXJlY3RseSBsaW5rZWQgdG8gW2BFcmFzVmFsaWRhdG9ySW5jZW50aXZlV2VpZ2h0YF0uAHBFcmFzVmFsaWRhdG9ySW5jZW50aXZlV2VpZ2h0AAEIBQVdDFUBBAAIvCBJbmRpdmlkdWFsIHZhbGlkYXRvciBpbmNlbnRpdmUgd2VpZ2h0IHBlciBlcmEuLQEgRWFjaCB2YWxpZGF0b3IncyBzaGFyZSBvZiB0aGUgaW5jZW50aXZlIHBvdCA9IGB0aGVpcl93ZWlnaHQgLyBzdW1fd2VpZ2h0YC4AWEFyZU5vbWluYXRvcnNTbGFzaGFibGUBAFkBBAEcpCBXaGV0aGVyIG5vbWluYXRvcnMgYXJlIHNsYXNoYWJsZSBvciBub3QuAG0BIC0gV2hlbiBzZXQgdG8gYHRydWVgIChkZWZhdWx0KSwgbm9taW5hdG9ycyBhcmUgc2xhc2hlZCBhbG9uZyB3aXRoIHZhbGlkYXRvcnMgYW5kIG11c3Qgd2FpdCkBICAgdGhlIGZ1bGwgW2BDb25maWc6OkJvbmRpbmdEdXJhdGlvbmBdIGJlZm9yZSB3aXRoZHJhd2luZyB1bmJvbmRlZCBmdW5kcy4VASAtIFdoZW4gc2V0IHRvIGBmYWxzZWAsIG5vbWluYXRvcnMgYXJlIG5vdCBzbGFzaGVkLCBhbmQgY2FuIHVuYm9uZCBpbg0BICAgW2BDb25maWc6Ok5vbWluYXRvckZhc3RVbmJvbmREdXJhdGlvbmBdIGVyYXMgaW5zdGVhZCBvZiB0aGUgZnVsbFkBICAgW2BDb25maWc6OkJvbmRpbmdEdXJhdGlvbmBdIChzZWUgW2BTdGFraW5nSW50ZXJmYWNlOjpub21pbmF0b3JfYm9uZGluZ19kdXJhdGlvbmBdKS4AXEVyYXNOb21pbmF0b3JzU2xhc2hhYmxlAAEEBThZAQQAHNggUGVyLWVyYSBzbmFwc2hvdCBvZiB3aGV0aGVyIG5vbWluYXRvcnMgYXJlIHNsYXNoYWJsZS4AZQEgVGhpcyBpcyBjb3BpZWQgZnJvbSBbYEFyZU5vbWluYXRvcnNTbGFzaGFibGVgXSBhdCB0aGUgc3RhcnQgb2YgZWFjaCBlcmEuIFdoZW4gcHJvY2Vzc2luZ1EBIG9mZmVuY2VzLCB3ZSB1c2UgdGhlIHZhbHVlIGZyb20gdGhpcyBzdG9yYWdlIGZvciB0aGUgb2ZmZW5jZSBlcmEgdG8gZW5zdXJlIHRoYXQgdGhlOQEgc2xhc2hpbmcgcnVsZXMgYXQgdGhlIHRpbWUgb2YgdGhlIG9mZmVuY2UgYXJlIGFwcGxpZWQsIG5vdCB0aGUgY3VycmVudCBydWxlcy4AZQEgSWYgYW4gZW50cnkgZG9lcyBub3QgZXhpc3QgZm9yIGFuIGVyYSwgbm9taW5hdG9ycyBhcmUgYXNzdW1lZCB0byBiZSBzbGFzaGFibGUgKGRlZmF1bHQpLgAYTGVkZ2VyAAEEAgTdDgQAEEUBIE1hcCBmcm9tIGFsbCAodW5sb2NrZWQpICJjb250cm9sbGVyIiBhY2NvdW50cyB0byB0aGUgaW5mbyByZWdhcmRpbmcgdGhlIHN0YWtpbmcuAHUBIE5vdGU6IEFsbCB0aGUgcmVhZHMgYW5kIG11dGF0aW9ucyB0byB0aGlzIHN0b3JhZ2UgKk1VU1QqIGJlIGRvbmUgdGhyb3VnaCB0aGUgbWV0aG9kcyBleHBvc2Vk6CBieSBbYFN0YWtpbmdMZWRnZXJgXSB0byBlbnN1cmUgZGF0YSBhbmQgbG9jayBjb25zaXN0ZW5jeS4AFFBheWVlAAEEBQS5BgQADOQgV2hlcmUgdGhlIHJld2FyZCBwYXltZW50IHNob3VsZCBiZSBtYWRlLiBLZXllZCBieSBzdGFzaC4A0CBUV09YLU5PVEU6IFNBRkUgc2luY2UgYEFjY291bnRJZGAgaXMgYSBzZWN1cmUgaGFzaC4AKFZhbGlkYXRvcnMBAQQFBL0GCAAADEUBIFRoZSBtYXAgZnJvbSAod2FubmFiZSkgdmFsaWRhdG9yIHN0YXNoIGtleSB0byB0aGUgcHJlZmVyZW5jZXMgb2YgdGhhdCB2YWxpZGF0b3IuANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAFBDb3VudGVyRm9yVmFsaWRhdG9ycwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAEhNYXhWYWxpZGF0b3JzQ291bnQAADgEAAwxASBUaGUgbWF4aW11bSB2YWxpZGF0b3IgY291bnQgYmVmb3JlIHdlIHN0b3AgYWxsb3dpbmcgbmV3IHZhbGlkYXRvcnMgdG8gam9pbi4A0CBXaGVuIHRoaXMgdmFsdWUgaXMgbm90IHNldCwgbm8gbGltaXRzIGFyZSBlbmZvcmNlZC4AQExhc3RWYWxpZGF0b3JFcmEAAQQFBDgEADBlASBUcmFja3MgdGhlIGxhc3QgZXJhIGluIHdoaWNoIGFuIGFjY291bnQgd2FzIGFjdGl2ZSBhcyBhIHZhbGlkYXRvciAoaW5jbHVkZWQgaW4gdGhlIGVyYSdzUCBleHBvc3VyZS9zbmFwc2hvdCkuAFkBIFRoaXMgaXMgdXNlZCB0byBlbmZvcmNlIHRoYXQgYWNjb3VudHMgd2hvIHdlcmUgcmVjZW50bHkgdmFsaWRhdG9ycyBtdXN0IHdhaXQgdGhlIGZ1bGxhASBbYENvbmZpZzo6Qm9uZGluZ0R1cmF0aW9uYF0gYmVmb3JlIHRoZWlyIGZ1bmRzIGNhbiBiZSB3aXRoZHJhd24sIGV2ZW4gaWYgdGhleSBzd2l0Y2ggdG+8IG5vbWluYXRvciByb2xlLiBUaGlzIHByZXZlbnRzIHZhbGlkYXRvcnMgZnJvbTqsIDEuIENvbW1pdHRpbmcgYSBzbGFzaGFibGUgb2ZmZW5jZSBpbiBlcmEgTnwgMi4gU3dpdGNoaW5nIHRvIG5vbWluYXRvciByb2xlZQEgMy4gVXNpbmcgdGhlIHNob3J0ZXIgbm9taW5hdG9yIHVuYm9uZGluZyBkdXJhdGlvbiB0byB3aXRoZHJhdyBmdW5kcyBiZWZvcmUgYmVpbmcgc2xhc2hlZABZASBVcGRhdGVkIHdoZW4gZXJhIHNuYXBzaG90cyBhcmUgY3JlYXRlZCAoaW4gYEVyYXNTdGFrZXJzUGFnZWRgL2BFcmFzU3Rha2Vyc092ZXJ2aWV3YCku+CBDbGVhbmVkIHVwIHdoZW4gdGhlIHN0YXNoIGlzIGtpbGxlZCAoZnVsbHkgd2l0aGRyYXduL3JlYXBlZCkuAChOb21pbmF0b3JzAAEEBQThDgQATHUBIFRoZSBtYXAgZnJvbSBub21pbmF0b3Igc3Rhc2gga2V5IHRvIHRoZWlyIG5vbWluYXRpb24gcHJlZmVyZW5jZXMsIG5hbWVseSB0aGUgdmFsaWRhdG9ycyB0aGF0WCB0aGV5IHdpc2ggdG8gc3VwcG9ydC4AOQEgTm90ZSB0aGF0IHRoZSBrZXlzIG9mIHRoaXMgc3RvcmFnZSBtYXAgbWlnaHQgYmVjb21lIG5vbi1kZWNvZGFibGUgaW4gY2FzZSB0aGUtASBhY2NvdW50J3MgW2BOb21pbmF0aW9uc1F1b3RhOjpNYXhOb21pbmF0aW9uc2BdIGNvbmZpZ3VyYXRpb24gaXMgZGVjcmVhc2VkLpAgSW4gdGhpcyByYXJlIGNhc2UsIHRoZXNlIG5vbWluYXRvcnNlASBhcmUgc3RpbGwgZXhpc3RlbnQgaW4gc3RvcmFnZSwgdGhlaXIga2V5IGlzIGNvcnJlY3QgYW5kIHJldHJpZXZhYmxlIChpLmUuIGBjb250YWluc19rZXlgcQEgaW5kaWNhdGVzIHRoYXQgdGhleSBleGlzdCksIGJ1dCB0aGVpciB2YWx1ZSBjYW5ub3QgYmUgZGVjb2RlZC4gVGhlcmVmb3JlLCB0aGUgbm9uLWRlY29kYWJsZW0BIG5vbWluYXRvcnMgd2lsbCBlZmZlY3RpdmVseSBub3QtZXhpc3QsIHVudGlsIHRoZXkgcmUtc3VibWl0IHRoZWlyIHByZWZlcmVuY2VzIHN1Y2ggdGhhdCBpdAEBIGlzIHdpdGhpbiB0aGUgYm91bmRzIG9mIHRoZSBuZXdseSBzZXQgYENvbmZpZzo6TWF4Tm9taW5hdGlvbnNgLgBhASBUaGlzIGltcGxpZXMgdGhhdCBgOjppdGVyX2tleXMoKS5jb3VudCgpYCBhbmQgYDo6aXRlcigpLmNvdW50KClgIG1pZ2h0IHJldHVybiBkaWZmZXJlbnRtASB2YWx1ZXMgZm9yIHRoaXMgbWFwLiBNb3Jlb3ZlciwgdGhlIG1haW4gYDo6Y291bnQoKWAgaXMgYWxpZ25lZCB3aXRoIHRoZSBmb3JtZXIsIG5hbWVseSB0aGVsIG51bWJlciBvZiBrZXlzIHRoYXQgZXhpc3QuAG0BIExhc3RseSwgaWYgYW55IG9mIHRoZSBub21pbmF0b3JzIGJlY29tZSBub24tZGVjb2RhYmxlLCB0aGV5IGNhbiBiZSBjaGlsbGVkIGltbWVkaWF0ZWx5IHZpYbggW2BDYWxsOjpjaGlsbF9vdGhlcmBdIGRpc3BhdGNoYWJsZSBieSBhbnlvbmUuANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAFBDb3VudGVyRm9yTm9taW5hdG9ycwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwADhWaXJ0dWFsU3Rha2VycwABBAUEEAQAGMggU3Rha2VycyB3aG9zZSBmdW5kcyBhcmUgbWFuYWdlZCBieSBvdGhlciBwYWxsZXRzLgB1ASBUaGlzIHBhbGxldCBkb2VzIG5vdCBhcHBseSBhbnkgbG9ja3Mgb24gdGhlbSwgdGhlcmVmb3JlIHRoZXkgYXJlIG9ubHkgdmlydHVhbGx5IGJvbmRlZC4gVGhleW0BIGFyZSBleHBlY3RlZCB0byBiZSBrZXlsZXNzIGFjY291bnRzIGFuZCBoZW5jZSBzaG91bGQgbm90IGJlIGFsbG93ZWQgdG8gbXV0YXRlIHRoZWlyIGxlZGdlcnEBIGRpcmVjdGx5IHZpYSB0aGlzIHBhbGxldC4gSW5zdGVhZCwgdGhlc2UgYWNjb3VudHMgYXJlIG1hbmFnZWQgYnkgb3RoZXIgcGFsbGV0cyBhbmQgYWNjZXNzZWQpASB2aWEgbG93IGxldmVsIGFwaXMuIFdlIGtlZXAgdHJhY2sgb2YgdGhlbSB0byBkbyBtaW5pbWFsIGludGVncml0eSBjaGVja3MuAGBDb3VudGVyRm9yVmlydHVhbFN0YWtlcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcABITWF4Tm9taW5hdG9yc0NvdW50AAA4BAAMMQEgVGhlIG1heGltdW0gbm9taW5hdG9yIGNvdW50IGJlZm9yZSB3ZSBzdG9wIGFsbG93aW5nIG5ldyB2YWxpZGF0b3JzIHRvIGpvaW4uANAgV2hlbiB0aGlzIHZhbHVlIGlzIG5vdCBzZXQsIG5vIGxpbWl0cyBhcmUgZW5mb3JjZWQuAChDdXJyZW50RXJhAAA4BAAQfCBUaGUgY3VycmVudCBwbGFubmVkIGVyYSBpbmRleC4AZQEgVGhpcyBpcyB0aGUgbGF0ZXN0IHBsYW5uZWQgZXJhLCBkZXBlbmRpbmcgb24gaG93IHRoZSBTZXNzaW9uIHBhbGxldCBxdWV1ZXMgdGhlIHZhbGlkYXRvcoAgc2V0LCBpdCBtaWdodCBiZSBhY3RpdmUgb3Igbm90LgAkQWN0aXZlRXJhAADlDgQAENggVGhlIGFjdGl2ZSBlcmEgaW5mb3JtYXRpb24sIGl0IGhvbGRzIGluZGV4IGFuZCBzdGFydC4AWQEgVGhlIGFjdGl2ZSBlcmEgaXMgdGhlIGVyYSBiZWluZyBjdXJyZW50bHkgcmV3YXJkZWQuIFZhbGlkYXRvciBzZXQgb2YgdGhpcyBlcmEgbXVzdCBiZZggZXF1YWwgdG8gd2hhdCBpcyBSQydzIHNlc3Npb24gcGFsbGV0LgAoQm9uZGVkRXJhcwEA6Q4EABAlASBBIG1hcHBpbmcgZnJvbSBzdGlsbC1ib25kZWQgZXJhcyB0byB0aGUgZmlyc3Qgc2Vzc2lvbiBpbmRleCBvZiB0aGF0IGVyYS4AyCBNdXN0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGZvciBlcmFzIGZvciB0aGUgcmFuZ2U6vCBgW2FjdGl2ZV9lcmEgLSBib3VuZGluZ19kdXJhdGlvbjsgYWN0aXZlX2VyYV1gAExFcmFzU3Rha2Vyc092ZXJ2aWV3AAEIBQVdDO0OBAAwuCBTdW1tYXJ5IG9mIHZhbGlkYXRvciBleHBvc3VyZSBhdCBhIGdpdmVuIGVyYS4AcQEgVGhpcyBjb250YWlucyB0aGUgdG90YWwgc3Rha2UgaW4gc3VwcG9ydCBvZiB0aGUgdmFsaWRhdG9yIGFuZCB0aGVpciBvd24gc3Rha2UuIEluIGFkZGl0aW9uLHUBIGl0IGNhbiBhbHNvIGJlIHVzZWQgdG8gZ2V0IHRoZSBudW1iZXIgb2Ygbm9taW5hdG9ycyBiYWNraW5nIHRoaXMgdmFsaWRhdG9yIGFuZCB0aGUgbnVtYmVyIG9maQEgZXhwb3N1cmUgcGFnZXMgdGhleSBhcmUgZGl2aWRlZCBpbnRvLiBUaGUgcGFnZSBjb3VudCBpcyB1c2VmdWwgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2asIHBhZ2VzIG9mIHJld2FyZHMgdGhhdCBuZWVkcyB0byBiZSBjbGFpbWVkLgBhASBUaGlzIGlzIGtleWVkIGZpcnN0IGJ5IHRoZSBlcmEgaW5kZXggdG8gYWxsb3cgYnVsayBkZWxldGlvbiBhbmQgdGhlbiB0aGUgc3Rhc2ggYWNjb3VudC6gIFNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIHRocm91Z2ggYEVyYXNgLgDMIElzIGl0IHJlbW92ZWQgYWZ0ZXIgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuQQEgSWYgc3Rha2VycyBoYXNuJ3QgYmVlbiBzZXQgb3IgaGFzIGJlZW4gcmVtb3ZlZCB0aGVuIGVtcHR5IG92ZXJ2aWV3IGlzIHJldHVybmVkLgBARXJhc1N0YWtlcnNQYWdlZAABDAUFBckO8Q4EABjAIFBhZ2luYXRlZCBleHBvc3VyZSBvZiBhIHZhbGlkYXRvciBhdCBnaXZlbiBlcmEuAHEBIFRoaXMgaXMga2V5ZWQgZmlyc3QgYnkgdGhlIGVyYSBpbmRleCB0byBhbGxvdyBidWxrIGRlbGV0aW9uLCB0aGVuIHN0YXNoIGFjY291bnQgYW5kIGZpbmFsbHnIIHRoZSBwYWdlLiBTaG91bGQgb25seSBiZSBhY2Nlc3NlZCB0aHJvdWdoIGBFcmFzYC4A1CBUaGlzIGlzIGNsZWFyZWQgYWZ0ZXIgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuADhDbGFpbWVkUmV3YXJkcwEBCAUFXQwBDwQAGNwgSGlzdG9yeSBvZiBjbGFpbWVkIHBhZ2VkIHJld2FyZHMgYnkgZXJhIGFuZCB2YWxpZGF0b3IuAGkBIFRoaXMgaXMga2V5ZWQgYnkgZXJhIGFuZCB2YWxpZGF0b3Igc3Rhc2ggd2hpY2ggbWFwcyB0byB0aGUgc2V0IG9mIHBhZ2UgaW5kZXhlcyB3aGljaCBoYXZlOCBiZWVuIGNsYWltZWQuAMwgSXQgaXMgcmVtb3ZlZCBhZnRlciBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4ASEVyYXNWYWxpZGF0b3JQcmVmcwEBCAUFXQy9BggAABQFASBFeHBvc3VyZSBvZiB2YWxpZGF0b3IgYXQgZXJhIHdpdGggdGhlIHByZWZlcmVuY2VzIG9mIHZhbGlkYXRvcnMuAGEBIFRoaXMgaXMga2V5ZWQgZmlyc3QgYnkgdGhlIGVyYSBpbmRleCB0byBhbGxvdyBidWxrIGRlbGV0aW9uIGFuZCB0aGVuIHRoZSBzdGFzaCBhY2NvdW50LgDMIElzIGl0IHJlbW92ZWQgYWZ0ZXIgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuAExFcmFzVmFsaWRhdG9yUmV3YXJkAAEEBThVAQQAFDUBIFRoZSB0b3RhbCBzdGFrZXIgcmV3YXJkIGJ1ZGdldCBmb3IgZWFjaCBlcmEgd2l0aGluIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXS4AZCBTZXQgYXQgZXJhIGZpbmFsaXphdGlvbjpZASAtIGluIG5vbi1taW50aW5nIG1vZGUgdGhpcyBpcyB0aGUgc25hcHNob3Qgb2YgdGhlIGVyYSBwb3QgYmFsYW5jZSBiZWZvcmUgYW55IHBheW91dHMuMQEgLSBpbiBsZWdhY3kgbW9kZSBpdCBjb21lcyBmcm9tIGBFcmFQYXlvdXRgLCB3aXRoIHJld2FyZHMgbWludGVkIG9uIHRoZSBmbHkuAEBFcmFzUmV3YXJkUG9pbnRzAQEEBTgFDxQAAAAAAAjQIFJld2FyZHMgZm9yIHRoZSBsYXN0IFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLiUBIElmIHJld2FyZCBoYXNuJ3QgYmVlbiBzZXQgb3IgaGFzIGJlZW4gcmVtb3ZlZCB0aGVuIDAgcmV3YXJkIGlzIHJldHVybmVkLgA4RXJhc1RvdGFsU3Rha2UBAQQFOFUBQAAAAAAAAAAAAAAAAAAAAAAIEQEgVGhlIHRvdGFsIGFtb3VudCBzdGFrZWQgZm9yIHRoZSBsYXN0IFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLh0BIElmIHRvdGFsIGhhc24ndCBiZWVuIHNldCBvciBoYXMgYmVlbiByZW1vdmVkIHRoZW4gMCBzdGFrZSBpcyByZXR1cm5lZC4AIEZvcmNlRXJhAQBhCQQABFQgTW9kZSBvZiBlcmEgZm9yY2luZy4AQE1heFN0YWtlZFJld2FyZHMAAMkGBAAQGQEgTWF4aW11bSBzdGFrZWQgcmV3YXJkcywgaS5lLiB0aGUgcGVyY2VudGFnZSBvZiB0aGUgZXJhIGluZmxhdGlvbiB0aGF0bCBpcyB1c2VkIGZvciBzdGFrZSByZXdhcmRzLgD0IE9ubHkgdXNlZCBpbiBsZWdhY3kgbWludGluZyBtb2RlIChgRGlzYWJsZU1pbnRpbmcgPSBmYWxzZWApLgBMU2xhc2hSZXdhcmRGcmFjdGlvbgEAGQUQAAAAAAz4IFRoZSBwZXJjZW50YWdlIG9mIHRoZSBzbGFzaCB0aGF0IGlzIGRpc3RyaWJ1dGVkIHRvIHJlcG9ydGVycy4A5CBUaGUgcmVzdCBvZiB0aGUgc2xhc2hlZCB2YWx1ZSBpcyBoYW5kbGVkIGJ5IHRoZSBgU2xhc2hgLgBMQ2FuY2VsZWRTbGFzaFBheW91dAEAVQFAAAAAAAAAAAAAAAAAAAAAAAgVASBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IGdpdmVuIHRvIHJlcG9ydGVycyBvZiBhIHNsYXNoIGV2ZW50IHdoaWNoIHdhc+wgY2FuY2VsZWQgYnkgZXh0cmFvcmRpbmFyeSBjaXJjdW1zdGFuY2VzIChlLmcuIGdvdmVybmFuY2UpLgAwT2ZmZW5jZVF1ZXVlAAEIBQVdDBEPBAAoTQEgU3RvcmVzIHJlcG9ydGVkIG9mZmVuY2VzIGluIGEgcXVldWUgdW50aWwgdGhleSBhcmUgcHJvY2Vzc2VkIGluIHN1YnNlcXVlbnQgYmxvY2tzLgBlASBFYWNoIG9mZmVuY2UgaXMgcmVjb3JkZWQgdW5kZXIgdGhlIGNvcnJlc3BvbmRpbmcgZXJhIGluZGV4IGFuZCB0aGUgb2ZmZW5kaW5nIHZhbGlkYXRvcidzcQEgYWNjb3VudC4gSWYgYW4gb2ZmZW5jZSBzcGFucyBtdWx0aXBsZSBwYWdlcywgb25seSBvbmUgcGFnZSBpcyBwcm9jZXNzZWQgYXQgYSB0aW1lLiBPZmZlbmNlcz0BIGFyZSBoYW5kbGVkIHNlcXVlbnRpYWxseSwgd2l0aCB0aGVpciBhc3NvY2lhdGVkIHNsYXNoZXMgY29tcHV0ZWQgYW5kIHN0b3JlZCBpblEBIGBVbmFwcGxpZWRTbGFzaGVzYC4gVGhlc2Ugc2xhc2hlcyBhcmUgdGhlbiBhcHBsaWVkIGluIGEgZnV0dXJlIGVyYSBhcyBkZXRlcm1pbmVkIGJ5WCBgU2xhc2hEZWZlckR1cmF0aW9uYC4AUQEgQW55IG9mZmVuY2VzIHRpZWQgdG8gYW4gZXJhIG9sZGVyIHRoYW4gYEJvbmRpbmdEdXJhdGlvbmAgYXJlIGF1dG9tYXRpY2FsbHkgZHJvcHBlZC7QIFByb2Nlc3NpbmcgYWx3YXlzIHByaW9yaXRpemVzIHRoZSBvbGRlc3QgZXJhIGZpcnN0LgBAT2ZmZW5jZVF1ZXVlRXJhcwAAFQ8EADB1ASBUcmFja3MgdGhlIGVyYXMgdGhhdCBjb250YWluIG9mZmVuY2VzIGluIGBPZmZlbmNlUXVldWVgLCBzb3J0ZWQgZnJvbSAqKmVhcmxpZXN0IHRvIGxhdGVzdCoqLgBNASAtIFRoaXMgZW5zdXJlcyBlZmZpY2llbnQgcmV0cmlldmFsIG9mIHRoZSBvbGRlc3Qgb2ZmZW5jZSB3aXRob3V0IGl0ZXJhdGluZyB0aHJvdWdoQCBgT2ZmZW5jZVF1ZXVlYC5lASAtIFdoZW4gYSBuZXcgb2ZmZW5jZSBpcyBhZGRlZCB0byBgT2ZmZW5jZVF1ZXVlYCwgaXRzIGVyYSBpcyAqKmluc2VydGVkIGluIHNvcnRlZCBvcmRlcioqYCBpZiBub3QgYWxyZWFkeSBwcmVzZW50LkEBIC0gV2hlbiBhbGwgb2ZmZW5jZXMgZm9yIGFuIGVyYSBhcmUgcHJvY2Vzc2VkLCBpdCBpcyAqKnJlbW92ZWQqKiBmcm9tIHRoaXMgbGlzdC4VASAtIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiB0aGlzIHZlY3RvciBpcyBib3VuZGVkIGJ5IGBCb25kaW5nRHVyYXRpb24gK3QgICBPRkZFTkNFX1FVRVVFX0VSQVNfQk9VTkRgLgBxASBUaGlzIGVsaW1pbmF0ZXMgdGhlIG5lZWQgZm9yIGV4cGVuc2l2ZSBpdGVyYXRpb24gYW5kIHNvcnRpbmcgd2hlbiBmZXRjaGluZyB0aGUgbmV4dCBvZmZlbmNlMCB0byBwcm9jZXNzLgBEUHJvY2Vzc2luZ09mZmVuY2UAABkPBAAwHQEgVHJhY2tzIHRoZSBjdXJyZW50bHkgcHJvY2Vzc2VkIG9mZmVuY2UgcmVjb3JkIGZyb20gdGhlIGBPZmZlbmNlUXVldWVgLgBNASAtIFdoZW4gcHJvY2Vzc2luZyBvZmZlbmNlcywgYW4gb2ZmZW5jZSByZWNvcmQgaXMgKipwb3BwZWQqKiBmcm9tIHRoZSBvbGRlc3QgZXJhIGluiCAgIGBPZmZlbmNlUXVldWVgIGFuZCBzdG9yZWQgaGVyZS51ASAtIFRoZSBmdW5jdGlvbiBgcHJvY2Vzc19vZmZlbmNlYCByZWFkcyBmcm9tIHRoaXMgc3RvcmFnZSwgcHJvY2Vzc2luZyBvbmUgcGFnZSBvZiBleHBvc3VyZSBhdCggICBhIHRpbWUuZQEgLSBBZnRlciBwcm9jZXNzaW5nIGEgcGFnZSwgdGhlIGBleHBvc3VyZV9wYWdlYCBjb3VudCBpcyAqKmRlY3JlbWVudGVkKiogdW50aWwgaXQgcmVhY2hlcyAgICB6ZXJvLiUBIC0gT25jZSBmdWxseSBwcm9jZXNzZWQsIHRoZSBvZmZlbmNlIHJlY29yZCBpcyByZW1vdmVkIGZyb20gdGhpcyBzdG9yYWdlLgBlASBUaGlzIGVuc3VyZXMgdGhhdCBvZmZlbmNlcyBhcmUgcHJvY2Vzc2VkIGluY3JlbWVudGFsbHksIHByZXZlbnRpbmcgZXhjZXNzaXZlIGNvbXB1dGF0aW9u/CBpbiBhIHNpbmdsZSBibG9jayB3aGlsZSBtYWludGFpbmluZyBjb3JyZWN0IHNsYXNoaW5nIGJlaGF2aW9yLgBAVW5hcHBsaWVkU2xhc2hlcwABCAUFHQ8hDwQABMQgQWxsIHVuYXBwbGllZCBzbGFzaGVzIHRoYXQgYXJlIHF1ZXVlZCBmb3IgbGF0ZXIuAEBDYW5jZWxsZWRTbGFzaGVzAQEEBTgpDwQAFFEBIENhbmNlbGxlZCBzbGFzaGVzIGJ5IGVyYSBhbmQgdmFsaWRhdG9yIHdpdGggbWF4aW11bSBzbGFzaCBmcmFjdGlvbiB0byBiZSBjYW5jZWxsZWQuAEUBIFdoZW4gc2xhc2hlcyBhcmUgY2FuY2VsbGVkIGJ5IGdvdmVybmFuY2UsIHRoaXMgc3RvcmVzIHRoZSBlcmEgYW5kIHRoZSB2YWxpZGF0b3JzVQEgd2hvc2Ugc2xhc2hlcyBzaG91bGQgYmUgY2FuY2VsbGVkLCBhbG9uZyB3aXRoIHRoZSBtYXhpbXVtIHNsYXNoIGZyYWN0aW9uIHRoYXQgc2hvdWxkhCBiZSBjYW5jZWxsZWQgZm9yIGVhY2ggdmFsaWRhdG9yLgBMVmFsaWRhdG9yU2xhc2hJbkVyYQABCAUFXQwtDwQACEUBIEFsbCBzbGFzaGluZyBldmVudHMgb24gdmFsaWRhdG9ycywgbWFwcGVkIGJ5IGVyYSB0byB0aGUgaGlnaGVzdCBzbGFzaCBwcm9wb3J0aW9ucCBhbmQgc2xhc2ggdmFsdWUgb2YgdGhlIGVyYS4AOENoaWxsVGhyZXNob2xkAADJBgQADFEBIFRoZSB0aHJlc2hvbGQgZm9yIHdoZW4gdXNlcnMgY2FuIHN0YXJ0IGNhbGxpbmcgYGNoaWxsX290aGVyYCBmb3Igb3RoZXIgdmFsaWRhdG9ycyAvWQEgbm9taW5hdG9ycy4gVGhlIHRocmVzaG9sZCBpcyBjb21wYXJlZCB0byB0aGUgYWN0dWFsIG51bWJlciBvZiB2YWxpZGF0b3JzIC8gbm9taW5hdG9ycykBIChgQ291bnRGb3IqYCkgaW4gdGhlIHN5c3RlbSBjb21wYXJlZCB0byB0aGUgY29uZmlndXJlZCBtYXggKGBNYXgqQ291bnRgKS4ATFZvdGVyU25hcHNob3RTdGF0dXMBADEPBAIQgCBWb3RlciBzbmFwc2hvdCBwcm9ncmVzcyBzdGF0dXMuAGkBIElmIHRoZSBzdGF0dXMgaXMgYE9uZ29pbmdgLCBpdCBrZWVwcyBhIGN1cnNvciBvZiB0aGUgbGFzdCB2b3RlciByZXRyaWV2ZWQgdG8gcHJvY2VlZCB3aGVuhCBjcmVhdGluZyB0aGUgbmV4dCBzbmFwc2hvdCBwYWdlLgBATmV4dEVsZWN0aW9uUGFnZQAAOAQAGAEBIEtlZXBzIHRyYWNrIG9mIGFuIG9uZ29pbmcgbXVsdGktcGFnZSBlbGVjdGlvbiBzb2x1dGlvbiByZXF1ZXN0LgBlASBJZiBgU29tZShfKWBgLCBpdCBpcyB0aGUgbmV4dCBwYWdlIHRoYXQgd2UgaW50ZW5kIHRvIGVsZWN0LiBJZiBgTm9uZWAsIHdlIGFyZSBub3QgaW4gdGhlSCBlbGVjdGlvbiBwcm9jZXNzLgA5ASBUaGlzIGlzIG9ubHkgc2V0IGluIG11bHRpLWJsb2NrIGVsZWN0aW9ucy4gU2hvdWxkIGFsd2F5cyBiZSBgTm9uZWAgb3RoZXJ3aXNlLgBARWxlY3RhYmxlU3Rhc2hlcwEANQ8EAARRASBBIGJvdW5kZWQgbGlzdCBvZiB0aGUgImVsZWN0YWJsZSIgc3Rhc2hlcyB0aGF0IHJlc3VsdGVkIGZyb20gYSBzdWNjZXNzZnVsIGVsZWN0aW9uLgA8RXJhUHJ1bmluZ1N0YXRlAAEEBTg5DwQABEUBIFRyYWNrcyB0aGUgY3VycmVudCBzdGVwIG9mIGVyYSBwcnVuaW5nIHByb2Nlc3MgZm9yIGVhY2ggZXJhIGJlaW5nIGxhemlseSBwcnVuZWQuAAG1BgABXQkAMDBIaXN0b3J5RGVwdGg4EFQAAAA0jCBOdW1iZXIgb2YgZXJhcyB0byBrZWVwIGluIGhpc3RvcnkuAOggRm9sbG93aW5nIGluZm9ybWF0aW9uIGlzIGtlcHQgZm9yIGVyYXMgaW4gYFtjdXJyZW50X2VyYSAtKQEgSGlzdG9yeURlcHRoLCBjdXJyZW50X2VyYV1gOiBgRXJhc1ZhbGlkYXRvclByZWZzYCwgYEVyYXNWYWxpZGF0b3JSZXdhcmRgLOAgYEVyYXNSZXdhcmRQb2ludHNgLCBgRXJhc1RvdGFsU3Rha2VgLCBgQ2xhaW1lZFJld2FyZHNgLKwgYEVyYXNTdGFrZXJzUGFnZWRgLCBgRXJhc1N0YWtlcnNPdmVydmlld2AuAOQgTXVzdCBiZSBtb3JlIHRoYW4gdGhlIG51bWJlciBvZiBlcmFzIGRlbGF5ZWQgYnkgc2Vzc2lvbi74IEkuZS4gYWN0aXZlIGVyYSBtdXN0IGFsd2F5cyBiZSBpbiBoaXN0b3J5LiBJLmUuIGBhY3RpdmVfZXJhID7EIGN1cnJlbnRfZXJhIC0gaGlzdG9yeV9kZXB0aGAgbXVzdCBiZSBndWFyYW50ZWVkLgARASBJZiBtaWdyYXRpbmcgYW4gZXhpc3RpbmcgcGFsbGV0IGZyb20gc3RvcmFnZSB2YWx1ZSB0byBjb25maWcgdmFsdWUs7CB0aGlzIHNob3VsZCBiZSBzZXQgdG8gc2FtZSB2YWx1ZSBvciBncmVhdGVyIGFzIGluIHN0b3JhZ2UuADhTZXNzaW9uc1BlckVyYTgQBgAAAAQtASBOdW1iZXIgb2Ygc2Vzc2lvbnMgcGVyIGVyYSwgYXMgcGVyIHRoZSBwcmVmZXJlbmNlcyBvZiB0aGUgKipyZWxheSBjaGFpbioqLgBEUGxhbm5pbmdFcmFPZmZzZXQ4EAYAAAA4UQEgTnVtYmVyIG9mIHNlc3Npb25zIGJlZm9yZSB0aGUgZW5kIG9mIGFuIGVyYSB3aGVuIHRoZSBlbGVjdGlvbiBmb3IgdGhlIG5leHQgZXJhIHdpbGwcIHN0YXJ0LgBdASAtIFRoaXMgZGV0ZXJtaW5lcyBob3cgbWFueSBzZXNzaW9ucyAqKmJlZm9yZSoqIHRoZSBsYXN0IHNlc3Npb24gb2YgdGhlIGVyYSB0aGUgc3Rha2luZ4QgICBlbGVjdGlvbiBwcm9jZXNzIHNob3VsZCBiZWdpbi5NASAtIFRoZSB2YWx1ZSBpcyBib3VuZGVkIGJldHdlZW4gKioxKiogKGVsZWN0aW9uIHN0YXJ0cyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsYXN0XQEgICBzZXNzaW9uKSBhbmQgYFNlc3Npb25zUGVyRXJhYCAoZWxlY3Rpb24gc3RhcnRzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpcnN0IHNlc3Npb248ICAgb2YgdGhlIGVyYSkuADQgIyMjIEV4YW1wbGU6SQEgLSBJZiBgU2Vzc2lvbnNQZXJFcmEgPSA2YCBhbmQgYFBsYW5uaW5nRXJhT2Zmc2V0ID0gMWAsIHRoZSBlbGVjdGlvbiBzdGFydHMgYXQgdGhlkCAgIGJlZ2lubmluZyBvZiBzZXNzaW9uIGA2IC0gMSA9IDVgLl0BIC0gSWYgYFBsYW5uaW5nRXJhT2Zmc2V0ID0gNmAsIHRoZSBlbGVjdGlvbiBzdGFydHMgYXQgdGhlIGJlZ2lubmluZyBvZiBzZXNzaW9uIGA2IC0gNiA96CAgIDBgLCBtZWFuaW5nIGl0IHN0YXJ0cyBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgb2YgdGhlIGVyYS4APEJvbmRpbmdEdXJhdGlvbjgQHAAAABTkIE51bWJlciBvZiBlcmFzIHRoYXQgc3Rha2VkIGZ1bmRzIG11c3QgcmVtYWluIGJvbmRlZCBmb3IuAE0BIFRoaXMgaXMgdGhlIGJvbmRpbmcgZHVyYXRpb24gZm9yIHZhbGlkYXRvcnMuIE5vbWluYXRvcnMgbWF5IGhhdmUgYSBzaG9ydGVyIGJvbmRpbmcBASBkdXJhdGlvbiB3aGVuIFtgQXJlTm9taW5hdG9yc1NsYXNoYWJsZWBdIGlzIHNldCB0byBgZmFsc2VgIChzZWXMIFtgU3Rha2luZ0ludGVyZmFjZTo6bm9taW5hdG9yX2JvbmRpbmdfZHVyYXRpb25gXSkuAGxOb21pbmF0b3JGYXN0VW5ib25kRHVyYXRpb244EBwAAAAgLQEgTnVtYmVyIG9mIGVyYXMgbm9taW5hdG9ycyBtdXN0IHdhaXQgdG8gdW5ib25kIHdoZW4gdGhleSBhcmUgbm90IHNsYXNoYWJsZS4ARQEgVGhpcyBkdXJhdGlvbiBpcyB1c2VkIGZvciBub21pbmF0b3JzIHdoZW4gW2BBcmVOb21pbmF0b3JzU2xhc2hhYmxlYF0gaXMgYGZhbHNlYC5dASBXaGVuIG5vbWluYXRvcnMgYXJlIHNsYXNoYWJsZSwgdGhleSB1c2UgdGhlIGZ1bGwgW2BDb25maWc6OkJvbmRpbmdEdXJhdGlvbmBdIHRvIGVuc3VyZdAgc2xhc2hlcyBjYW4gYmUgYXBwbGllZCBkdXJpbmcgdGhlIHVuYm9uZGluZyBwZXJpb2QuAD0BIFNldHRpbmcgdGhpcyB0byBhIGxvd2VyIHZhbHVlIChlLmcuLCAxIGVyYSkgYWxsb3dzIGZvciBmYXN0ZXIgd2l0aGRyYXdhbHMgd2hlbrQgbm9taW5hdG9ycyBhcmUgbm90IHN1YmplY3QgdG8gc2xhc2hpbmcgcmlzay4ASFNsYXNoRGVmZXJEdXJhdGlvbjgQGwAAABABASBOdW1iZXIgb2YgZXJhcyB0aGF0IHNsYXNoZXMgYXJlIGRlZmVycmVkIGJ5LCBhZnRlciBjb21wdXRhdGlvbi4ADQEgVGhpcyBzaG91bGQgYmUgbGVzcyB0aGFuIHRoZSBib25kaW5nIGR1cmF0aW9uLiBTZXQgdG8gMCBpZiBzbGFzaGVzFQEgc2hvdWxkIGJlIGFwcGxpZWQgaW1tZWRpYXRlbHksIHdpdGhvdXQgb3Bwb3J0dW5pdHkgZm9yIGludGVydmVudGlvbi4AOERpc2FibGVNaW50aW5nWQEEASgpASBXaGVuIGB0cnVlYCwgc3Rha2luZyBkb2VzIG5vdCBtaW50LiBJdCBleHBlY3RzIGFuIGV4dGVybmFsIHNvdXJjZSB0byBmdW5kGQEgdGhlIGdlbmVyYWwgcmV3YXJkIHBvdC4gQXQgZXJhIGJvdW5kYXJ5LCByZXdhcmRzIGFyZSBzbmFwc2hvdHRlZCBmcm9tkCB0aGUgcG90LiBgRXJhUGF5b3V0YCBpcyBub3QgY2FsbGVkLgAxASBXaGVuIGBmYWxzZWAsIHN0YWtpbmcgdXNlcyB0aGUgbGVnYWN5IHBhdGg6IGBFcmFQYXlvdXRgIGNvbXB1dGVzIGluZmxhdGlvbiywIHRva2VucyBhcmUgbWludGVkIG9uLXRoZS1mbHkgZHVyaW5nIHBheW91dC4AIQEgKipJcnJldmVyc2libGUqKjogb25jZSBzZXQgdG8gYHRydWVgLCBtdXN0IG5ldmVyIGJlIHN3aXRjaGVkIGJhY2suIEVyYXMxASBjcmVhdGVkIGluIG5vbi1taW50aW5nIG1vZGUgaGF2ZSBmdW5kZWQgcmV3YXJkIHBvdHMg4oCUIHN3aXRjaGluZyB0byBsZWdhY3nIIHdvdWxkIG9ycGhhbiB0aG9zZSBwb3RzIGFuZCBjYXVzZSBkb3VibGUtbWludGluZy4ATE1heEV4cG9zdXJlUGFnZVNpemU4EAACAAAssCBUaGUgbWF4aW11bSBzaXplIG9mIGVhY2ggYFQ6OkV4cG9zdXJlUGFnZWAuACkBIEFuIGBFeHBvc3VyZVBhZ2VgIGlzIHdlYWtseSBib3VuZGVkIHRvIGEgbWF4aW11bSBvZiBgTWF4RXhwb3N1cmVQYWdlU2l6ZWAwIG5vbWluYXRvcnMuACEBIEZvciBvbGRlciBub24tcGFnZWQgZXhwb3N1cmUsIGEgcmV3YXJkIHBheW91dCB3YXMgcmVzdHJpY3RlZCB0byB0aGUgdG9wIQEgYE1heEV4cG9zdXJlUGFnZVNpemVgIG5vbWluYXRvcnMuIFRoaXMgaXMgdG8gbGltaXQgdGhlIGkvbyBjb3N0IGZvciB0aGVIIG5vbWluYXRvciBwYXlvdXQuAD0BIE5vdGU6IGBNYXhFeHBvc3VyZVBhZ2VTaXplYCBpcyB1c2VkIHRvIGJvdW5kIGBDbGFpbWVkUmV3YXJkc2AgYW5kIGlzIHVuc2FmZSB0b6wgcmVkdWNlIHdpdGhvdXQgaGFuZGxpbmcgaXQgaW4gYSBtaWdyYXRpb24uADxNYXhWYWxpZGF0b3JTZXQ4EOgDAAAQFQEgVGhlIGFic29sdXRlIG1heGltdW0gb2Ygd2lubmVyIHZhbGlkYXRvcnMgdGhpcyBwYWxsZXQgc2hvdWxkIHJldHVybi4AQQEgQXMgdGhpcyBwYWxsZXQgc3VwcG9ydHMgbXVsdGktYmxvY2sgZWxlY3Rpb24sIHRoZSBzZXQgb2Ygd2lubmVyIHZhbGlkYXRvcnMgKnBlcowgZWxlY3Rpb24qIGlzIGJvdW5kZWQgYnkgdGhpcyB0eXBlLgBITWF4VW5sb2NraW5nQ2h1bmtzOBAgAAAAKAUBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBgdW5sb2NraW5nYCBjaHVua3MgYSBbYFN0YWtpbmdMZWRnZXJgXSBjYW4JASBoYXZlLiBFZmZlY3RpdmVseSBkZXRlcm1pbmVzIGhvdyBtYW55IHVuaXF1ZSBlcmFzIGEgc3Rha2VyIG1heSBiZTggdW5ib25kaW5nIGluLgD4IE5vdGU6IGBNYXhVbmxvY2tpbmdDaHVua3NgIGlzIHVzZWQgYXMgdGhlIHVwcGVyIGJvdW5kIGZvciB0aGUBASBgQm91bmRlZFZlY2AgaXRlbSBgU3Rha2luZ0xlZGdlci51bmxvY2tpbmdgLiBTZXR0aW5nIHRoaXMgdmFsdWUFASBsb3dlciB0aGFuIHRoZSBleGlzdGluZyB2YWx1ZSBjYW4gbGVhZCB0byBpbmNvbnNpc3RlbmNpZXMgaW4gdGhlCQEgYFN0YWtpbmdMZWRnZXJgIGFuZCB3aWxsIG5lZWQgdG8gYmUgaGFuZGxlZCBwcm9wZXJseSBpbiBhIHJ1bnRpbWUFASBtaWdyYXRpb24uIFRoZSB0ZXN0IGByZWR1Y2luZ19tYXhfdW5sb2NraW5nX2NodW5rc19hYnJ1cHRgIHNob3dzNCB0aGlzIGVmZmVjdC4AOE1heEVyYUR1cmF0aW9uKCAAirkHAAAAACi4IE1heGltdW0gYWxsb3dlZCBlcmEgZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzLgBRASBUaGlzIHByb3ZpZGVzIGEgZGVmZW5zaXZlIHVwcGVyIGJvdW5kIHRvIGNhcCB0aGUgZWZmZWN0aXZlIGVyYSBkdXJhdGlvbiwgcHJldmVudGluZ2EBIGV4Y2Vzc2l2ZWx5IGxvbmcgZXJhcyBmcm9tIGNhdXNpbmcgcnVuYXdheSBpbmZsYXRpb24gKGUuZy4sIGR1ZSB0byBidWdzKS4gSWYgdGhlIGFjdHVhbBUBIGVyYSBkdXJhdGlvbiBleGNlZWRzIHRoaXMgdmFsdWUsIGl0IHdpbGwgYmUgY2xhbXBlZCB0byB0aGlzIG1heGltdW0uAAEBIEV4YW1wbGU6IEZvciBhbiBpZGVhbCBlcmEgZHVyYXRpb24gb2YgMjQgaG91cnMgKDg2LDQwMCwwMDAgbXMpLLAgdGhpcyBjYW4gYmUgc2V0IHRvIDYwNCw4MDAsMDAwIG1zICg3IGRheXMpLgD0IE9ubHkgdXNlZCBpbiBsZWdhY3kgbWludGluZyBtb2RlIChgRGlzYWJsZU1pbnRpbmcgPSBmYWxzZWApLgA8TWF4UHJ1bmluZ0l0ZW1zOBBkAAAAFBUBIE1heGltdW0gbnVtYmVyIG9mIHN0b3JhZ2UgaXRlbXMgdGhhdCBjYW4gYmUgcHJ1bmVkIGluIGEgc2luZ2xlIGNhbGwuAFkBIFRoaXMgY29udHJvbHMgaG93IG1hbnkgc3RvcmFnZSBpdGVtcyBjYW4gYmUgZGVsZXRlZCBpbiBlYWNoIGNhbGwgdG8gYHBydW5lX2VyYV9zdGVwYC5NASBUaGlzIHNob3VsZCBiZSBzZXQgdG8gYSBjb25zZXJ2YXRpdmUgdmFsdWUgKGUuZy4sIDEwMC01MDAgaXRlbXMpIHRvIGVuc3VyZSBwcnVuaW5nVQEgZG9lc24ndCBjb25zdW1lIHRvbyBtdWNoIGJsb2NrIHNwYWNlLiBUaGUgYWN0dWFsIHdlaWdodCBpcyBkZXRlcm1pbmVkIGJ5IGJlbmNobWFya3MuAAE9DwAEPEN1cnJlbmN5QmFsYW5jZVUBCFEBIEp1c3QgdGhlIGBDdXJyZW5jeTo6QmFsYW5jZWAgdHlwZTsgd2UgaGF2ZSB0aGlzIGl0ZW0gdG8gYWxsb3cgdXMgdG8gY29uc3RyYWluIGl0IHRvNCBgRnJvbTx1NjQ+YC4MXz5JB/cWrIm2NH0V7OztynIzhrxPVMypiXZehEufDGgscG90X2FjY291bnQEDHBvdEEPBAS8IFJlc29sdmUgdGhlIGFjY291bnQgSUQgZm9yIGEgZ2l2ZW4gcmV3YXJkIHBvdC4AXz5JB/cWrIm2NH0V7Oztyi8bIwRHyWDz+EP4z7GnBsoscG90X2JhbGFuY2UEDHBvdEEPVQEEsCBDdXJyZW50IGJhbGFuY2UgaGVsZCBpbiBhIGdpdmVuIHJld2FyZCBwb3QuAF8+SQf3FqyJtjR9Fezs7cpW65sUprz2XledXQCzCTtsVGVyYV9yZXdhcmRfYWxsb2NhdGlvbgQMZXJhOEkPDCUBIFBlci1lcmEgcmV3YXJkIGFsbG9jYXRpb24gKHN0YWtlciByZXdhcmRzICsgdmFsaWRhdG9yIGluY2VudGl2ZSBidWRnZXQpLgD4IEJvdGggZmllbGRzIGFyZSB6ZXJvIGZvciBlcmFzIGNyZWF0ZWQgaW4gbGVnYWN5IG1pbnRpbmcgbW9kZS4AWQAARE1lbWJlcnNTdWJzY3JpYmVyAURNZW1iZXJzU3Vic2NyaWJlchQkUmluZ1Jvb3RzAAEIAgJND1EPBAAQuCBSZWNlbnQgcmluZyByb290cyByZWNlaXZlZCBmcm9tIHRoZSBub3RpZmllci4FASBNYXBzIChpZGVudGlmaWVyLCByaW5nX2luZGV4KSB0byBhIHNsaWRpbmcgd2luZG93IG9mIHJpbmcgcm9vdHMuKQEgUHJvb2ZzIGJ1aWx0IGFnYWluc3QgYW55IHJvb3QgaW4gdGhlIHdpbmRvdyBhcmUgYWNjZXB0ZWQuIFRoZSBvbGRlc3Qgcm9vdPAgaXMgZXZpY3RlZCB3aGVuIHRoZSB3aW5kb3cgcmVhY2hlcyBgTWF4UmVjZW50Um9vdHNQZXJSaW5nYC4AUFJpbmdDb2xsZWN0aW9uU3RhdGVzAQEEAghdDygAAAAAAAAAAAAABEEBIFN0YXRlIG9mIGVhY2ggcmluZyBjb2xsZWN0aW9uIGluY2x1ZGluZyByaW5ncyBjb3VudCBhbmQgbWlzc2luZyByaW5ncyB0cmFja2luZy4AXFJpbmdDb2xsZWN0aW9uRXhwb25lbnRzAAEEAggFBwQAGOQgUmluZyBleHBvbmVudCByZWNvcmRlZCBwZXIgY29sbGVjdGlvbiBhdCBpbml0aWFsaXphdGlvbi4ATQEgVGhlIHN1YnNjcmliZXIgbmVlZHMgdGhlIGV4cG9uZW50IHRvIGRlcml2ZSB0aGUgY3J5cHRvJ3MgYENhcGFjaXR5YCB3aGVuIHZlcmlmeWluZ0kBIHByb29mcywgc2luY2UgcmluZyByb290cyBvbiB0aGVpciBvd24gZG8gbm90IGNhcnJ5IHRoYXQgaW5mb3JtYXRpb24uIFRoZSBlbnRyeSBpc0UBIHdyaXR0ZW4gYnkgYGluaXRpYWxpemVfcmluZ19yb290c2AgYW5kIGlzIHJlYWQgZHVyaW5nIHByb29mIHZlcmlmaWNhdGlvbiB2aWEgdGhlZCBgTWVtYmVyc2hpcFByb3ZlcmAgaW1wbC4AMFN1YnNjcmlwdGlvbgEAcQ8EAAR0IEN1cnJlbnQgc3Vic2NyaXB0aW9uIHN0YXR1cy4APFByb2Nlc3NpbmdTdGF0ZQEAdQ9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB0BIFN0YXRlIGZvciB0cmFja2luZyB1cGRhdGVzIHByb2Nlc3NpbmcgdGltZXN0YW1wcyBhbmQgc2VxdWVuY2UgbnVtYmVycy4AAQEHAAFtCQAwRFJpbmdSb290c05vdGlmaWVyeQ8YAQEAeRdFCKQgRW5kcG9pbnQgY29uZmlndXJhdGlvbiBmb3IgdGhlIG5vdGlmaWVyLrAgSW5jbHVkZXMgdGhlIFhDTSBsb2NhdGlvbiBhbmQgcGFsbGV0IGluZGV4LgAoU2VsZlBhcmFJZDgQ3AUAAAQhASBUaGlzIGNoYWluJ3MgcGFyYWNoYWluIElELCBpbmNsdWRlZCBpbiByZXBsYXkgcmVxdWVzdHMgdG8gdGhlIG5vdGlmaWVyLgBwTWF4TWlzc2luZ1Jvb3RzUGVyQ29sbGVjdGlvbjgQ/wAAAATUIE1heGltdW0gbnVtYmVyIG9mIG1pc3NpbmcgcmluZyByb290cyBwZXIgY29sbGVjdGlvbi4AcE1heERlbGV0ZWRSaW5nc1BlckNvbGxlY3Rpb244EGQAAAAI/CBNYXhpbXVtIG51bWJlciBvZiBkZWxldGVkIHJpbmcgaW5kaWNlcyB0cmFja2VkIHBlciBjb2xsZWN0aW9uLswgUHJldmVudHMgZmFsc2VseSBtYXJraW5nIGRlbGV0ZWQgcmluZ3MgYXMgbWlzc2luZy4AZE1heFJpbmdSb290c1BlckNvbGxlY3Rpb244EGQAAAAItCBNYXhpbXVtIG51bWJlciBvZiByaW5nIHJvb3RzIHBlciBjb2xsZWN0aW9uLuwgVXNlZCB0byBib3VuZCBgY2xlYXJgIG9wZXJhdGlvbnMgZHVyaW5nIHJlLWluaXRpYWxpemF0aW9uLgA4TWF4Q29sbGVjdGlvbnM4EAoAAAAE4CBNYXhpbXVtIG51bWJlciBvZiByaW5nIGNvbGxlY3Rpb25zIHRoYXQgY2FuIGJlIHRyYWNrZWQuAFRSZXBsYXlDb29sZG93blNlY29uZHMoIDwAAAAAAAAACFUBIENvb2xkb3duIHBlcmlvZCAoaW4gc2Vjb25kcykgYWZ0ZXIgcmVjZWl2aW5nIGEgYmF0Y2ggYmVmb3JlIHNlbmRpbmcgcmVwbGF5IHJlcXVlc3RzLtggQWxsb3dzIHRpbWUgZm9yIG11bHRpLXBhcnQgYmF0Y2hlcyB0byBhcnJpdmUgdmlhIFhDTS4ASE1heFVwZGF0ZXNQZXJCYXRjaDgQCgAAABQ1ASBNYXhpbXVtIG51bWJlciBvZiByaW5nIHJvb3QgdXBkYXRlcyB0aGF0IGNhbiBiZSBwcm9jZXNzZWQgaW4gYSBzaW5nbGUgYmF0Y2guACkBICoqSW1wb3J0YW50OioqIFRoaXMgdmFsdWUgTVVTVCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG5vdGlmaWVyJ3PsIGBNYXhVcGRhdGVzUGVyQmF0Y2hgLiBJZiB0aGUgbm90aWZpZXIgc2VuZHMgYmF0Y2hlcyBsYXJnZXIdASB0aGFuIHRoaXMgbGltaXQsIGRlY29kaW5nIHdpbGwgZmFpbCBzaWxlbnRseSBhbmQgdXBkYXRlcyB3aWxsIGJlIGxvc3QuAFhSZXBsYXlXYXJuaW5nVGhyZXNob2xkOBAFAAAABGUBIE51bWJlciBvZiByZXBsYXkgcmVxdWVzdCBhdHRlbXB0cyBmb3IgYSBnaXZlbiByaW5nIGluZGV4IGJlZm9yZSBlbWl0dGluZyB3YXJuaW5nIGV2ZW50cy4AWFJlcGxheUFiYW5kb25UaHJlc2hvbGQ4EAoAAAAIBQEgVGhyZXNob2xkIGZvciBhYmFuZG9uaW5nIHJlcGxheSBhdHRlbXB0cyBmb3IgYSBnaXZlbiByaW5nIGluZGV4LhkBIEFmdGVyIHRoaXMgbWFueSBhdHRlbXB0cywgdGhlIG1pc3NpbmcgaW5kZXggaXMgcmVtb3ZlZCBmcm9tIHRyYWNraW5nLgBUTWF4UmVjZW50Um9vdHNQZXJSaW5nOBADAAAAECUBIE1heGltdW0gbnVtYmVyIG9mIHJlY2VudCByaW5nIHJvb3RzIHN0b3JlZCBwZXIgKGNvbGxlY3Rpb24sIHJpbmdfaW5kZXgpLi0BIFdoZW4gYSByaW5nIHJvb3QgaXMgdXBkYXRlZCwgdGhlIG5ldyByb290IGlzIHB1c2hlZCBpbnRvIGEgc2xpZGluZyB3aW5kb3c7JQEgcHJvb2ZzIGJ1aWx0IGFnYWluc3QgYW55IHJvb3QgaW4gdGhlIHdpbmRvdyBzdGlsbCB2ZXJpZnkuIE9sZGVzdCByb290IGlzhCBldmljdGVkIHdoZW4gdGhlIHdpbmRvdyBpcyBmdWxsLgBYT2ZmY2hhaW5Xb3JrZXJJbnRlcnZhbDgQAQAAAATMIEJsb2NrIGludGVydmFsIGJldHdlZW4gb2ZmY2hhaW4gd29ya2VyIGV4ZWN1dGlvbnMuAAF9DwAAAGEAADRBbGlhc0FjY291bnRzATRBbGlhc0FjY291bnRzDDhBbGlhc1RvQWNjb3VudAABCAICgQ8EBAAIwCBNYXBzIChjb2xsZWN0aW9uLCBjb250ZXh0dWFsX2FsaWFzKSB0byBhY2NvdW50LlEBIFVzZXMgYERvdWJsZU1hcGAgYmVjYXVzZSB0aGUgc2FtZSBhbGlhcyB2YWx1ZSBjb3VsZCBleGlzdCBpbiBkaWZmZXJlbnQgY29sbGVjdGlvbnMuADhBY2NvdW50VG9BbGlhcwABBAIE7QMEAAQlASBNYXBzIGFjY291bnQgdG8gZnVsbCBhbGlhcyBpbmZvIChjb2xsZWN0aW9uICsgcmV2aXNlZCBjb250ZXh0dWFsIGFsaWFzKS4AMFBhaWRBbGlhc0ZlZQAAVQEEABABASBQR0FTIGZlZSBidXJuZWQgb24gZWFjaCBwYWlkIGFsaWFzIHJlZ2lzdHJhdGlvbiAvIGFjY291bnQgc3dhcC4AIQEgU2V0IGJ5IFtgQ29uZmlnOjpGZWVNYW5hZ2VyT3JpZ2luYF0gdmlhIFtgUGFsbGV0OjpzZXRfcGFpZF9hbGlhc19mZWVgXS45ASBXaGlsZSB1bnNldCwgcGFpZCBhbGlhcyByZWdpc3RyYXRpb25zIGZhaWwgd2l0aCBbYEVycm9yOjpQYWlkQWxpYXNGZWVVbnNldGBdLgABJQcAAXEJABhMUHJvb2ZWYWxpZGl0eVdpbmRvdyggLAEAAAAAAAAM6CBUaW1lIHRvbGVyYW5jZSAoaW4gc2Vjb25kcykgZm9yIHByb29mLWJhc2VkIHRyYW5zYWN0aW9ucy5BASBQcm9vZnMgYXJlIHZhbGlkIGZyb20gYGNhbGxfdmFsaWRfYXRgIHRvIGBjYWxsX3ZhbGlkX2F0ICsgUHJvb2ZWYWxpZGl0eVdpbmRvd2AubCBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBIQ2xlYW51cEdyYWNlUGVyaW9kKCAQDgAAAAAAABApASBHcmFjZSBwZXJpb2QgKGluIHNlY29uZHMpIGJlZm9yZSBhIHN0YWxlIGFsaWFzIG1hcHBpbmcgY2FuIGJlIGNsZWFuZWQgdXAuGQEgQWZ0ZXIgYSByaW5nIHJldmlzaW9uIGNoYW5nZXMsIGFsaWFzIGhvbGRlcnMgaGF2ZSB0aGlzIGxvbmcgdG8gdXBkYXRlIQEgdmlhIGBXaXRoQWNjb3VudFJldmlzZWRgIGJlZm9yZSBhbnlvbmUgY2FuIGNhbGwgYGNsZWFuX3VwX3N0YWxlX2FsaWFzYC5sIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAFhQZW9wbGVMaXRlUmluZ0V4cG9uZW50BQcECQR8IFJpbmcgZXhwb25lbnQgZm9yIFBlb3BsZSBMaXRlLgBIUGVvcGxlUmluZ0V4cG9uZW50BQcECQRoIFJpbmcgZXhwb25lbnQgZm9yIFBlb3BsZS4AaFBlb3BsZUNvbGxlY3Rpb25JZGVudGlmaWVyCIBwZW9wbGUgICAgICAgICAgICAgICAgICAgICAgICAgIAAAeFBlb3BsZUxpdGVDb2xsZWN0aW9uSWRlbnRpZmllcgiAcG9wOnBvbGthZG90Lm5ldHdvcmsvcGVvcGxlLWxpdGUAAAGFDwAAAGIAABBQZ2FzARBQZ2FzBERDbGFpbWVkR2FzQWxpYXNlcwABCAYCiQ8QBAAQCQEgQWxpYXNlcyB0aGF0IGhhdmUgYmVlbiB1c2VkIHRvIGNsYWltIFBHQVMsIGtleWVkIGJ5IChkYXksIGFsaWFzKS5BASBgRGF5YCB1c2VzIGJpZy1lbmRpYW4gZW5jb2Rpbmcgd2l0aCBgSWRlbnRpdHlgIGhhc2hpbmcgc28gaXRlcmF0aW9uIHlpZWxkcyBkYXlzOQEgaW4gYXNjZW5kaW5nIG9yZGVyLCBhbGxvd2luZyB0aGUgb2ZmY2hhaW4gd29ya2VyIHRvIGZpbmQgdGhlIG9sZGVzdCBzdGFsZSBkYXlIIHdpdGhvdXQgc2Nhbm5pbmcuAAEtBwABdQkAFCxQZ2FzQXNzZXRJZDgQAJQ1dwSAIFRoZSBhc3NldCBJRCBvZiB0aGUgUEdBUyB0b2tlbi4APFBnYXNDbGFpbUFtb3VudFUBQIDw+gIAAAAAAAAAAAAAAAAElCBUaGUgYW1vdW50IG9mIFBHQVMgbWludGVkIHBlciBjbGFpbS4AbE1heENsYWltc1BlclBlcmlvZFBlclBlcnNvbjgQZAAAAAQpASBNYXhpbXVtIG51bWJlciBvZiBQR0FTIGNsYWltcyBhIGZ1bGwgcGVyc29uIG1heSBwZXJmb3JtIHBlciBwZXJpb2QgKGRheSkuAHxNYXhDbGFpbXNQZXJQZXJpb2RQZXJMaXRlUGVyc29uOBAoAAAAECkBIE1heGltdW0gbnVtYmVyIG9mIFBHQVMgY2xhaW1zIGEgbGl0ZSBwZXJzb24gbWF5IHBlcmZvcm0gcGVyIHBlcmlvZCAoZGF5KS4AYQEgVHlwaWNhbGx5IGxvd2VyIHRoYW4gW2BNYXhDbGFpbXNQZXJQZXJpb2RQZXJQZXJzb25gXShTZWxmOjpNYXhDbGFpbXNQZXJQZXJpb2RQZXJQZXJzb24pLQEgc2luY2UgbGl0ZSBwZXJzb25ob29kIG9mZmVycyB3ZWFrZXIgc3liaWwgcmVzaXN0YW5jZSB0aGFuIGZ1bGwgcGVyc29uaG9vZC4AgE1heFBnYXNDbGFpbVJlY29yZENsZWFudXBQZXJDYWxsOBAUAAAABDkBIE1heGltdW0gbnVtYmVyIG9mIFBHQVMgY2xhaW0gcmVjb3JkcyB0aGF0IGNhbiBiZSBjbGVhbmVkIHVwIGluIGEgc2luZ2xlIGNhbGwuAAGNDwAAAGMAABhSZXZpdmUBGFJldml2ZTgwUHJpc3RpbmVDb2RlAAEEBjwYBAAMzCBBIG1hcHBpbmcgZnJvbSBhIGNvbnRyYWN0J3MgY29kZSBoYXNoIHRvIGl0cyBjb2RlLiEBIFRoZSBjb2RlJ3Mgc2l6ZSBpcyBib3VuZGVkIGJ5IFtgY3JhdGU6OmxpbWl0czo6QkxPQl9CWVRFU2BdIGZvciBQVk0gYW5k+CBbYHJldm06OnByaW1pdGl2ZXM6OmVpcDE3MDo6TUFYX0NPREVfU0laRWBdIGZvciBFVk0gYnl0ZWNvZGUuAChDb2RlSW5mb09mAAEEBjyRDwQABOAgQSBtYXBwaW5nIGZyb20gYSBjb250cmFjdCdzIGNvZGUgaGFzaCB0byBpdHMgY29kZSBpbmZvLgA0QWNjb3VudEluZm9PZgABBAY1B5kPBAAE/CBUaGUgZGF0YSBhc3NvY2lhdGVkIHRvIGEgY29udHJhY3Qgb3IgZXh0ZXJuYWxseSBvd25lZCBhY2NvdW50LgA8TmF0aXZlRGVwb3NpdE9mAQEIBgalD1UBQAAAAAAAAAAAAAAAAAAAAAAoHQEgTmF0aXZlIGN1cnJlbmN5IHN0b3JhZ2UgZGVwb3NpdCBjb250cmlidXRlZCBieSBhIHVzZXIgaW50byBhIGNvbnRyYWN0LgAxASBCb3VuZHMgaG93IG11Y2ggbmF0aXZlIHZhbHVlIHRoZSB1c2VyIGNhbiByZWNlaXZlIGJhY2sgZnJvbSB0aGF0IGNvbnRyYWN0J3NEIHN0b3JhZ2UgZGVwb3NpdC4AoCBLZXlzOiBgKGhvbGRlciwgY29udHJpYnV0b3IpIC0+IGFtb3VudGBpASAtIGBob2xkZXJgOiBhY2NvdW50IG9uIHdoaWNoIHRoZSBkZXBvc2l0IGlzIGhlbGQgKGEgY29udHJhY3QsIG9yIHRoZSBwYWxsZXQncyBvd24gYWNjb3VudHQgICBmb3IgY29kZS11cGxvYWQgZGVwb3NpdHMpLnUBIC0gYGNvbnRyaWJ1dG9yYDogdXNlciB0aGF0IGZ1bmRlZCB0aGUgZGVwb3NpdC4gUmVjZWl2ZXMgdGhlIG5hdGl2ZSBwb3J0aW9uIG9uIHJlZnVuZCwgY2FwcGVkcCAgIGF0IHRoaXMgZW50cnkncyBgYW1vdW50YC4APEltbXV0YWJsZURhdGFPZgABBAY1B6kPBAAE0CBUaGUgaW1tdXRhYmxlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYWNjb3VudC4ANERlbGV0aW9uUXVldWUAAQQFOK0PBAAUuCBUZXJtaW5hdGVkIGNvbnRyYWN0cyB0aGF0IGF3YWl0IGxhenkgY2xlYW51cC4ARQEgRWFjaCBlbnRyeSBwYWlycyBhIGNoaWxkIHRyaWUgSUQgd2l0aCB0aGUgY29udHJhY3QgYWNjb3VudCBzbyB0aGF0IGBvbl9pZGxlYCBjYW5ZASBkcmFpbiBib3RoIHRoZSBjaGlsZCB0cmllIGFuZCBhbnkgW2BOYXRpdmVEZXBvc2l0T2ZgXSBlbnRyaWVzIHRoYXQgbmFtZWQgdGhlIGNvbnRyYWN0RQEgYXMgYGhvbGRlcmAuIEJvdGggY2FuIGJlIGFyYml0cmFyaWx5IGxhcmdlLCBzbyBjbGVhbnVwIHJ1bnMgbGF6aWx5IGluIGBvbl9pZGxlYC4AUERlbGV0aW9uUXVldWVDb3VudGVyAQCxDyAAAAAAAAAAAAhNASBBIHBhaXIgb2YgbW9ub3RvbmljIGNvdW50ZXJzIHVzZWQgdG8gdHJhY2sgdGhlIGxhdGVzdCBjb250cmFjdCBtYXJrZWQgZm9yIGRlbGV0aW9uqCBhbmQgdGhlIGxhdGVzdCBkZWxldGVkIGNvbnRyYWN0IGluIHF1ZXVlLgA8T3JpZ2luYWxBY2NvdW50AAEEBjUHBAQAGNggTWFwIGEgRXRoZXJldW0gYWRkcmVzcyB0byBpdHMgb3JpZ2luYWwgYEFjY291bnRJZDMyYC4ARQEgV2hlbiBkZXJpdmluZyBhIGBIMTYwYCBmcm9tIGFuIGBBY2NvdW50SWQzMmAgd2UgdXNlIGEgaGFzaCBmdW5jdGlvbi4gSW4gb3JkZXIgdG8xASByZWNvbnN0cnVjdCB0aGUgb3JpZ2luYWwgYWNjb3VudCB3ZSBuZWVkIHRvIHN0b3JlIHRoZSByZXZlcnNlIG1hcHBpbmcgaGVyZS4ZASBSZWdpc3RlciB5b3VyIGBBY2NvdW50SWQzMmAgdXNpbmcgW2BQYWxsZXQ6Om1hcF9hY2NvdW50YF0gaW4gb3JkZXIgdG9kIHVzZSBpdCB3aXRoIHRoaXMgcGFsbGV0LgA0RXRoZXJldW1CbG9jawEAtQ8RDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJB0BIFRoZSBjdXJyZW50IEV0aGVyZXVtIGJsb2NrIHRoYXQgaXMgc3RvcmVkIGluIHRoZSBgb25fZmluYWxpemVgIG1ldGhvZC4AHCAjIE5vdGUAKQEgVGhpcyBjb3VsZCBiZSBmdXJ0aGVyIG9wdGltaXplZCBpbnRvIHRoZSBmdXR1cmUgdG8gc3RvcmUgb25seSB0aGUgbWluaW11bR0BIGluZm9ybWF0aW9uIG5lZWRlZCB0byByZWNvbnN0cnVjdCB0aGUgRXRoZXJldW0gYmxvY2sgYXQgdGhlIFJQQyBsZXZlbC4APQEgU2luY2UgdGhlIGJsb2NrIGlzIGNvbnZlbmllbnQgdG8gaGF2ZSBhcm91bmQsIGFuZCB0aGUgZXh0cmEgZGV0YWlscyBhcmUgY2FwcGVkPQEgYnkgYSBmZXcgaGFzaGVzIGFuZCB0aGUgdmVjdG9yIG9mIHRyYW5zYWN0aW9uIGhhc2hlcywgd2Ugc3RvcmUgdGhlIGJsb2NrIGhlcmUuACRCbG9ja0hhc2gBAQQGODyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMlCBNYXBwaW5nIGZvciBibG9jayBudW1iZXIgYW5kIGhhc2hlcy4AcQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGVsZW1lbnRzIHN0b3JlZCBpcyBjYXBwZWQgYnkgdGhlIGJsb2NrIGhhc2ggY291bnQgYEJMT0NLX0hBU0hfQ09VTlRgLgA8UmVjZWlwdEluZm9EYXRhAQAhEAQAGPQgVGhlIGRldGFpbHMgbmVlZGVkIHRvIHJlY29uc3RydWN0IHRoZSByZWNlaXB0IGluZm8gb2ZmY2hhaW4uACkBIFRoaXMgY29udGFpbnMgdmFsdWFibGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGdhcyB1c2VkIGJ5IHRoZSB0cmFuc2FjdGlvbi4AHQEgTk9URTogVGhlIGl0ZW0gaXMgdW5ib3VuZCBhbmQgc2hvdWxkIHRoZXJlZm9yZSBuZXZlciBiZSByZWFkIG9uIGNoYWluLtAgSXQgY291bGQgb3RoZXJ3aXNlIGluZmxhdGUgdGhlIFBvViBzaXplIG9mIGEgYmxvY2suAERFdGhCbG9ja0J1aWxkZXJJUgEAKRARBgAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAEKXU6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEkCBJbmNyZW1lbnRhbCBldGhlcmV1bSBibG9jayBidWlsZGVyLgBoRXRoQmxvY2tCdWlsZGVyRmlyc3RWYWx1ZXMBADUQBAAQ5CBUaGUgZmlyc3QgdHJhbnNhY3Rpb24gYW5kIHJlY2VpcHQgb2YgdGhlIGV0aGVyZXVtIGJsb2NrLgA9ASBUaGVzZSB2YWx1ZXMgYXJlIG1vdmVkIG91dCBvZiB0aGUgYEV0aEJsb2NrQnVpbGRlcklSYCB0byBhdm9pZCBzZXJpYWxpemluZyBhbmQ9ASBkZXNlcmlhbGl6aW5nIHRoZW0gb24gZXZlcnkgdHJhbnNhY3Rpb24uIEluc3RlYWQsIHRoZXkgYXJlIGxvYWRlZCB3aGVuIG5lZWRlZC4APERlYnVnU2V0dGluZ3NPZgEAORAQAAAAAAQxASBEZWJ1Z2dpbmcgc2V0dGluZ3MgdGhhdCBjYW4gYmUgY29uZmlndXJlZCB3aGVuIERlYnVnRW5hYmxlZCBjb25maWcgaXMgdHJ1ZS4AATEHAAF5CQAsOERlcG9zaXRQZXJCeXRlVQFAoIYBAAAAAAAAAAAAAAAAABQRASBUaGUgYW1vdW50IG9mIGJhbGFuY2UgYSBjYWxsZXIgaGFzIHRvIHBheSBmb3IgZWFjaCBieXRlIG9mIHN0b3JhZ2UuABwgIyBOb3RlADUBIEl0IGlzIHNhZmUgdG8gY2hhbmdlIHRoaXMgdmFsdWUgb24gYSBsaXZlIGNoYWluIGFzIGFsbCByZWZ1bmRzIGFyZSBwcm8gcmF0YS4AOERlcG9zaXRQZXJJdGVtVQFAAJQ1dwAAAAAAAAAAAAAAABQFASBUaGUgYW1vdW50IG9mIGJhbGFuY2UgYSBjYWxsZXIgaGFzIHRvIHBheSBmb3IgZWFjaCBzdG9yYWdlIGl0ZW0uABwgIyBOb3RlADUBIEl0IGlzIHNhZmUgdG8gY2hhbmdlIHRoaXMgdmFsdWUgb24gYSBsaXZlIGNoYWluIGFzIGFsbCByZWZ1bmRzIGFyZSBwcm8gcmF0YS4AXERlcG9zaXRQZXJDaGlsZFRyaWVJdGVtVQFAAMLrCwAAAAAAAAAAAAAAACQxASBUaGUgYW1vdW50IG9mIGJhbGFuY2UgYSBjYWxsZXIgaGFzIHRvIHBheSBmb3IgZWFjaCBjaGlsZCB0cmllIHN0b3JhZ2UgaXRlbS4AOQEgVGhvc2UgYXJlIHRoZSBpdGVtcyBjcmVhdGVkIGJ5IGEgY29udHJhY3QuIEluIFNvbGlkaXR5IGVhY2ggdmFsdWUgaXMgYSBzaW5nbGU5ASBzdG9yYWdlIGl0ZW0uIFRoaXMgaXMgd2h5IHdlIG5lZWQgdG8gc2V0IGEgbG93ZXIgdmFsdWUgaGVyZSB0aGFuIGZvciB0aGUgbWFpbtwgdHJpZSBpdGVtcy4gT3RoZXJ3aXNlIHRoZSBzdG9yYWdlIGRlcG9zaXQgaXMgdG9vIGhpZ2guABwgIyBOb3RlADUBIEl0IGlzIHNhZmUgdG8gY2hhbmdlIHRoaXMgdmFsdWUgb24gYSBsaXZlIGNoYWluIGFzIGFsbCByZWZ1bmRzIGFyZSBwcm8gcmF0YS4AcENvZGVIYXNoTG9ja3VwRGVwb3NpdFBlcmNlbnQZBRAAo+ERDEUBIFRoZSBwZXJjZW50YWdlIG9mIHRoZSBzdG9yYWdlIGRlcG9zaXQgdGhhdCBzaG91bGQgYmUgaGVsZCBmb3IgdXNpbmcgYSBjb2RlIGhhc2guUQEgSW5zdGFudGlhdGluZyBhIGNvbnRyYWN0LCBwcm90ZWN0cyB0aGUgY29kZSBmcm9tIGJlaW5nIHJlbW92ZWQuIEluIG9yZGVyIHRvIHByZXZlbnQlASBhYnVzZSB0aGVzZSBhY3Rpb25zIGFyZSBwcm90ZWN0ZWQgd2l0aCBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGNvZGUgZGVwb3NpdC4AQEFsbG93RVZNQnl0ZWNvZGVZAQQBBNAgQWxsb3cgRVZNIGJ5dGVjb2RlIHRvIGJlIHVwbG9hZGVkIGFuZCBpbnN0YW50aWF0ZWQuABxDaGFpbklkKCBBGw8ZAAAAABABASBUaGUgW0VJUC0xNTVdKGh0dHBzOi8vZWlwcy5ldGhlcmV1bS5vcmcvRUlQUy9laXAtMTU1KSBjaGFpbiBJRC4ABQEgVGhpcyBpcyBhIHVuaXF1ZSBpZGVudGlmaWVyIGFzc2lnbmVkIHRvIGVhY2ggYmxvY2tjaGFpbiBuZXR3b3JrLGwgcHJldmVudGluZyByZXBsYXkgYXR0YWNrcy4AQE5hdGl2ZVRvRXRoUmF0aW84EADh9QUEUQEgVGhlIHJhdGlvIGJldHdlZW4gdGhlIGRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG5hdGl2ZSB0b2tlbiBhbmQgdGhlIEVUSCB0b2tlbi4AVE1heEV0aEV4dHJpbnNpY1dlaWdodAkFQAAA2kk7cX0MAAAAAAAAAAAwTQEgVGhlIGZyYWN0aW9uIHRoZSBtYXhpbXVtIGV4dHJpbnNpYyB3ZWlnaHQgYGV0aF90cmFuc2FjdGAgZXh0cmluc2ljcyBhcmUgY2FwcGVkIHRvLgBRASBUaGlzIGlzIG5vdCBhIHNlY3VyaXR5IG1lYXN1cmUgYnV0IGEgcmVxdWlyZW1lbnQgZHVlIHRvIGhvdyB3ZSBtYXAgZ2FzIHRvIGAoV2VpZ2h0LF0BIFN0b3JhZ2VEZXBvc2l0KWAuIFRoZSBtYXBwaW5nIG1pZ2h0IGRlcml2ZSBhIGBXZWlnaHRgIHRoYXQgaXMgdG9vIGxhcmdlIHRvIGZpdCBpbnRvIGFu/CBleHRyaW5zaWMuIEluIHRoaXMgY2FzZSB3ZSBjYXAgaXQgdG8gdGhlIGxpbWl0IHNwZWNpZmllZCBoZXJlLgBlASBgZXRoX3RyYW5zYWN0YCB0cmFuc2FjdGlvbnMgdGhhdCB1c2UgbW9yZSB3ZWlnaHQgdGhhbiBzcGVjaWZpZWQgd2lsbCBmYWlsIHdpdGggYW4gb3V0IG9mSQEgZ2FzIGVycm9yIGR1cmluZyBleGVjdXRpb24uIExhcmdlciBmcmFjdGlvbnMgd2lsbCBhbGxvdyBtb3JlIHRyYW5zYWN0aW9ucyB0byBydW4uTQEgU21hbGxlciB2YWx1ZXMgd2FzdGUgbGVzcyBibG9jayBzcGFjZTogQ2hvb3NlIGFzIHNtYWxsIGFzIHBvc3NpYmxlIGFuZCBhcyBsYXJnZSBhcywgbmVjZXNzYXJ5LgBEICBEZWZhdWx0OiBgMC41YC4AMERlYnVnRW5hYmxlZFkBBAAELQEgQWxsb3dzIGRlYnVnLW1vZGUgY29uZmlndXJhdGlvbiwgc3VjaCBhcyBlbmFibGluZyB1bmxpbWl0ZWQgY29udHJhY3Qgc2l6ZS4AHEF1dG9NYXBZAQQBGDEBIFdoZW4gZW5hYmxlZCwgYWNjb3VudHMgYXJlIGF1dG9tYXRpY2FsbHkgbWFwcGVkIG9uIGNyZWF0aW9uIGFuZCB1bm1hcHBlZCBvbkUBIGtpbGwgdmlhIFtgQXV0b01hcHBlcmBdLiBUaGlzIHJlbW92ZXMgdGhlIG5lZWQgZm9yIGV4cGxpY2l0IGBtYXBfYWNjb3VudGAgY2FsbHMuADkBIFJlcXVpcmVzIGBmcmFtZV9zeXN0ZW06OkNvbmZpZzo6T25OZXdBY2NvdW50YCBhbmQgYE9uS2lsbGVkQWNjb3VudGAgdG8gYmUgc2V0HQEgdG8gW2BBdXRvTWFwcGVyYF0uIFdoZW4gZW5hYmxlZCwgdGhlIGBtYXBfYWNjb3VudGAgYW5kIGB1bm1hcF9hY2NvdW50YHAgZGlzcGF0Y2hhYmxlcyBhcmUgZGlzYWJsZWQuACBHYXNTY2FsZTgQoIYBAEQdASBUaGlzIGRldGVybWluZXMgdGhlIHJlbGF0aXZlIHNjYWxlIG9mIG91ciBnYXMgcHJpY2UgYW5kIGdhcyBlc3RpbWF0ZXMuAFUBIEJ5IGRlZmF1bHQsIHRoZSBnYXMgcHJpY2UgKGluIHdlaSkgaXMgYEZlZUluZm86Om5leHRfZmVlX211bHRpcGxpZXIoKWAgbXVsdGlwbGllZCBieV0BIGBOYXRpdmVUb0V0aFJhdGlvYC4gYEdhc1NjYWxlYCBhbGxvd3MgdG8gc2NhbGUgdGhpcyB2YWx1ZTogdGhlIGFjdHVhbCBnYXMgcHJpY2UgaXMgdGhlsCBkZWZhdWx0IGdhcyBwcmljZSBtdWx0aXBsaWVkIGJ5IGBHYXNTY2FsZWAuAFkBIEFzIGEgY29uc2VxdWVuY2UsIGdhcyBjb3N0IChnYXMgZXN0aW1hdGVzIGFuZCBhY3R1YWwgZ2FzIHVzYWdlIGR1cmluZyB0cmFuc2FjdGlvbikgaXNRASBzY2FsZWQgZG93biBieSB0aGUgc2FtZSBmYWN0b3IuIFRodXMsIHRoZSB0b3RhbCB0cmFuc2FjdGlvbiBjb3N0IGlzIG5vdCBhZmZlY3RlZCBieW0BIGBHYXNTY2FsZWAg4oCTwqBhcGFydCBmcm9tIHJvdW5kaW5nIGRpZmZlcmVuY2VzOiB0aGUgdHJhbnNhY3Rpb24gY29zdCBpcyBhbHdheXMgYSBtdWx0aXBsZWEBIG9mIHRoZSBnYXMgcHJpY2UgYW5kIGlzIGRlcml2ZWQgYnkgcm91bmRlZCB1cCwgc28gdGhhdCB3aXRoIGhpZ2hlciBgR2FzU2NhbGVzYCB0aGlzIGNhbhEBIGxlYWQgdG8gaGlnaGVyIGdhcyBjb3N0IGFzIHRoZSByb3VuZGluZyBkaWZmZXJlbmNlIHdvdWxkIGJlIGxhcmdlci4AZQEgVGhlIG1haW4gcHVycG9zZSBvZiBjaGFuZ2luZyB0aGUgYEdhc1NjYWxlYCBpcyB0byB0dW5lIHRoZSBnYXMgY29zdCBzbyB0aGF0IGl0IGlzIGNsb3NlckkBIHRvIHN0YW5kYXJkIEVWTSBnYXMgY29zdCBhbmQgY29udHJhY3RzIHdpbGwgbm90IHJ1biBvdXQgb2YgZ2FzIHdoZW4gdG9vbHMgb3IgY29kZXggYXNzdW1lIGhhcmQgY29kZWQgZ2FzIGxpbWl0cy4AmCBSZXF1aXJlbWVudDogYEdhc1NjYWxlYCBtdXN0IG5vdCBiZSAwAAE9EAAELFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuAGQAADBEb3Ruc0dhdGV3YXkBMERvdG5zR2F0ZXdheRREQWxpYXNSZWdpc3RyYXRpb24AAQQCCEEQBAAE9CBUcmFja3Mgd2hpY2ggYWxpYXNlcyBoYXZlIHJlZ2lzdGVyZWQgbmFtZXMgdmlhIHRoaXMgZ2F0ZXdheS4AMEFjY291bnRBbGlhcwABBAIECAQADAEBIFJldmVyc2UgbG9va3VwIGZyb20gYSByZWdpc3RlcmluZyBhY2NvdW50IHRvIHRoZSBhbGlhcyBpdCB1c2VkLgAhASBQb3B1bGF0ZWQgYWxvbmdzaWRlIFtgQWxpYXNSZWdpc3RyYXRpb25gXSBpbiBbYFBhbGxldDo6cmVnaXN0ZXJfbmFtZWBdLgBQQXR0ZXN0YXRpb25BbGxvd2FuY2UBAQQCBDgQAAAAAAQFASBOdW1iZXIgb2YgdXNlcm5hbWUgcmVzZXJ2YXRpb25zIGFuIGF0dGVzdGVyIGlzIGFsbG93ZWQgdG8gZ3JhbnQuADhMaXRlTGFiZWxPd25lcgABBAJJBwQEAAz8IFJlY29yZHMgd2hpY2ggYWNjb3VudCBvd25zIGVhY2ggcmVzZXJ2ZWQgbGl0ZS1wZXJzb24gbGFiZWwsIHNvIQEgW2BQYWxsZXQ6OnJlZ2lzdGVyX25hbWVgXSBjYW4gdmVyaWZ5IHRoYXQgYSBgTGluazo6TGl0ZVVzZXJuYW1lYCB0YXJnZXRcIGJlbG9uZ3MgdG8gdGhlIGNhbGxlci4AUFBvcENvbnRyb2xsZXJBZGRyZXNzAAA1BwQADCkBIEFkZHJlc3Mgb2YgdGhlIGBEb3Ruc1BvcENvbnRyb2xsZXJgIGNvbnRyYWN0LiBNdXN0IGJlIHNldCAodmlhIGdlbmVzaXMgb3ItASBbYFBhbGxldDo6c2V0X3BvcF9jb250cm9sbGVyX2FkZHJlc3NgXSkgYmVmb3JlIFtgUGFsbGV0OjpyZXNlcnZlX25hbWVgXSBvcpwgW2BQYWxsZXQ6OnJlZ2lzdGVyX25hbWVgXSBjYW4gc3VjY2VlZC4AAUUHAAF9CQAMVE1heENvbnRyYWN0Q2FsbFdlaWdodBEBKAcAiFJqdAIAEAAMMQEgTWF4aW11bSB3ZWlnaHQgYnVkZ2V0IGZvciBhIHNpbmdsZSBjb250cmFjdCBjYWxsLiBUaGUgZXh0cmluc2ljIHByZS1jaGFyZ2VzMQEgcGFsbGV0IG92ZXJoZWFkICsgdGhpcyBidWRnZXQgYW5kIHJlZnVuZHMgdW51c2VkIHdlaWdodCBiYXNlZCBvbiB0aGUgYWN0dWFsoCB3ZWlnaHQgcmVwb3J0ZWQgYnkgdGhlIGNvbnRyYWN0IGNhbGxlci4ASE1heFZhbGlkaXR5U2Vjb25kcyggLAEAAAAAAAAInCBTaWduYXR1cmUgdmFsaWRpdHkgd2luZG93LCBpbiBzZWNvbmRzLiUBIEEgc2lnbmF0dXJlIGlzIGFjY2VwdGVkIG9ubHkgaWYgYG5vdyA8PSBzaWduZWRfYXQgKyBNYXhWYWxpZGl0eVNlY29uZHNgLgBQTWF4RnV0dXJlU2tld1NlY29uZHMoIB4AAAAAAAAACMggQ2xvY2stc2tldyB0b2xlcmFuY2UgZm9yIGBzaWduZWRfYXRgLCBpbiBzZWNvbmRzLi0BIEEgc2lnbmF0dXJlIGlzIGFjY2VwdGVkIG9ubHkgaWYgYHNpZ25lZF9hdCA8PSBub3cgKyBNYXhGdXR1cmVTa2V3U2Vjb25kc2AuAAFJEAAEUEF0dGVzdGF0aW9uU2lnbmF0dXJlnQQEDQEgU2lnbmF0dXJlIHR5cGUgdXNlZCBieSBjYW5kaWRhdGVzIHRvIGNvbnNlbnQgdG8gbmFtZSByZXNlcnZhdGlvbnMuAJgAABBTdWRvARBTdWRvBAxLZXkAAAQEAASEIFRoZSBgQWNjb3VudElkYCBvZiB0aGUgc3VkbyBrZXkuAAFZBwABgQkAAAFREAAELFJ1bnRpbWVDYWxsIARIIEEgc3Vkby1hYmxlIGNhbGwuAPsAADRQZ2FzQWxsb3dhbmNlAAABhQkAAAAAAPwAAAgEBQAgnQQEADgABAgMEBQYHCAkKCwwNDg0QXV0aG9yaXplQ2FsbF0HEBhBc1BnYXNhBxAsQXNSaW5nQWxpYXNtBxBIQ2hlY2tOb25aZXJvU2VuZGVyeQcQQENoZWNrU3BlY1ZlcnNpb259Bzg4Q2hlY2tUeFZlcnNpb26BBzgwQ2hlY2tHZW5lc2lzhQc8OENoZWNrTW9ydGFsaXR5iQc8KENoZWNrTm9uY2WRBxAsQ2hlY2tXZWlnaHSVBxBQQ2hhcmdlQXNzZXRUeFBheW1lbnSZBxBEQ2hlY2tNZXRhZGF0YUhhc2idBzkHMEV0aFNldE9yaWdpbqUHEFBTdG9yYWdlV2VpZ2h0UmVjbGFpbRAQbBxBdXJhQXBpCDRzbG90X2R1cmF0aW9uAFUQDJAgUmV0dXJucyB0aGUgc2xvdCBkdXJhdGlvbiBmb3IgQXVyYS4AJQEgQ3VycmVudGx5LCBvbmx5IHRoZSB2YWx1ZSBwcm92aWRlZCBieSB0aGlzIHR5cGUgYXQgZ2VuZXNpcyB3aWxsIGJlIHVzZWQuACxhdXRob3JpdGllcwBNCwScIFJldHVybiB0aGUgY3VycmVudCBzZXQgb2YgYXV0aG9yaXRpZXMuAAS4IEFQSSBuZWNlc3NhcnkgZm9yIGJsb2NrIGF1dGhvcnNoaXAgd2l0aCBhdXJhLgQAUFJlbGF5UGFyZW50T2Zmc2V0QXBpBExyZWxheV9wYXJlbnRfb2Zmc2V0ADgE9CBGZXRjaCB0aGUgc2xvdCBvZmZzZXQgdGhhdCBpcyBleHBlY3RlZCBmcm9tIHRoZSByZWxheSBjaGFpbi4AEAUBIEFQSSB0byB0ZWxsIHRoZSBub2RlIHNpZGUgaG93IHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIGJlIGNob3Nlbi4AaQEgQSBsYXJnZXIgb2Zmc2V0IGluZGljYXRlcyB0aGF0IHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIG5vdCBiZSB0aGUgdGlwIG9mIHRoZSByZWxheSBjaGFpbiwxASBidXQgYE5gIGJsb2NrcyBiZWhpbmQgdGhlIHRpcC4gVGhpcyBvZmZzZXQgaXMgdGhlbiBlbmZvcmNlZCBieSB0aGUgcnVudGltZS4EAGBBdXJhVW5pbmNsdWRlZFNlZ21lbnRBcGkEOGNhbl9idWlsZF91cG9uCDRpbmNsdWRlZF9oYXNoPBBzbG90UQtZASg5ASBXaGV0aGVyIGl0IGlzIGxlZ2FsIHRvIGV4dGVuZCB0aGUgY2hhaW4sIGFzc3VtaW5nIHRoZSBnaXZlbiBibG9jayBpcyB0aGUgbW9zdDUBIHJlY2VudGx5IGluY2x1ZGVkIG9uZSBhcy1vZiB0aGUgcmVsYXkgcGFyZW50IHRoYXQgd2lsbCBiZSBidWlsdCBhZ2FpbnN0LCBhbmRwIHRoZSBnaXZlbiByZWxheSBjaGFpbiBzbG90LgBRASBUaGlzIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggdGhlIGxvZ2ljIHRoZSBydW50aW1lIHVzZXMgd2hlbiB2YWxpZGF0aW5nIGJsb2NrcyB0bzggYXZvaWQgaXNzdWVzLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgZW1wdHksIGkuZS4gYGluY2x1ZGVkX2hhc2ggPT0gYXRgLCB3aGVyZSBhdCBpcyB0aGUgYmxvY2thASB3aG9zZSBzdGF0ZSB3ZSBhcmUgcXVlcnlpbmcgYWdhaW5zdCwgdGhpcyBtdXN0IGFsd2F5cyByZXR1cm4gYHRydWVgIGFzIGxvbmcgYXMgdGhlIHNsb3S8IGlzIG1vcmUgcmVjZW50IHRoYW4gdGhlIGluY2x1ZGVkIGJsb2NrIGl0c2VsZi4ANDUBIFRoaXMgcnVudGltZSBBUEkgaXMgdXNlZCB0byBpbmZvcm0gcG90ZW50aWFsIGJsb2NrIGF1dGhvcnMgd2hldGhlciB0aGV5IHdpbGwlASBoYXZlIHRoZSByaWdodCB0byBhdXRob3IgYXQgYSBzbG90LCBhc3N1bWluZyB0aGV5IGhhdmUgY2xhaW1lZCB0aGUgc2xvdC4AdQEgSW4gcGFydGljdWxhciwgdGhpcyBBUEkgYWxsb3dzIEF1cmEtYmFzZWQgcGFyYWNoYWlucyB0byByZWd1bGF0ZSB0aGVpciAidW5pbmNsdWRlZCBzZWdtZW50IixtASB3aGljaCBpcyB0aGUgc2VjdGlvbiBvZiB0aGUgaGVhZCBvZiB0aGUgY2hhaW4gd2hpY2ggaGFzIG5vdCB5ZXQgYmVlbiBtYWRlIGF2YWlsYWJsZSBpbiB0aGU0IHJlbGF5IGNoYWluLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgc2hvcnQsIEF1cmEgY2hhaW5zIHdpbGwgYWxsb3cgYXV0aG9ycyB0byBjcmVhdGUgbXVsdGlwbGVdASBibG9ja3MgcGVyIHNsb3QgaW4gb3JkZXIgdG8gYnVpbGQgYSBiYWNrbG9nLiBXaGVuIGl0IGlzIHNhdHVyYXRlZCwgdGhpcyBBUEkgd2lsbCBsaW1pdKggdGhlIGFtb3VudCBvZiBibG9ja3MgdGhhdCBjYW4gYmUgY3JlYXRlZC4AJCBDaGFuZ2VzOpEBIC0gVmVyc2lvbiAyOiBVcGRhdGUgdG8gYGNhbl9idWlsZF91cG9uYCB0byB0YWtlIGEgcmVsYXkgY2hhaW4gYFNsb3RgIGluc3RlYWQgb2YgYSBwYXJhY2hhaW4gYFNsb3RgLggAEENvcmUMHHZlcnNpb24AuQkEkCBSZXR1cm5zIHRoZSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgA0ZXhlY3V0ZV9ibG9jawQUYmxvY2tZEBAEZCBFeGVjdXRlIHRoZSBnaXZlbiBibG9jay4AQGluaXRpYWxpemVfYmxvY2sEGGhlYWRlclxlEARBASBJbml0aWFsaXplIGEgYmxvY2sgd2l0aCB0aGUgZ2l2ZW4gaGVhZGVyIGFuZCByZXR1cm4gdGhlIHJ1bnRpbWUgZXhlY3V0aXZlIG1vZGUuAAQhASBUaGUgYENvcmVgIHJ1bnRpbWUgYXBpIHRoYXQgZXZlcnkgU3Vic3RyYXRlIHJ1bnRpbWUgbmVlZHMgdG8gaW1wbGVtZW50LhQAIE1ldGFkYXRhDCBtZXRhZGF0YQBpEASMIFJldHVybnMgdGhlIG1ldGFkYXRhIG9mIGEgcnVudGltZS4ATG1ldGFkYXRhX2F0X3ZlcnNpb24EHHZlcnNpb244bRAQpCBSZXR1cm5zIHRoZSBtZXRhZGF0YSBhdCBhIGdpdmVuIHZlcnNpb24uAAUBIElmIHRoZSBnaXZlbiBgdmVyc2lvbmAgaXNuJ3Qgc3VwcG9ydGVkLCB0aGlzIHdpbGwgcmV0dXJuIGBOb25lYC51ASBVc2UgW2BTZWxmOjptZXRhZGF0YV92ZXJzaW9uc2BdIHRvIGZpbmQgb3V0IGFib3V0IHN1cHBvcnRlZCBtZXRhZGF0YSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgBEbWV0YWRhdGFfdmVyc2lvbnMAPQQMpCBSZXR1cm5zIHRoZSBzdXBwb3J0ZWQgbWV0YWRhdGEgdmVyc2lvbnMuAMAgVGhpcyBjYW4gYmUgdXNlZCB0byBjYWxsIGBtZXRhZGF0YV9hdF92ZXJzaW9uYC4ABAEBIFRoZSBgTWV0YWRhdGFgIGFwaSB0cmFpdCB0aGF0IHJldHVybnMgbWV0YWRhdGEgZm9yIHRoZSBydW50aW1lLggAMEJsb2NrQnVpbGRlchA8YXBwbHlfZXh0cmluc2ljBCRleHRyaW5zaWPRCXEQEGwgQXBwbHkgdGhlIGdpdmVuIGV4dHJpbnNpYy4AOQEgUmV0dXJucyBhbiBpbmNsdXNpb24gb3V0Y29tZSB3aGljaCBzcGVjaWZpZXMgaWYgdGhpcyBleHRyaW5zaWMgaXMgaW5jbHVkZWQgaW5MIHRoaXMgYmxvY2sgb3Igbm90LgA4ZmluYWxpemVfYmxvY2sAXARoIEZpbmlzaCB0aGUgY3VycmVudCBibG9jay4ATGluaGVyZW50X2V4dHJpbnNpY3MEIGluaGVyZW50gRDhCQQ9ASBHZW5lcmF0ZSBpbmhlcmVudCBleHRyaW5zaWNzLiBUaGUgaW5oZXJlbnQgZGF0YSB3aWxsIHZhcnkgZnJvbSBjaGFpbiB0byBjaGFpbi4APGNoZWNrX2luaGVyZW50cwgUYmxvY2tZEBBkYXRhgRCREARVASBDaGVjayB0aGF0IHRoZSBpbmhlcmVudHMgYXJlIHZhbGlkLiBUaGUgaW5oZXJlbnQgZGF0YSB3aWxsIHZhcnkgZnJvbSBjaGFpbiB0byBjaGFpbi4ABHEBIFRoZSBgQmxvY2tCdWlsZGVyYCBhcGkgdHJhaXQgdGhhdCBwcm92aWRlcyB0aGUgcmVxdWlyZWQgZnVuY3Rpb25hbGl0eSBmb3IgYnVpbGRpbmcgYSBibG9jay4YAFhUYWdnZWRUcmFuc2FjdGlvblF1ZXVlBFB2YWxpZGF0ZV90cmFuc2FjdGlvbgwYc291cmNllRAIdHjRCShibG9ja19oYXNoPJkQJGggVmFsaWRhdGUgdGhlIHRyYW5zYWN0aW9uLgBlASBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJ5IHRoZSB0cmFuc2FjdGlvbiBwb29sIHRvIGxlYXJuIGRldGFpbHMgYWJvdXQgZ2l2ZW4gdHJhbnNhY3Rpb24uRQEgVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCBtYWtlIHN1cmUgdG8gdmVyaWZ5IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgdHJhbnNhY3Rpb25NASBhZ2FpbnN0IGN1cnJlbnQgc3RhdGUuIFRoZSBnaXZlbiBgYmxvY2tfaGFzaGAgY29ycmVzcG9uZHMgdG8gdGhlIGhhc2ggb2YgdGhlIGJsb2NrfCB0aGF0IGlzIHVzZWQgYXMgY3VycmVudCBzdGF0ZS4ARQEgTm90ZSB0aGF0IHRoaXMgY2FsbCBtYXkgYmUgcGVyZm9ybWVkIGJ5IHRoZSBwb29sIG11bHRpcGxlIHRpbWVzIGFuZCB0cmFuc2FjdGlvbnOkIG1pZ2h0IGJlIHZlcmlmaWVkIGluIGFueSBwb3NzaWJsZSBvcmRlci4ABE0BIFRoZSBgVGFnZ2VkVHJhbnNhY3Rpb25RdWV1ZWAgYXBpIHRyYWl0IGZvciBpbnRlcmZlcmluZyB3aXRoIHRoZSB0cmFuc2FjdGlvbiBxdWV1ZS4MAERPZmZjaGFpbldvcmtlckFwaQQ8b2ZmY2hhaW5fd29ya2VyBBhoZWFkZXJcEATIIFN0YXJ0cyB0aGUgb2ZmLWNoYWluIHRhc2sgZm9yIGdpdmVuIGJsb2NrIGhlYWRlci4ABGQgVGhlIG9mZmNoYWluIHdvcmtlciBhcGkuCAAsU2Vzc2lvbktleXMIVGdlbmVyYXRlX3Nlc3Npb25fa2V5cwgUb3duZXIYEHNlZWRJAaEQHBUBIEdlbmVyYXRlIGEgc2V0IG9mIHNlc3Npb24ga2V5cyB3aXRoIG9wdGlvbmFsbHkgdXNpbmcgdGhlIGdpdmVuIHNlZWQuCQEgVGhlIGtleXMgc2hvdWxkIGJlIHN0b3JlZCB3aXRoaW4gdGhlIGtleXN0b3JlIGV4cG9zZWQgdmlhIHJ1bnRpbWU8IGV4dGVybmFsaXRpZXMuALAgVGhlIHNlZWQgbmVlZHMgdG8gYmUgYSB2YWxpZCBgdXRmOGAgc3RyaW5nLgDQIFJldHVybnMgdGhlIGNvbmNhdGVuYXRlZCBTQ0FMRSBlbmNvZGVkIHB1YmxpYyBrZXlzLgBMZGVjb2RlX3Nlc3Npb25fa2V5cwQcZW5jb2RlZBilEAyYIERlY29kZSB0aGUgZ2l2ZW4gcHVibGljIHNlc3Npb24ga2V5cy4A3CBSZXR1cm5zIHRoZSBsaXN0IG9mIHB1YmxpYyByYXcgcHVibGljIGtleXMgKyBrZXkgdHlwZS4ABGggU2Vzc2lvbiBrZXlzIHJ1bnRpbWUgYXBpLggATFJ1bnRpbWVWaWV3RnVuY3Rpb24EVGV4ZWN1dGVfdmlld19mdW5jdGlvbgggcXVlcnlfaWSxEBRpbnB1dBi1EAR8IEV4ZWN1dGUgYSB2aWV3IGZ1bmN0aW9uIHF1ZXJ5LgAEpCBSdW50aW1lIEFQSSBmb3IgZXhlY3V0aW5nIHZpZXcgZnVuY3Rpb25zBAA8QWNjb3VudE5vbmNlQXBpBDRhY2NvdW50X25vbmNlBBxhY2NvdW50BDgEwCBHZXQgY3VycmVudCBhY2NvdW50IG5vbmNlIG9mIGdpdmVuIGBBY2NvdW50SWRgLgAEgCBUaGUgQVBJIHRvIHF1ZXJ5IGFjY291bnQgbm9uY2UuBABUVHJhbnNhY3Rpb25QYXltZW50QXBpEChxdWVyeV9pbmZvCAx1eHTRCQxsZW44vRAAAERxdWVyeV9mZWVfZGV0YWlscwgMdXh00QkMbGVuOMEQAABMcXVlcnlfd2VpZ2h0X3RvX2ZlZQQYd2VpZ2h0EQFVAQAATHF1ZXJ5X2xlbmd0aF90b19mZWUEGGxlbmd0aDhVAQAAABAAZFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGkQPHF1ZXJ5X2NhbGxfaW5mbwgQY2FsbCAMbGVuOL0QBEkBIFF1ZXJ5IGluZm9ybWF0aW9uIG9mIGEgZGlzcGF0Y2ggY2xhc3MsIHdlaWdodCwgYW5kIGZlZSBvZiBhIGdpdmVuIGVuY29kZWQgYENhbGxgLgBYcXVlcnlfY2FsbF9mZWVfZGV0YWlscwgQY2FsbCAMbGVuOMEQBLQgUXVlcnkgZmVlIGRldGFpbHMgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4ATHF1ZXJ5X3dlaWdodF90b19mZWUEGHdlaWdodBEBVQEEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgV2VpZ2h0VG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg4VQEEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgTGVuZ3RoVG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAAAMADRYY21QYXltZW50QXBpEHxxdWVyeV9hY2NlcHRhYmxlX3BheW1lbnRfYXNzZXRzBCx4Y21fdmVyc2lvbjjNEBS0IFJldHVybnMgYSBsaXN0IG9mIGFjY2VwdGFibGUgcGF5bWVudCBhc3NldHMuADAgIyBBcmd1bWVudHMAaCAqIGB4Y21fdmVyc2lvbmA6IFZlcnNpb24uAEBxdWVyeV94Y21fd2VpZ2h0BBxtZXNzYWdlMQLZEBSoIFJldHVybnMgYSB3ZWlnaHQgbmVlZGVkIHRvIGV4ZWN1dGUgYSBYQ00uADAgIyBBcmd1bWVudHMAdCAqIGBtZXNzYWdlYDogYFZlcnNpb25lZFhjbWAuAGRxdWVyeV93ZWlnaHRfdG9fYXNzZXRfZmVlCBh3ZWlnaHQRARRhc3NldKED3RAY6CBDb252ZXJ0cyBhIHdlaWdodCBpbnRvIGEgZmVlIGZvciB0aGUgc3BlY2lmaWVkIGBBc3NldElkYC4AMCAjIEFyZ3VtZW50cwCIICogYHdlaWdodGA6IGNvbnZlcnRpYmxlIGBXZWlnaHRgLnwgKiBgYXNzZXRgOiBgVmVyc2lvbmVkQXNzZXRJZGAuAExxdWVyeV9kZWxpdmVyeV9mZWVzDCxkZXN0aW5hdGlvbqkBHG1lc3NhZ2UxAiBhc3NldF9pZKED4RAoYCBRdWVyeSBkZWxpdmVyeSBmZWVzIFYyLgAdASBHZXQgZGVsaXZlcnkgZmVlcyBmb3Igc2VuZGluZyBhIHNwZWNpZmljIGBtZXNzYWdlYCB0byBhIGBkZXN0aW5hdGlvbmAu9CBUaGVzZSBhbHdheXMgY29tZSBpbiBhIHNwZWNpZmljIGFzc2V0LCBkZWZpbmVkIGJ5IHRoZSBjaGFpbi4AMCAjIEFyZ3VtZW50c4EBICogYG1lc3NhZ2VgOiBUaGUgbWVzc2FnZSB0aGF0J2xsIGJlIHNlbnQsIG5lY2Vzc2FyeSBiZWNhdXNlIG1vc3QgZGVsaXZlcnkgZmVlcyBhcmUgYmFzZWQgb24gdGhlXCAgIHNpemUgb2YgdGhlIG1lc3NhZ2UuYQEgKiBgZGVzdGluYXRpb25gOiBUaGUgZGVzdGluYXRpb24gdG8gc2VuZCB0aGUgbWVzc2FnZSB0by4gRGlmZmVyZW50IGRlc3RpbmF0aW9ucyBtYXkgdXNlwCAgIGRpZmZlcmVudCBzZW5kZXJzIHRoYXQgY2hhcmdlIGRpZmZlcmVudCBmZWVzLgAscCBBIHRyYWl0IG9mIFhDTSBwYXltZW50IEFQSS4AqCBBUEkgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3Igb2J0YWluaW5nOgDEICogdGhlIHdlaWdodCByZXF1aXJlZCB0byBleGVjdXRlIGFuIFhDTSBtZXNzYWdlLAUBICogYSBsaXN0IG9mIGFjY2VwdGFibGUgYEFzc2V0SWRgcyBmb3IgbWVzc2FnZSBleGVjdXRpb24gcGF5bWVudCwBASAqIHRoZSBjb3N0IG9mIHRoZSB3ZWlnaHQgaW4gdGhlIHNwZWNpZmllZCBhY2NlcHRhYmxlIGBBc3NldElkYC6gICogdGhlIGZlZXMgZm9yIGFuIFhDTSBtZXNzYWdlIGRlbGl2ZXJ5LgDwIFRvIGRldGVybWluZSB0aGUgZXhlY3V0aW9uIHdlaWdodCBvZiB0aGUgY2FsbHMgcmVxdWlyZWQgZm9ydQEgW2B4Y206OmxhdGVzdDo6SW5zdHJ1Y3Rpb246OlRyYW5zYWN0YF0gaW5zdHJ1Y3Rpb24sIGBUcmFuc2FjdGlvblBheW1lbnRDYWxsQXBpYCBjYW4gYmUgdXNlZC4IACREcnlSdW5BcGkIMGRyeV9ydW5fY2FsbAwYb3JpZ2lu1QMQY2FsbCBMcmVzdWx0X3hjbXNfdmVyc2lvbjjlEAREIERyeSBydW4gY2FsbCBWMi4ALGRyeV9ydW5feGNtCDxvcmlnaW5fbG9jYXRpb26pAQx4Y21xAwURBFAgRHJ5IHJ1biBYQ00gcHJvZ3JhbQAksQEgQVBJIGZvciBkcnktcnVubmluZyBleHRyaW5zaWNzIGFuZCBYQ00gcHJvZ3JhbXMgdG8gZ2V0IHRoZSBwcm9ncmFtcyB0aGF0IG5lZWQgdG8gYmUgcGFzc2VkIHRvIHRoZSBmZWVzIEFQSS4AgQEgQWxsIGNhbGxzIHJldHVybiBhIHZlY3RvciBvZiB0dXBsZXMgKGxvY2F0aW9uLCB4Y20pIHdoZXJlIGVhY2ggInhjbSIgaXMgZXhlY3V0ZWQgaW4gImxvY2F0aW9uIi7kIElmIHRoZXJlJ3MgbG9jYWwgZXhlY3V0aW9uLCB0aGUgbG9jYXRpb24gd2lsbCBiZSAiSGVyZSIuHQEgVGhpcyB2ZWN0b3IgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIGJvdGggZXhlY3V0aW9uIGFuZCBkZWxpdmVyeSBmZWVzLgCZASBDYWxscyBvciBYQ01zIG1pZ2h0IGZhaWwgd2hlbiBleGVjdXRlZCwgdGhpcyBkb2Vzbid0IG1lYW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjYWxscyB3aWxsIGJlIGFuIGBFcnJgLmUBIEluIHRob3NlIGNhc2VzLCB0aGVyZSBtaWdodCBzdGlsbCBiZSBhIHZhbGlkIHJlc3VsdCwgd2l0aCB0aGUgZXhlY3V0aW9uIGVycm9yIGluc2lkZSBpdC5lASBUaGUgb25seSByZWFzb25zIHdoeSB0aGVzZSBjYWxscyBtaWdodCByZXR1cm4gYW4gZXJyb3IgYXJlIGxpc3RlZCBpbiB0aGUgW2BFcnJvcmBdIGVudW0uCABQTG9jYXRpb25Ub0FjY291bnRBcGkEQGNvbnZlcnRfbG9jYXRpb24EIGxvY2F0aW9uqQENEQSQIENvbnZlcnRzIGBMb2NhdGlvbmAgdG8gYEFjY291bnRJZGAuAAQNASBBUEkgZm9yIHVzZWZ1bCBjb252ZXJzaW9ucyBiZXR3ZWVuIFhDTSBgTG9jYXRpb25gIGFuZCBgQWNjb3VudElkYC4EADxUcnVzdGVkUXVlcnlBcGkISGlzX3RydXN0ZWRfcmVzZXJ2ZQgUYXNzZXQVESBsb2NhdGlvbqkBGREU8CBSZXR1cm5zIGlmIHRoZSBsb2NhdGlvbiBpcyBhIHRydXN0ZWQgcmVzZXJ2ZSBmb3IgdGhlIGFzc2V0LgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAFRpc190cnVzdGVkX3RlbGVwb3J0ZXIIFGFzc2V0FREgbG9jYXRpb26pARkRFOAgUmV0dXJucyBpZiB0aGUgYXNzZXQgY2FuIGJlIHRlbGVwb3J0ZWQgdG8gdGhlIGxvY2F0aW9uLgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAATsIEFQSSBmb3IgcXVlcnlpbmcgdHJ1c3RlZCByZXNlcnZlcyBhbmQgdHJ1c3RlZCB0ZWxlcG9ydGVycy4EAFRBdXRob3JpemVkQWxpYXNlcnNBcGkITGF1dGhvcml6ZWRfYWxpYXNlcnMEGHRhcmdldKkBIREE9CBSZXR1cm5zIGxvY2F0aW9ucyBhbGxvd2VkIHRvIGFsaWFzIGludG8gYW5kIGFjdCBhcyBgdGFyZ2V0YC4ATGlzX2F1dGhvcml6ZWRfYWxpYXMIGG9yaWdpbqkBGHRhcmdldKkBKREEHQEgUmV0dXJucyB3aGV0aGVyIGBvcmlnaW5gIGlzIGFsbG93ZWQgdG8gYWxpYXMgaW50byBhbmQgYWN0IGFzIGB0YXJnZXRgLgAEoCBBUEkgZm9yIHF1ZXJ5aW5nIFhDTSBhdXRob3JpemVkIGFsaWFzZXMEADBGdW5naWJsZXNBcGkEWHF1ZXJ5X2FjY291bnRfYmFsYW5jZXMEHGFjY291bnQELREE7CBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBbYEFzc2V0YF0gdGhhdCBhbiBgQWNjb3VudElkYCBoYXMuAATYIFRoZSBBUEkgZm9yIHF1ZXJ5aW5nIGFjY291bnQncyBiYWxhbmNlcyBmcm9tIHJ1bnRpbWUuCABQQ29sbGVjdENvbGxhdGlvbkluZm8EWGNvbGxlY3RfY29sbGF0aW9uX2luZm8EGGhlYWRlclw1ERCcIENvbGxlY3QgaW5mb3JtYXRpb24gYWJvdXQgYSBjb2xsYXRpb24uAPQgVGhlIGdpdmVuIGBoZWFkZXJgIGlzIHRoZSBoZWFkZXIgb2YgdGhlIGJ1aWx0IGJsb2NrIGZvciB0aGF0qCB3ZSBhcmUgY29sbGVjdGluZyB0aGUgY29sbGF0aW9uIGluZm8gZm9yLgAU2CBSdW50aW1lIGFwaSB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sbGF0aW9uLgBEIFZlcnNpb24gaGlzdG9yeToBASAtIFZlcnNpb24gMjogQ2hhbmdlZCBbYFNlbGY6OmNvbGxlY3RfY29sbGF0aW9uX2luZm9gXSBzaWduYXR1cmU1ASAtIFZlcnNpb24gMzogU2lnbmFscyB0byB0aGUgbm9kZSB0byB1c2UgdmVyc2lvbiAxIG9mIFtgUGFyYWNoYWluQmxvY2tEYXRhYF0uDAA4R2VuZXNpc0J1aWxkZXIMLGJ1aWxkX3N0YXRlBBBqc29uGEERKGUBIEJ1aWxkIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZnJvbSBhIEpTT04gYmxvYiBub3QgdXNpbmcgYW55IGRlZmF1bHRzIGFuZCBzdG9yZSBpdCBpbiB0aGUkIHN0b3JhZ2UuACkBIEluIHRoZSBjYXNlIG9mIGEgRlJBTUUtYmFzZWQgcnVudGltZSwgdGhpcyBmdW5jdGlvbiBkZXNlcmlhbGl6ZXMgdGhlIGZ1bGxVASBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gdGhlIGdpdmVuIEpTT04gYmxvYiBhbmQgcHV0cyBpdCBpbnRvIHRoZSBzdG9yYWdlLiBJZiB0aGVVASBwcm92aWRlZCBKU09OIGJsb2IgaXMgaW5jb3JyZWN0IG9yIGluY29tcGxldGUgb3IgdGhlIGRlc2VyaWFsaXphdGlvbiBmYWlscywgYW4gZXJyb3I0IGlzIHJldHVybmVkLgBdASBQbGVhc2Ugbm90ZSB0aGF0IHByb3ZpZGVkIEpTT04gYmxvYiBtdXN0IGNvbnRhaW4gYWxsIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZmllbGRzLCBub1wgZGVmYXVsdHMgd2lsbCBiZSB1c2VkLgAoZ2V0X3ByZXNldAQIaWRFEUkBOGEBIFJldHVybnMgYSBKU09OIGJsb2IgcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgaWRlbnRpZmllZCBieRggYGlkYC4AVQEgSWYgYGlkYCBpcyBgTm9uZWAgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gSlNPTiBibG9iIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkZWZhdWx0SQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBzdHJ1Y3Qgb2YgdGhlIHJ1bnRpbWUuIEltcGxlbWVudGF0aW9uIG11c3QgcHJvdmlkZSBkZWZhdWx0YCBgUnVudGltZUdlbmVzaXNDb25maWdgLgAhASBPdGhlcndpc2UgZnVuY3Rpb24gcmV0dXJucyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluLCBuYW1lZFEBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0IGlkZW50aWZpZWQgYnkgYGlkYCwgb3IgYE5vbmVgIGlmIHN1Y2ggcHJlc2V0IGRvZXMgbm90YQEgZXhpc3QuIFJldHVybmVkIGBWZWM8dTg+YCBjb250YWlucyBieXRlcyBvZiBKU09OIGJsb2IgKHBhdGNoKSB3aGljaCBjb21wcmlzZXMgYSBsaXN0IG9mTQEgKHBvdGVudGlhbGx5IG5lc3RlZCkga2V5LXZhbHVlIHBhaXJzIHRoYXQgYXJlIGludGVuZGVkIGZvciBjdXN0b21pemluZyB0aGUgZGVmYXVsdGUBIHJ1bnRpbWUgZ2VuZXNpcyBjb25maWcuIFRoZSBwYXRjaCBzaGFsbCBiZSBtZXJnZWQgKHJmYzczODYpIHdpdGggdGhlIEpTT04gcmVwcmVzZW50YXRpb25hASBvZiB0aGUgZGVmYXVsdCBgUnVudGltZUdlbmVzaXNDb25maWdgIHRvIGNyZWF0ZSBhIGNvbXByZWhlbnNpdmUgZ2VuZXNpcyBjb25maWcgdGhhdCBjYW6EIGJlIHVzZWQgaW4gYGJ1aWxkX3N0YXRlYCBtZXRob2QuADBwcmVzZXRfbmFtZXMASREQUQEgUmV0dXJucyBhIGxpc3Qgb2YgaWRlbnRpZmllcnMgZm9yIGF2YWlsYWJsZSBidWlsdGluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0cy4AYQEgVGhlIHByZXNldHMgZnJvbSB0aGUgbGlzdCBjYW4gYmUgcXVlcmllZCB3aXRoIFtgR2VuZXNpc0J1aWxkZXI6OmdldF9wcmVzZXRgXSBtZXRob2QuIElmAQEgbm8gbmFtZWQgcHJlc2V0cyBhcmUgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWUgdGhlIGxpc3QgaXMgZW1wdHkuAATwIEFQSSB0byBpbnRlcmFjdCB3aXRoIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZm9yIHRoZSBydW50aW1lBABIQXNzZXRDb252ZXJzaW9uQXBpDIxxdW90ZV9wcmljZV90b2tlbnNfZm9yX2V4YWN0X3Rva2VucxAYYXNzZXQx/QEYYXNzZXQy/QEYYW1vdW50VQEsaW5jbHVkZV9mZWVZAUUEEPwgUHJvdmlkZXMgYSBxdW90ZSBmb3IgW2BQYWxsZXQ6OnN3YXBfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnNgXS4AOQEgTm90ZSB0aGF0IHRoZSBwcmljZSBtYXkgaGF2ZSBjaGFuZ2VkIGJ5IHRoZSB0aW1lIHRoZSB0cmFuc2FjdGlvbiBpcyBleGVjdXRlZC6sIChVc2UgYGFtb3VudF9pbl9tYXhgIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKQCMcXVvdGVfcHJpY2VfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnMQGGFzc2V0Mf0BGGFzc2V0Mv0BGGFtb3VudFUBLGluY2x1ZGVfZmVlWQFFBBD8IFByb3ZpZGVzIGEgcXVvdGUgZm9yIFtgUGFsbGV0Ojpzd2FwX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zYF0uADkBIE5vdGUgdGhhdCB0aGUgcHJpY2UgbWF5IGhhdmUgY2hhbmdlZCBieSB0aGUgdGltZSB0aGUgdHJhbnNhY3Rpb24gaXMgZXhlY3V0ZWQusCAoVXNlIGBhbW91bnRfb3V0X21pbmAgdG8gY29udHJvbCBzbGlwcGFnZS4pADBnZXRfcmVzZXJ2ZXMIGGFzc2V0Mf0BGGFzc2V0Mv0BTREEBQEgUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbGlxdWlkaXR5IHBvb2wgZm9yIHRoZSBnaXZlbiBhc3NldCBwYWlyLgAIIQEgVGhpcyBydW50aW1lIGFwaSBhbGxvd3MgcGVvcGxlIHRvIHF1ZXJ5IHRoZSBzaXplIG9mIHRoZSBsaXF1aWRpdHkgcG9vbHNwIGFuZCBxdW90ZSBwcmljZXMgZm9yIHN3YXBzLgQAQEdldFBhcmFjaGFpbkluZm8EMHBhcmFjaGFpbl9pZACcBLAgUmV0cmlldmUgdGhlIHBhcmFjaGFpbiBpZCB1c2VkIGZvciBydW50aW1lLgAEDQEgUnVudGltZSBhcGkgdXNlZCB0byBhY2Nlc3MgZ2VuZXJhbCBpbmZvIGFib3V0IGEgcGFyYWNoYWluIHJ1bnRpbWUuBABITm9taW5hdGlvblBvb2xzQXBpKDxwZW5kaW5nX3Jld2FyZHMEDHdobwRVAQQ1ASBSZXR1cm5zIHRoZSBwZW5kaW5nIHJld2FyZHMgZm9yIHRoZSBtZW1iZXIgdGhhdCB0aGUgQWNjb3VudElkIHdhcyBnaXZlbiBmb3IuAERwb2ludHNfdG9fYmFsYW5jZQgccG9vbF9pZDgYcG9pbnRzVQFVAQT0IFJldHVybnMgdGhlIGVxdWl2YWxlbnQgYmFsYW5jZSBvZiBgcG9pbnRzYCBmb3IgYSBnaXZlbiBwb29sLgBEYmFsYW5jZV90b19wb2ludHMIHHBvb2xfaWQ4JG5ld19mdW5kc1UBVQEE/CBSZXR1cm5zIHRoZSBlcXVpdmFsZW50IHBvaW50cyBvZiBgbmV3X2Z1bmRzYCBmb3IgYSBnaXZlbiBwb29sLgBIcG9vbF9wZW5kaW5nX3NsYXNoBBxwb29sX2lkOFUBBLAgUmV0dXJucyB0aGUgcGVuZGluZyBzbGFzaCBmb3IgYSBnaXZlbiBwb29sLgBQbWVtYmVyX3BlbmRpbmdfc2xhc2gEGG1lbWJlcgRVARDMIFJldHVybnMgdGhlIHBlbmRpbmcgc2xhc2ggZm9yIGEgZ2l2ZW4gcG9vbCBtZW1iZXIuAE0BIElmIHBlbmRpbmcgc2xhc2ggb2YgdGhlIG1lbWJlciBleGNlZWRzIGBFeGlzdGVudGlhbERlcG9zaXRgLCBpdCBjYW4gYmUgcmVwb3J0ZWQgb24cIGNoYWluLgB0cG9vbF9uZWVkc19kZWxlZ2F0ZV9taWdyYXRpb24EHHBvb2xfaWQ4WQEg5CBSZXR1cm5zIHRydWUgaWYgdGhlIHBvb2wgd2l0aCBgcG9vbF9pZGAgbmVlZHMgbWlncmF0aW9uLgBJASBUaGlzIGNhbiBoYXBwZW4gd2hlbiB0aGUgYHBhbGxldC1ub21pbmF0aW9uLXBvb2xzYCBoYXMgc3dpdGNoZWQgdG8gdXNpbmcgc3RyYXRlZ3lBASBbYERlbGVnYXRlU3Rha2VgXShwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6YWRhcHRlcjo6RGVsZWdhdGVTdGFrZSkgYnV0IHRoZSBwb29s6CBzdGlsbCBoYXMgZnVuZHMgdGhhdCB3ZXJlIHN0YWtlZCB1c2luZyB0aGUgb2xkZXIgc3RyYXRlZ3kZASBbVHJhbnNmZXJTdGFrZV0ocGFsbGV0X25vbWluYXRpb25fcG9vbHM6OmFkYXB0ZXI6OlRyYW5zZmVyU3Rha2UpLiBVc2WJASBbYG1pZ3JhdGVfcG9vbF90b19kZWxlZ2F0ZV9zdGFrZWBdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpDYWxsOjptaWdyYXRlX3Bvb2xfdG9fZGVsZWdhdGVfc3Rha2UpVCB0byBtaWdyYXRlIHRoZSBwb29sLgB8bWVtYmVyX25lZWRzX2RlbGVnYXRlX21pZ3JhdGlvbgQYbWVtYmVyBFkBHCkBIFJldHVybnMgdHJ1ZSBpZiB0aGUgZGVsZWdhdGVkIGZ1bmRzIG9mIHRoZSBwb29sIGBtZW1iZXJgIG5lZWRzIG1pZ3JhdGlvbi4A2CBPbmNlIGEgcG9vbCBoYXMgc3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkIHRvIHRoZSBzdHJhdGVneVUBIFtgRGVsZWdhdGVTdGFrZWBdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjphZGFwdGVyOjpEZWxlZ2F0ZVN0YWtlKSwgdGhlIGZ1bmRzIG9mIHRoZRkBIG1lbWJlciBjYW4gYmUgbWlncmF0ZWQgZnJvbSBwb29sIGFjY291bnQgdG8gdGhlIG1lbWJlcidzIGFjY291bnQuIFVzZSkBIFtgbWlncmF0ZV9kZWxlZ2F0aW9uYF0ocGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkNhbGw6Om1pZ3JhdGVfZGVsZWdhdGlvbimkIHRvIG1pZ3JhdGUgdGhlIGZ1bmRzIG9mIHRoZSBwb29sIG1lbWJlci4AUG1lbWJlcl90b3RhbF9iYWxhbmNlBAx3aG8EVQEEZQEgUmV0dXJucyB0aGUgdG90YWwgY29udHJpYnV0aW9uIG9mIGEgcG9vbCBtZW1iZXIgaW5jbHVkaW5nIGFueSBiYWxhbmNlIHRoYXQgaXMgdW5ib25kaW5nLgAwcG9vbF9iYWxhbmNlBBxwb29sX2lkOFUBBJwgVG90YWwgYmFsYW5jZSBjb250cmlidXRlZCB0byB0aGUgcG9vbC4ANHBvb2xfYWNjb3VudHMEHHBvb2xfaWQ4pQ8ELQEgUmV0dXJucyB0aGUgYm9uZGVkIGFjY291bnQgYW5kIHJld2FyZCBhY2NvdW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgcG9vbF9pZC4ABPggUnVudGltZSBhcGkgZm9yIGFjY2Vzc2luZyBpbmZvcm1hdGlvbiBhYm91dCBub21pbmF0aW9uIHBvb2xzLgQAKFN0YWtpbmdBcGkMRG5vbWluYXRpb25zX3F1b3RhBBxiYWxhbmNlVQE4BBEBIFJldHVybnMgdGhlIG5vbWluYXRpb25zIHF1b3RhIGZvciBhIG5vbWluYXRvciB3aXRoIGEgZ2l2ZW4gYmFsYW5jZS4AXGVyYXNfc3Rha2Vyc19wYWdlX2NvdW50CAxlcmE4HGFjY291bnQEOAQ5ASBSZXR1cm5zIHRoZSBwYWdlIGNvdW50IG9mIGV4cG9zdXJlcyBmb3IgYSB2YWxpZGF0b3IgYGFjY291bnRgIGluIGEgZ2l2ZW4gZXJhLgA8cGVuZGluZ19yZXdhcmRzCAxlcmE4HGFjY291bnQEWQEERQEgUmV0dXJucyB0cnVlIGlmIGEgdmFsaWRhdG9yIGBhY2NvdW50YCBoYXMgcGFnZXMgdG8gYmUgY2xhaW1lZCBmb3IgdGhlIGdpdmVuIGVyYS4AAAQAJEluZmxhdGlvbgSUZXhwZXJpbWVudGFsX2lzc3VhbmNlX3ByZWRpY3Rpb25faW5mbwBRERDUIFJldHVybiB0aGUgY3VycmVudCBlc3RpbWF0ZXMgb2YgdGhlIGlzc3VhbmNlIGFtb3VudC4AUQEgVGhpcyBpcyBtYXJrZWQgYXMgZXhwZXJpbWVudGFsIGluIGxpZ2h0IG9mIFJGQyM4OS4gTm9uZXRoZWxlc3MsIGl0cyB1c2FnZSBpcyBoaWdobHklASByZWNvbW1lbmRlZCBvdmVyIHRyeWluZyB0byByZWFkLXN0b3JhZ2UsIG9yIHJlLWNyZWF0ZSB0aGUgb25jaGFpbiBsb2dpYy4AAAQAJFJldml2ZUFwaWwkZXRoX2Jsb2NrALUPDHwgUmV0dXJucyB0aGUgY3VycmVudCBFVEggYmxvY2suALggVGhpcyBpcyBvbmUgYmxvY2sgYmVoaW5kIHRoZSBzdWJzdHJhdGUgYmxvY2suADhldGhfYmxvY2tfaGFzaAQYbnVtYmVyPQf1BATcIFJldHVybnMgdGhlIEVUSCBibG9jayBoYXNoIGZvciB0aGUgZ2l2ZW4gYmxvY2sgbnVtYmVyLgBAZXRoX3JlY2VpcHRfZGF0YQAhEBQRASBUaGUgZGV0YWlscyBuZWVkZWQgdG8gcmVjb25zdHJ1Y3QgdGhlIHJlY2VpcHQgaW5mb3JtYXRpb24gb2ZmY2hhaW4uABwgIyBOb3RlAFUBIEVhY2ggZW50cnkgY29ycmVzcG9uZHMgdG8gdGhlIGFwcHJvcHJpYXRlIEV0aGVyZXVtIHRyYW5zYWN0aW9uIGluIHRoZSBjdXJyZW50IGJsb2NrLgA8YmxvY2tfZ2FzX2xpbWl0AD0HBHQgUmV0dXJucyB0aGUgYmxvY2sgZ2FzIGxpbWl0LgBsbWF4X2V4dHJpbnNpY193ZWlnaHRfaW5fZ2FzAD0HBPAgUmV0dXJucyB0aGUgYmxvY2sgZ2FzIGxpbWl0IGFzIGNhbGN1bGF0ZWQgZnJvbSB0aGUgd2VpZ2h0cy4AHGJhbGFuY2UEHGFkZHJlc3M1Bz0HBDEBIFJldHVybnMgdGhlIGZyZWUgYmFsYW5jZSBvZiB0aGUgZ2l2ZW4gYFtIMTYwXWAgYWRkcmVzcywgdXNpbmcgRVZNIGRlY2ltYWxzLgAkZ2FzX3ByaWNlAD0HBFwgUmV0dXJucyB0aGUgZ2FzIHByaWNlLgAUbm9uY2UEHGFkZHJlc3M1BzgExCBSZXR1cm5zIHRoZSBub25jZSBvZiB0aGUgZ2l2ZW4gYFtIMTYwXWAgYWRkcmVzcy4AEGNhbGwYGG9yaWdpbgQQZGVzdDUHFHZhbHVlVQEkZ2FzX2xpbWl0DQFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0RQQoaW5wdXRfZGF0YRhZEQz0IFBlcmZvcm0gYSBjYWxsIGZyb20gYSBzcGVjaWZpZWQgYWNjb3VudCB0byBhIGdpdmVuIGNvbnRyYWN0LgCIIFNlZSBbYGNyYXRlOjpQYWxsZXQ6OmJhcmVfY2FsbGBdLgAsaW5zdGFudGlhdGUcGG9yaWdpbgQUdmFsdWVVASRnYXNfbGltaXQNAVRzdG9yYWdlX2RlcG9zaXRfbGltaXRFBBBjb2RlbREQZGF0YRgQc2FsdDkHcREMcCBJbnN0YW50aWF0ZSBhIG5ldyBjb250cmFjdC4ApCBTZWUgYFtjcmF0ZTo6UGFsbGV0OjpiYXJlX2luc3RhbnRpYXRlXWAuADBldGhfdHJhbnNhY3QECHR4fRGZERBoIFBlcmZvcm0gYW4gRXRoZXJldW0gY2FsbC4AlCBEZXByZWNhdGVkIHVzZSBgdjJgIHZlcnNpb24gaW5zdGVhZC6wIFNlZSBbYGNyYXRlOjpQYWxsZXQ6OmRyeV9ydW5fZXRoX3RyYW5zYWN0YF0AYGV0aF90cmFuc2FjdF93aXRoX2NvbmZpZwgIdHh9ERhjb25maWelEZkRDGggUGVyZm9ybSBhbiBFdGhlcmV1bSBjYWxsLgCwIFNlZSBbYGNyYXRlOjpQYWxsZXQ6OmRyeV9ydW5fZXRoX3RyYW5zYWN0YF0AQGV0aF9lc3RpbWF0ZV9nYXMICHR4fREYY29uZmlnpRHZERToIEVzdGltYXRlcyB0aGUgYW1vdW50IG9mIGdhcyB0aGF0IGEgdHJhbnNhY3Rpb25zIHJlcXVpcmVzLgBdASBUaGlzIGZ1bmN0aW9uIGVzdGltYXRlcyB0aGUgZ2FzIG9mIHRoZSB0cmFuc2FjdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHNhbWUgYmluYXJ5IHNlYXJjaFkBIGFsZ29yaXRobSB0aGF0J3MgaW1wbGVtZW50ZWQgaW4gR2V0aC4gSXQgc3RvcHMgd2hlbiB3aXRoIGFuIGFjY2VwdGFibGUgZXJyb3IgcmF0aW8gb2a0IDEuNSUgc28gdGhhdCB0aGUgYWxnb3JpdGhtIHRlcm1pbmF0ZXMgZWFybHkuAFxldGhfcHJlX2Rpc3BhdGNoX3dlaWdodAQIdHgY3REETQEgUmV0dXJuIHRoZSBwcmUtZGlzcGF0Y2ggd2VpZ2h0IGJvb2tlZCBmb3IgdGhlIHNpZ25lZCBFdGhlcmV1bSB0cmFuc2FjdGlvbiBwYXlsb2FkLgAsdXBsb2FkX2NvZGUMGG9yaWdpbgQQY29kZRhUc3RvcmFnZV9kZXBvc2l0X2xpbWl0RQThEQzoIFVwbG9hZCBuZXcgY29kZSB3aXRob3V0IGluc3RhbnRpYXRpbmcgYSBjb250cmFjdCBmcm9tIGl0LgCkIFNlZSBbYGNyYXRlOjpQYWxsZXQ6OmJhcmVfdXBsb2FkX2NvZGVgXS4ALGdldF9zdG9yYWdlCBxhZGRyZXNzNQcMa2V5COkRFLwgUXVlcnkgYSBnaXZlbiBzdG9yYWdlIGtleSBpbiBhIGdpdmVuIGNvbnRyYWN0LgBNASBSZXR1cm5zIGBPayhTb21lKFZlYzx1OD4pKWAgaWYgdGhlIHN0b3JhZ2UgdmFsdWUgZXhpc3RzIHVuZGVyIHRoZSBnaXZlbiBrZXkgaW4gdGhlYQEgc3BlY2lmaWVkIGFjY291bnQgYW5kIGBPayhOb25lKWAgaWYgaXQgZG9lc24ndC4gSWYgdGhlIGFjY291bnQgc3BlY2lmaWVkIGJ5IHRoZSBhZGRyZXNzCQEgZG9lc24ndCBleGlzdCwgb3IgZG9lc24ndCBoYXZlIGEgY29udHJhY3QgdGhlbiBgRXJyYCBpcyByZXR1cm5lZC4ATGdldF9zdG9yYWdlX3Zhcl9rZXkIHGFkZHJlc3M1BwxrZXkY6REU+CBRdWVyeSBhIGdpdmVuIHZhcmlhYmxlLXNpemVkIHN0b3JhZ2Uga2V5IGluIGEgZ2l2ZW4gY29udHJhY3QuAE0BIFJldHVybnMgYE9rKFNvbWUoVmVjPHU4PikpYCBpZiB0aGUgc3RvcmFnZSB2YWx1ZSBleGlzdHMgdW5kZXIgdGhlIGdpdmVuIGtleSBpbiB0aGVhASBzcGVjaWZpZWQgYWNjb3VudCBhbmQgYE9rKE5vbmUpYCBpZiBpdCBkb2Vzbid0LiBJZiB0aGUgYWNjb3VudCBzcGVjaWZpZWQgYnkgdGhlIGFkZHJlc3MJASBkb2Vzbid0IGV4aXN0LCBvciBkb2Vzbid0IGhhdmUgYSBjb250cmFjdCB0aGVuIGBFcnJgIGlzIHJldHVybmVkLgAsdHJhY2VfYmxvY2sIFGJsb2NrzQkYY29uZmln8RENEhgFASBUcmFjZXMgdGhlIGV4ZWN1dGlvbiBvZiBhbiBlbnRpcmUgYmxvY2sgYW5kIHJldHVybnMgY2FsbCB0cmFjZXMuAEEBIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIHRocm91Z2ggYHN0YXRlX2NhbGxgIHRvIHJlcGxheSB0aGUgYmxvY2sgZnJvbSB0aGU4IHBhcmVudCBibG9jay4AyCBTZWUgZXRoLXJwYyBgZGVidWdfdHJhY2VCbG9ja0J5TnVtYmVyYCBmb3IgdXNhZ2UuACB0cmFjZV90eAwUYmxvY2vNCSB0eF9pbmRleDgYY29uZmln8RFtEhj8IFRyYWNlcyB0aGUgZXhlY3V0aW9uIG9mIGEgc3BlY2lmaWMgdHJhbnNhY3Rpb24gd2l0aGluIGEgYmxvY2suAEEBIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIHRocm91Z2ggYHN0YXRlX2NhbGxgIHRvIHJlcGxheSB0aGUgYmxvY2sgZnJvbSB0aGWMIHBhcmVudCBoYXNoIHVwIHRvIHRoZSB0cmFuc2FjdGlvbi4AwCBTZWUgZXRoLXJwYyBgZGVidWdfdHJhY2VUcmFuc2FjdGlvbmAgZm9yIHVzYWdlLgAodHJhY2VfY2FsbAgIdHh9ERhjb25maWfxEXESDMAgRHJ5IHJ1biBhbmQgcmV0dXJuIHRoZSB0cmFjZSBvZiB0aGUgZ2l2ZW4gY2FsbC4ApCBTZWUgZXRoLXJwYyBgZGVidWdfdHJhY2VDYWxsYCBmb3IgdXNhZ2UuAFh0cmFjZV9jYWxsX3dpdGhfY29uZmlnDAh0eH0RLHRyYWNlcl90eXBl8REYY29uZmlndRJxEhQ5ASBEcnkgcnVuIGFuZCByZXR1cm4gdGhlIHRyYWNlIG9mIHRoZSBnaXZlbiBjYWxsIHdpdGggYWRkaXRpb25hbCBjb25maWd1cmF0aW9uLgBBASBMaWtlIFtgU2VsZjo6dHJhY2VfY2FsbGBdLCBidXQgYWNjZXB0cyBhIFtgVHJhY2luZ0NvbmZpZ2BdIHRoYXQgY2FuIGNhcnJ5IHN0YXRlRQEgb3ZlcnJpZGVzIGFuZCBmdXR1cmUgZXh0ZW5zaWJpbGl0eS4gVGhlIGNvbmZpZyBtdXN0IGJlIHRoZSAqKmxhc3QgYXJndW1lbnQqKiBmb3IFASBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSDigJQgc2VlIFtgVHJhY2luZ0NvbmZpZ2BdIGRvY3VtZW50YXRpb24uADBibG9ja19hdXRob3IANQcE+CBUaGUgYWRkcmVzcyBvZiB0aGUgdmFsaWRhdG9yIHRoYXQgcHJvZHVjZWQgdGhlIGN1cnJlbnQgYmxvY2suABxhZGRyZXNzBChhY2NvdW50X2lkBDUHBMwgR2V0IHRoZSBIMTYwIGFkZHJlc3MgYXNzb2NpYXRlZCB0byB0aGlzIGFjY291bnQgaWQAKGFjY291bnRfaWQEHGFkZHJlc3M1BwQE0CBHZXQgdGhlIGFjY291bnQgaWQgYXNzb2NpYXRlZCB0byB0aGlzIEgxNjAgYWRkcmVzcy4AXHJ1bnRpbWVfcGFsbGV0c19hZGRyZXNzADUHBPQgVGhlIGFkZHJlc3MgdXNlZCB0byBjYWxsIHRoZSBydW50aW1lJ3MgcGFsbGV0cyBkaXNwYXRjaGFibGVzABBjb2RlBBxhZGRyZXNzNQcYBBEBIFRoZSBjb2RlIGF0IHRoZSBzcGVjaWZpZWQgYWRkcmVzcyB0YWtpbmcgcHJlLWNvbXBpbGVzIGludG8gYWNjb3VudC4AVG5ld19iYWxhbmNlX3dpdGhfZHVzdAQcYmFsYW5jZT0HeRIEDQEgQ29uc3RydWN0IHRoZSBuZXcgYmFsYW5jZSBhbmQgZHVzdCBjb21wb25lbnRzIG9mIHRoaXMgRVZNIGJhbGFuY2UuAAS8IFRoZSBBUEkgdXNlZCB0byBkcnktcnVuIGNvbnRyYWN0IGludGVyYWN0aW9ucy4EACDBB4USAA==";
2
+
3
+ export { binMeta as default };