@parity/product-sdk-descriptors 0.6.0 → 0.6.2

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 (19) hide show
  1. package/chains/paseo-asset-hub/.papi/polkadot-api.json +1 -1
  2. package/chains/paseo-asset-hub/generated/dist/index.js +2 -2
  3. package/chains/paseo-asset-hub/generated/dist/{paseo_asset_hub_metadata-Bwy-Np0G.js → paseo_asset_hub_metadata-BeiFoQh7.js} +1 -1
  4. package/chains/summit-asset-hub/.papi/polkadot-api.json +1 -1
  5. package/chains/summit-asset-hub/generated/dist/index.js +2 -2
  6. package/chains/summit-asset-hub/generated/dist/{summit_asset_hub_metadata-Bwy-Np0G.js → summit_asset_hub_metadata-PvlcOpIm.js} +1 -1
  7. package/chains/summit-individuality/.papi/polkadot-api.json +1 -1
  8. package/chains/summit-individuality/generated/dist/common-types.d.ts +162 -990
  9. package/chains/summit-individuality/generated/dist/descriptors-DlbXAv0U.js +25 -0
  10. package/chains/summit-individuality/generated/dist/index.d.ts +1 -1
  11. package/chains/summit-individuality/generated/dist/index.js +5 -6
  12. package/chains/summit-individuality/generated/dist/metadataTypes-B3fJT8lX.js +3 -0
  13. package/chains/summit-individuality/generated/dist/metadataTypes.d.ts +1 -1
  14. package/chains/summit-individuality/generated/dist/summit_individuality.d.ts +61 -821
  15. package/chains/summit-individuality/generated/dist/summit_individuality_metadata-CoVMbneS.js +3 -0
  16. package/package.json +2 -2
  17. package/chains/summit-individuality/generated/dist/descriptors-DihYusb9.js +0 -25
  18. package/chains/summit-individuality/generated/dist/metadataTypes-CCylAJ0h.js +0 -3
  19. package/chains/summit-individuality/generated/dist/summit_individuality_metadata-CFgPN8CP.js +0 -3
@@ -1,3 +1,3 @@
1
- const binMeta = "bWV0YRC5EgAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lLFJ1bnRpbWVDYWxsAAHYGFN5c3RlbQQAJAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTeXN0ZW0sIFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAQAHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhY2hhaW5TeXN0ZW0sIFJ1bnRpbWU+AAEAJFRpbWVzdGFtcAQAsAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUaW1lc3RhbXAsIFJ1bnRpbWU+AAMANFBhcmFjaGFpbkluZm8EALgByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYWNoYWluSW5mbywgUnVudGltZT4ABAAgUHJlaW1hZ2UEALwBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UHJlaW1hZ2UsIFJ1bnRpbWU+AAUAJFNjaGVkdWxlcgQAxAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTY2hlZHVsZXIsIFJ1bnRpbWU+AAYAKFBhcmFtZXRlcnMEANABvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYW1ldGVycywgUnVudGltZT4ABwBQTXVsdGlCbG9ja01pZ3JhdGlvbnMEACUBAeUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tNaWdyYXRpb25zLCBSdW50aW1lPgAIACBCYWxhbmNlcwQATQEBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QmFsYW5jZXMsIFJ1bnRpbWU+AAoAHFZlc3RpbmcEAGUBAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFZlc3RpbmcsIFJ1bnRpbWU+AA4AGENsYWltcwQAbQEBrQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q2xhaW1zLCBSdW50aW1lPgAPAERDb2xsYXRvclNlbGVjdGlvbgQAkQEB2QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q29sbGF0b3JTZWxlY3Rpb24sIFJ1bnRpbWU+ABUAHFNlc3Npb24EAJUBAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFNlc3Npb24sIFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQAoQEBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8WGNtcFF1ZXVlLCBSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQApQEBwQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UG9sa2Fkb3RYY20sIFJ1bnRpbWU+AB8AKEN1bXVsdXNYY20EAKUDAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEN1bXVsdXNYY20sIFJ1bnRpbWU+ACAARFRvS3VzYW1hWGNtUm91dGVyBACpAwHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUb0t1c2FtYVhjbVJvdXRlciwgUnVudGltZT4AIgAwTWVzc2FnZVF1ZXVlBACtAwHFAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNZXNzYWdlUXVldWUsIFJ1bnRpbWU+ACMAYFNub3dicmlkZ2VTeXN0ZW1Gcm9udGVuZAQAtQMB9QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U25vd2JyaWRnZVN5c3RlbUZyb250ZW5kLCBSdW50aW1lPgAkABxVdGlsaXR5BADJAwGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxVdGlsaXR5LCBSdW50aW1lPgAoACBNdWx0aXNpZwQADQQBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlzaWcsIFJ1bnRpbWU+ACkAFFByb3h5BAAZBAGpAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQcm94eSwgUnVudGltZT4AKgAcSW5kaWNlcwQAJQQBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8SW5kaWNlcywgUnVudGltZT4AKwAYQXNzZXRzBAApBAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBc3NldHMsIFJ1bnRpbWU+ADIAHFVuaXF1ZXMEADUEAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFVuaXF1ZXMsIFJ1bnRpbWU+ADMAEE5mdHMEAE0EAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE5mdHMsIFJ1bnRpbWU+ADQANEZvcmVpZ25Bc3NldHMEAK0EAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEZvcmVpZ25Bc3NldHMsIFJ1bnRpbWU+ADUAKFBvb2xBc3NldHMEAL0EAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBvb2xBc3NldHMsIFJ1bnRpbWU+ADYAPEFzc2V0Q29udmVyc2lvbgQAwQQB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QXNzZXRDb252ZXJzaW9uLCBSdW50aW1lPgA3ACBUcmVhc3VyeQQAyQQBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VHJlYXN1cnksIFJ1bnRpbWU+ADwAQENvbnZpY3Rpb25Wb3RpbmcEANUEAdUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvbnZpY3Rpb25Wb3RpbmcsIFJ1bnRpbWU+AD0AJFJlZmVyZW5kYQQA6QQBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UmVmZXJlbmRhLCBSdW50aW1lPgA+ACRXaGl0ZWxpc3QEAP0EAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFdoaXRlbGlzdCwgUnVudGltZT4AQAAgQm91bnRpZXMEAAEFAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEJvdW50aWVzLCBSdW50aW1lPgBBADRDaGlsZEJvdW50aWVzBAAFBQHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDaGlsZEJvdW50aWVzLCBSdW50aW1lPgBCACRBc3NldFJhdGUEAAkFAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFzc2V0UmF0ZSwgUnVudGltZT4AQwBITXVsdGlBc3NldEJvdW50aWVzBAARBQHdAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUFzc2V0Qm91bnRpZXMsIFJ1bnRpbWU+AEQADERhcAQAFQUBoQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8RGFwLCBSdW50aW1lPgBFAEhTdGF0ZVRyaWVNaWdyYXRpb24EAC0FAd0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN0YXRlVHJpZU1pZ3JhdGlvbiwgUnVudGltZT4ARgA8Tm9taW5hdGlvblBvb2xzBABFBQHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxOb21pbmF0aW9uUG9vbHMsIFJ1bnRpbWU+AFAAJFZvdGVyTGlzdAQAeQUBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Vm90ZXJMaXN0LCBSdW50aW1lPgBSADxTdGFraW5nUmNDbGllbnQEAH0FAdEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN0YWtpbmdSY0NsaWVudCwgUnVudGltZT4AVABITXVsdGlCbG9ja0VsZWN0aW9uBAChBQHdAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUJsb2NrRWxlY3Rpb24sIFJ1bnRpbWU+AFUAaE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyBADVBQH9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUJsb2NrRWxlY3Rpb25WZXJpZmllciwgUnVudGltZT4AVgBoTXVsdGlCbG9ja0VsZWN0aW9uVW5zaWduZWQEANkFAf0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tFbGVjdGlvblVuc2lnbmVkLCBSdW50aW1lPgBXAGBNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQEALEGAfUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZCwgUnVudGltZT4AWAAcU3Rha2luZwQAuQYBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3Rha2luZywgUnVudGltZT4AWQBETWVtYmVyc1N1YnNjcmliZXIEAAUHAdkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1lbWJlcnNTdWJzY3JpYmVyLCBSdW50aW1lPgBhADRBbGlhc0FjY291bnRzBAApBwHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBbGlhc0FjY291bnRzLCBSdW50aW1lPgBiABBQZ2FzBAAxBwGlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQZ2FzLCBSdW50aW1lPgBjABhSZXZpdmUEADUHAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFJldml2ZSwgUnVudGltZT4AZAAwRG90bnNHYXRld2F5BABJBwHFAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxEb3Ruc0dhdGV3YXksIFJ1bnRpbWU+AJgARE9yaWdpblJlc3RyaWN0aW9uBABdBwHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxPcmlnaW5SZXN0cmljdGlvbiwgUnVudGltZT4AmQAQU3VkbwQAZQcBpQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3VkbywgUnVudGltZT4A+wAAJAwwZnJhbWVfc3lzdGVtGHBhbGxldBBDYWxsBARUAAEsGHJlbWFyawQBGHJlbWFyaxgBHFZlYzx1OD4AAAxoTWFrZSBzb21lIG9uLWNoYWluIHJlbWFyay4AiENhbiBiZSBleGVjdXRlZCBieSBldmVyeSBgb3JpZ2luYC44c2V0X2hlYXBfcGFnZXMEARRwYWdlcygBDHU2NAABBPhTZXQgdGhlIG51bWJlciBvZiBwYWdlcyBpbiB0aGUgV2ViQXNzZW1ibHkgZW52aXJvbm1lbnQncyBoZWFwLiBzZXRfY29kZQQBEGNvZGUYARxWZWM8dTg+AAIEZFNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZS5cc2V0X2NvZGVfd2l0aG91dF9jaGVja3MEARBjb2RlGAEcVmVjPHU4PgADEBkBU2V0IHRoZSBuZXcgcnVudGltZSBjb2RlIHdpdGhvdXQgZG9pbmcgYW55IGNoZWNrcyBvZiB0aGUgZ2l2ZW4gYGNvZGVgLgBRAU5vdGUgdGhhdCBydW50aW1lIHVwZ3JhZGVzIHdpbGwgbm90IHJ1biBpZiB0aGlzIGlzIGNhbGxlZCB3aXRoIGEgbm90LWluY3JlYXNpbmcgc3BlYyB2ZXJzaW9uISxzZXRfc3RvcmFnZQQBFGl0ZW1zLAE0VmVjPEtleVZhbHVlPgAEBGhTZXQgc29tZSBpdGVtcyBvZiBzdG9yYWdlLjBraWxsX3N0b3JhZ2UEARBrZXlzNAEgVmVjPEtleT4ABQR0S2lsbCBzb21lIGl0ZW1zIGZyb20gc3RvcmFnZS4sa2lsbF9wcmVmaXgIARhwcmVmaXgYAQxLZXkAARxzdWJrZXlzOAEMdTMyAAYQEQFLaWxsIGFsbCBzdG9yYWdlIGl0ZW1zIHdpdGggYSBrZXkgdGhhdCBzdGFydHMgd2l0aCB0aGUgZ2l2ZW4gcHJlZml4LgA5ASoqTk9URToqKiBXZSByZWx5IG9uIHRoZSBSb290IG9yaWdpbiB0byBwcm92aWRlIHVzIHRoZSBudW1iZXIgb2Ygc3Via2V5cyB1bmRlcj0BdGhlIHByZWZpeCB3ZSBhcmUgcmVtb3ZpbmcgdG8gYWNjdXJhdGVseSBjYWxjdWxhdGUgdGhlIHdlaWdodCBvZiB0aGlzIGZ1bmN0aW9uLkRyZW1hcmtfd2l0aF9ldmVudAQBGHJlbWFyaxgBHFZlYzx1OD4ABwSkTWFrZSBzb21lIG9uLWNoYWluIHJlbWFyayBhbmQgZW1pdCBldmVudC5EYXV0aG9yaXplX3VwZ3JhZGUEASRjb2RlX2hhc2g8ARxUOjpIYXNoAAkQYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgB8VGhpcyBjYWxsIHJlcXVpcmVzIFJvb3Qgb3JpZ2luLoBhdXRob3JpemVfdXBncmFkZV93aXRob3V0X2NoZWNrcwQBJGNvZGVfaGFzaDwBHFQ6Okhhc2gACiBhAUF1dGhvcml6ZSBhbiB1cGdyYWRlIHRvIGEgZ2l2ZW4gYGNvZGVfaGFzaGAgZm9yIHRoZSBydW50aW1lLiBUaGUgcnVudGltZSBjYW4gYmUgc3VwcGxpZWQYbGF0ZXIuAF0BV0FSTklORzogVGhpcyBhdXRob3JpemVzIGFuIHVwZ3JhZGUgdGhhdCB3aWxsIHRha2UgcGxhY2Ugd2l0aG91dCBhbnkgc2FmZXR5IGNoZWNrcywgZm9yWQFleGFtcGxlIHRoYXQgdGhlIHNwZWMgbmFtZSByZW1haW5zIHRoZSBzYW1lIGFuZCB0aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBpbmNyZWFzZXMuIE5vdPByZWNvbW1lbmRlZCBmb3Igbm9ybWFsIHVzZS4gVXNlIGBhdXRob3JpemVfdXBncmFkZWAgaW5zdGVhZC4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi5gYXBwbHlfYXV0aG9yaXplZF91cGdyYWRlBAEQY29kZRgBHFZlYzx1OD4ACyRVAVByb3ZpZGUgdGhlIHByZWltYWdlIChydW50aW1lIGJpbmFyeSkgYGNvZGVgIGZvciBhbiB1cGdyYWRlIHRoYXQgaGFzIGJlZW4gYXV0aG9yaXplZC4ASQFJZiB0aGUgYXV0aG9yaXphdGlvbiByZXF1aXJlZCBhIHZlcnNpb24gY2hlY2ssIHRoaXMgY2FsbCB3aWxsIGVuc3VyZSB0aGUgc3BlYyBuYW1l6HJlbWFpbnMgdW5jaGFuZ2VkIGFuZCB0aGF0IHRoZSBzcGVjIHZlcnNpb24gaGFzIGluY3JlYXNlZC4AWQFEZXBlbmRpbmcgb24gdGhlIHJ1bnRpbWUncyBgT25TZXRDb2RlYCBjb25maWd1cmF0aW9uLCB0aGlzIGZ1bmN0aW9uIG1heSBkaXJlY3RseSBhcHBseREBdGhlIG5ldyBgY29kZWAgaW4gdGhlIHNhbWUgYmxvY2sgb3IgYXR0ZW1wdCB0byBzY2hlZHVsZSB0aGUgdXBncmFkZS4AYEFsbCBvcmlnaW5zIGFyZSBhbGxvd2VkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4oAAAFBgAsAAACMAAwAAAECBgYADQAAAIYADgAAAUFADwIPHByaW1pdGl2ZV90eXBlcxBIMjU2AAAEAAgBIFt1ODsgMzJdAABADHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBBDYWxsBARUAAEITHNldF92YWxpZGF0aW9uX2RhdGEIARBkYXRhRAFoQmFzaWNQYXJhY2hhaW5JbmhlcmVudERhdGEAAVRpbmJvdW5kX21lc3NhZ2VzX2RhdGF8AUxJbmJvdW5kTWVzc2FnZXNEYXRhAAAkgFNldCB0aGUgY3VycmVudCB2YWxpZGF0aW9uIGRhdGEuAEEBVGhpcyBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb26IcGhhc2UgaWYgdGhlIGNhbGwgd2FzIG5vdCBpbnZva2VkLgDQVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYEluaGVyZW50YAAhAUFzIGEgc2lkZSBlZmZlY3QsIHRoaXMgZnVuY3Rpb24gdXBncmFkZXMgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBmdW5jdGlvboRpZiB0aGUgYXBwcm9wcmlhdGUgdGltZSBoYXMgY29tZS5gc3Vkb19zZW5kX3Vwd2FyZF9tZXNzYWdlBAEcbWVzc2FnZRgBNFVwd2FyZE1lc3NhZ2UAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuRAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRoQmFzaWNQYXJhY2hhaW5JbmhlcmVudERhdGEAABABPHZhbGlkYXRpb25fZGF0YUgBXFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhAAFEcmVsYXlfY2hhaW5fc3RhdGVQAVRzcF90cmllOjpTdG9yYWdlUHJvb2YAAWByZWxheV9wYXJlbnRfZGVzY2VuZGFudHNYAUBWZWM8UmVsYXlIZWFkZXI+AAFAY29sbGF0b3JfcGVlcl9pZHQBWE9wdGlvbjxBcHByb3ZlZFBlZXJJZD4AAEgMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlcUGVyc2lzdGVkVmFsaWRhdGlvbkRhdGEIBEgBPAROATgAEAEscGFyZW50X2hlYWRMASBIZWFkRGF0YQABTHJlbGF5X3BhcmVudF9udW1iZXI4AQROAAFkcmVsYXlfcGFyZW50X3N0b3JhZ2Vfcm9vdDwBBEgAATBtYXhfcG92X3NpemU4AQx1MzIAAEwMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMgSGVhZERhdGEAAAQAGAEcVmVjPHU4PgAAUAwcc3BfdHJpZTRzdG9yYWdlX3Byb29mMFN0b3JhZ2VQcm9vZgAABAEodHJpZV9ub2Rlc1QBREJUcmVlU2V0PFZlYzx1OD4+AABUBCBCVHJlZVNldAQEVAEYAAQANAAAAFgAAAJcAFwQKHNwX3J1bnRpbWUcZ2VuZXJpYxhoZWFkZXIYSGVhZGVyCBhOdW1iZXIBOBBIYXNoAAAUASxwYXJlbnRfaGFzaDwBMEhhc2g6Ok91dHB1dAABGG51bWJlcmABGE51bWJlcgABKHN0YXRlX3Jvb3Q8ATBIYXNoOjpPdXRwdXQAATxleHRyaW5zaWNzX3Jvb3Q8ATBIYXNoOjpPdXRwdXQAARhkaWdlc3RkARhEaWdlc3QAAGAAAAY4AGQQKHNwX3J1bnRpbWUcZ2VuZXJpYxhkaWdlc3QYRGlnZXN0AAAEARBsb2dzaAE8VmVjPERpZ2VzdEl0ZW0+AABoAAACbABsEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0KERpZ2VzdEl0ZW0AARQoUHJlUnVudGltZQgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABgAkQ29uc2Vuc3VzCABwAURDb25zZW5zdXNFbmdpbmVJZAAAGAEcVmVjPHU4PgAEABBTZWFsCABwAURDb25zZW5zdXNFbmdpbmVJZAAAGAEcVmVjPHU4PgAFABRPdGhlcgQAGAEcVmVjPHU4PgAAAGRSdW50aW1lRW52aXJvbm1lbnRVcGRhdGVkAAgAAHAAAAMEAAAADAB0BBhPcHRpb24EBFQBeAEIEE5vbmUAAAAQU29tZQQAeAAAAQAAeAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAHwMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50TEluYm91bmRNZXNzYWdlc0RhdGEAAAgBRGRvd253YXJkX21lc3NhZ2VzgAF8QWJyaWRnZWRJbmJvdW5kRG93bndhcmRNZXNzYWdlcwABTGhvcml6b250YWxfbWVzc2FnZXOUAWxBYnJpZGdlZEluYm91bmRIcm1wTWVzc2FnZXMAAIAMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50hEFicmlkZ2VkSW5ib3VuZE1lc3NhZ2VzQ29sbGVjdGlvbgQcTWVzc2FnZQGEAAgBNGZ1bGxfbWVzc2FnZXOIATBWZWM8TWVzc2FnZT4AATxoYXNoZWRfbWVzc2FnZXOMAXxWZWM8TWVzc2FnZTo6Q29tcHJlc3NlZE1lc3NhZ2U+AACECGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNYSW5ib3VuZERvd253YXJkTWVzc2FnZQQsQmxvY2tOdW1iZXIBOAAIARxzZW50X2F0OAEsQmxvY2tOdW1iZXIAAQxtc2cYATxEb3dud2FyZE1lc3NhZ2UAAIgAAAKEAIwAAAKQAJAIlGN1bXVsdXNfcHJpbWl0aXZlc19wYXJhY2hhaW5faW5oZXJlbnQ0SGFzaGVkTWVzc2FnZQAACAEcc2VudF9hdDgBVFJlbGF5Q2hhaW5CbG9ja051bWJlcgABIG1zZ19oYXNoPAE0c3BfY29yZTo6SDI1NgAAlAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnSEQWJyaWRnZWRJbmJvdW5kTWVzc2FnZXNDb2xsZWN0aW9uBBxNZXNzYWdlAZgACAE0ZnVsbF9tZXNzYWdlc6QBMFZlYzxNZXNzYWdlPgABPGhhc2hlZF9tZXNzYWdlc6gBfFZlYzxNZXNzYWdlOjpDb21wcmVzc2VkTWVzc2FnZT4AAJgAAAQInKAAnAx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlcwhJZAAABAA4AQx1MzIAAKAIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0hJbmJvdW5kSHJtcE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEQZGF0YRgBTGFsbG9jOjp2ZWM6OlZlYzx1OD4AAKQAAAKYAKgAAAKsAKwAAAQInJAAsAxAcGFsbGV0X3RpbWVzdGFtcBhwYWxsZXQQQ2FsbAQEVAABBAxzZXQEAQxub3e0ASRUOjpNb21lbnQAAExUU2V0IHRoZSBjdXJyZW50IHRpbWUuAFUBVGhpcyBjYWxsIHNob3VsZCBiZSBpbnZva2VkIGV4YWN0bHkgb25jZSBwZXIgYmxvY2suIEl0IHdpbGwgcGFuaWMgYXQgdGhlIGZpbmFsaXphdGlvbtRwaGFzZSwgaWYgdGhpcyBjYWxsIGhhc24ndCBiZWVuIGludm9rZWQgYnkgdGhhdCB0aW1lLgBBAVRoZSB0aW1lc3RhbXAgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB0aGUgcHJldmlvdXMgb25lIGJ5IHRoZSBhbW91bnQgc3BlY2lmaWVkIGJ5aFtgQ29uZmlnOjpNaW5pbXVtUGVyaW9kYF0uAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfTm9uZV8uAFEBVGhpcyBkaXNwYXRjaCBjbGFzcyBpcyBfTWFuZGF0b3J5XyB0byBlbnN1cmUgaXQgZ2V0cyBleGVjdXRlZCBpbiB0aGUgYmxvY2suIEJlIGF3YXJlUQF0aGF0IGNoYW5naW5nIHRoZSBjb21wbGV4aXR5IG9mIHRoaXMgY2FsbCBjb3VsZCByZXN1bHQgZXhoYXVzdGluZyB0aGUgcmVzb3VyY2VzIGluIGGEYmxvY2sgdG8gZXhlY3V0ZSBhbnkgb3RoZXIgY2FsbHMuADQjIyBDb21wbGV4aXR5MQEtIGBPKDEpYCAoTm90ZSB0aGF0IGltcGxlbWVudGF0aW9ucyBvZiBgT25UaW1lc3RhbXBTZXRgIG11c3QgYWxzbyBiZSBgTygxKWApVQEtIDEgc3RvcmFnZSByZWFkIGFuZCAxIHN0b3JhZ2UgbXV0YXRpb24gKGNvZGVjIGBPKDEpYCBiZWNhdXNlIG9mIGBEaWRVcGRhdGU6OnRha2VgIGluQCAgYG9uX2ZpbmFsaXplYCnULSAxIGV2ZW50IGhhbmRsZXIgYG9uX3RpbWVzdGFtcF9zZXRgLiBNdXN0IGJlIGBPKDEpYC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMutAAABigAuAxYc3RhZ2luZ19wYXJhY2hhaW5faW5mbxhwYWxsZXQQQ2FsbAQEVAABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy68DDxwYWxsZXRfcHJlaW1hZ2UYcGFsbGV0EENhbGwEBFQAARQ0bm90ZV9wcmVpbWFnZQQBFGJ5dGVzGAEcVmVjPHU4PgAAEHRSZWdpc3RlciBhIHByZWltYWdlIG9uLWNoYWluLgBVAUlmIHRoZSBwcmVpbWFnZSB3YXMgcHJldmlvdXNseSByZXF1ZXN0ZWQsIG5vIGZlZXMgb3IgZGVwb3NpdHMgYXJlIHRha2VuIGZvciBwcm92aWRpbmdVAXRoZSBwcmVpbWFnZS4gT3RoZXJ3aXNlLCBhIGRlcG9zaXQgaXMgdGFrZW4gcHJvcG9ydGlvbmFsIHRvIHRoZSBzaXplIG9mIHRoZSBwcmVpbWFnZS48dW5ub3RlX3ByZWltYWdlBAEQaGFzaDwBHFQ6Okhhc2gAARjcQ2xlYXIgYW4gdW5yZXF1ZXN0ZWQgcHJlaW1hZ2UgZnJvbSB0aGUgcnVudGltZSBzdG9yYWdlLgD8SWYgYGxlbmAgaXMgcHJvdmlkZWQsIHRoZW4gaXQgd2lsbCBiZSBhIG11Y2ggY2hlYXBlciBvcGVyYXRpb24uAAEBLSBgaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBwcmVpbWFnZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHN0b3JlLrgtIGBsZW5gOiBUaGUgbGVuZ3RoIG9mIHRoZSBwcmVpbWFnZSBvZiBgaGFzaGAuQHJlcXVlc3RfcHJlaW1hZ2UEARBoYXNoPAEcVDo6SGFzaAACEEEBUmVxdWVzdCBhIHByZWltYWdlIGJlIHVwbG9hZGVkIHRvIHRoZSBjaGFpbiB3aXRob3V0IHBheWluZyBhbnkgZmVlcyBvciBkZXBvc2l0cy4AVQFJZiB0aGUgcHJlaW1hZ2UgcmVxdWVzdHMgaGFzIGFscmVhZHkgYmVlbiBwcm92aWRlZCBvbi1jaGFpbiwgd2UgdW5yZXNlcnZlIGFueSBkZXBvc2l0OQFhIHVzZXIgbWF5IGhhdmUgcGFpZCwgYW5kIHRha2UgdGhlIGNvbnRyb2wgb2YgdGhlIHByZWltYWdlIG91dCBvZiB0aGVpciBoYW5kcy5IdW5yZXF1ZXN0X3ByZWltYWdlBAEQaGFzaDwBHFQ6Okhhc2gAAwy8Q2xlYXIgYSBwcmV2aW91c2x5IG1hZGUgcmVxdWVzdCBmb3IgYSBwcmVpbWFnZS4ALQFOT1RFOiBUSElTIE1VU1QgTk9UIEJFIENBTExFRCBPTiBgaGFzaGAgTU9SRSBUSU1FUyBUSEFOIGByZXF1ZXN0X3ByZWltYWdlYC44ZW5zdXJlX3VwZGF0ZWQEARhoYXNoZXPAATBWZWM8VDo6SGFzaD4ABAy8RW5zdXJlIHRoYXQgdGhlIGJ1bGsgb2YgcHJlLWltYWdlcyBpcyB1cGdyYWRlZC4APQFUaGUgY2FsbGVyIHBheXMgbm8gZmVlIGlmIGF0IGxlYXN0IDkwJSBvZiBwcmUtaW1hZ2VzIHdlcmUgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsAAAAI8AMQMQHBhbGxldF9zY2hlZHVsZXIYcGFsbGV0EENhbGwEBFQAASggc2NoZWR1bGUQARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4AAThtYXliZV9wZXJpb2RpY8gBrE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASBwcmlvcml0eQwBSHNjaGVkdWxlOjpQcmlvcml0eQABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAEcEFub255bW91c2x5IHNjaGVkdWxlIGEgdGFzay4YY2FuY2VsCAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAEUaW5kZXg4AQx1MzIAARBhAUNhbmNlbCBhIHNjaGVkdWxlZCB0YXNrIChuYW1lZCBvciBhbm9ueW1vdXMpLCBieSBwcm92aWRpbmcgdGhlIGJsb2NrIGl0IGlzIHNjaGVkdWxlZCBmb3IZAWV4ZWN1dGlvbiBpbiwgYXMgd2VsbCBhcyB0aGUgaW5kZXggb2YgdGhlIHRhc2sgaW4gdGhhdCBibG9jaydzIGFnZW5kYS4ANQFJbiB0aGUgY2FzZSBvZiBhIG5hbWVkIHRhc2ssIGl0IHdpbGwgcmVtb3ZlIGl0IGZyb20gdGhlIGxvb2t1cCB0YWJsZSBhcyB3ZWxsLjhzY2hlZHVsZV9uYW1lZBQBCGlkCAEgVGFza05hbWUAARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4AAThtYXliZV9wZXJpb2RpY8gBrE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASBwcmlvcml0eQwBSHNjaGVkdWxlOjpQcmlvcml0eQABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAIEWFNjaGVkdWxlIGEgbmFtZWQgdGFzay4wY2FuY2VsX25hbWVkBAEIaWQIASBUYXNrTmFtZQADBHhDYW5jZWwgYSBuYW1lZCBzY2hlZHVsZWQgdGFzay44c2NoZWR1bGVfYWZ0ZXIQARRhZnRlcjgBREJsb2NrTnVtYmVyRm9yPFQ+AAE4bWF5YmVfcGVyaW9kaWPIAaxPcHRpb248c2NoZWR1bGU6OlBlcmlvZDxCbG9ja051bWJlckZvcjxUPj4+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAEBKhBbm9ueW1vdXNseSBzY2hlZHVsZSBhIHRhc2sgYWZ0ZXIgYSBkZWxheS5Qc2NoZWR1bGVfbmFtZWRfYWZ0ZXIUAQhpZAgBIFRhc2tOYW1lAAEUYWZ0ZXI4AURCbG9ja051bWJlckZvcjxUPgABOG1heWJlX3BlcmlvZGljyAGsT3B0aW9uPHNjaGVkdWxlOjpQZXJpb2Q8QmxvY2tOdW1iZXJGb3I8VD4+PgABIHByaW9yaXR5DAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABQSQU2NoZWR1bGUgYSBuYW1lZCB0YXNrIGFmdGVyIGEgZGVsYXkuJHNldF9yZXRyeQwBEHRhc2vMAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AARxyZXRyaWVzDAEIdTgAARhwZXJpb2Q4AURCbG9ja051bWJlckZvcjxUPgAGOFkBU2V0IGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3IgYSB0YXNrIHNvIHRoYXQsIGluIGNhc2UgaXRzIHNjaGVkdWxlZCBydW4gZmFpbHMsIGl0IHdpbGxVAWJlIHJldHJpZWQgYWZ0ZXIgYHBlcmlvZGAgYmxvY2tzLCBmb3IgYSB0b3RhbCBhbW91bnQgb2YgYHJldHJpZXNgIHJldHJpZXMgb3IgdW50aWwgaXQkc3VjY2VlZHMuAFUBVGFza3Mgd2hpY2ggbmVlZCB0byBiZSBzY2hlZHVsZWQgZm9yIGEgcmV0cnkgYXJlIHN0aWxsIHN1YmplY3QgdG8gd2VpZ2h0IG1ldGVyaW5nIGFuZFEBYWdlbmRhIHNwYWNlLCBzYW1lIGFzIGEgcmVndWxhciB0YXNrLiBJZiBhIHBlcmlvZGljIHRhc2sgZmFpbHMsIGl0IHdpbGwgYmUgc2NoZWR1bGVkkG5vcm1hbGx5IHdoaWxlIHRoZSB0YXNrIGlzIHJldHJ5aW5nLgBRAVRhc2tzIHNjaGVkdWxlZCBhcyBhIHJlc3VsdCBvZiBhIHJldHJ5IGZvciBhIHBlcmlvZGljIHRhc2sgYXJlIHVubmFtZWQsIG5vbi1wZXJpb2RpYz0BY2xvbmVzIG9mIHRoZSBvcmlnaW5hbCB0YXNrLiBUaGVpciByZXRyeSBjb25maWd1cmF0aW9uIHdpbGwgYmUgZGVyaXZlZCBmcm9tIHRoZU0Bb3JpZ2luYWwgdGFzaydzIGNvbmZpZ3VyYXRpb24sIGJ1dCB3aWxsIGhhdmUgYSBsb3dlciB2YWx1ZSBmb3IgYHJlbWFpbmluZ2AgdGhhbiB0aGVkb3JpZ2luYWwgYHRvdGFsX3JldHJpZXNgLgAtAVRoaXMgY2FsbCAqKmNhbm5vdCoqIGJlIHVzZWQgdG8gc2V0IGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3IgYSBuYW1lZCB0YXNrLjxzZXRfcmV0cnlfbmFtZWQMAQhpZAgBIFRhc2tOYW1lAAEccmV0cmllcwwBCHU4AAEYcGVyaW9kOAFEQmxvY2tOdW1iZXJGb3I8VD4ABzhdAVNldCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIGEgbmFtZWQgdGFzayBzbyB0aGF0LCBpbiBjYXNlIGl0cyBzY2hlZHVsZWQgcnVuIGZhaWxzLCBpdF0Bd2lsbCBiZSByZXRyaWVkIGFmdGVyIGBwZXJpb2RgIGJsb2NrcywgZm9yIGEgdG90YWwgYW1vdW50IG9mIGByZXRyaWVzYCByZXRyaWVzIG9yIHVudGlsMGl0IHN1Y2NlZWRzLgBVAVRhc2tzIHdoaWNoIG5lZWQgdG8gYmUgc2NoZWR1bGVkIGZvciBhIHJldHJ5IGFyZSBzdGlsbCBzdWJqZWN0IHRvIHdlaWdodCBtZXRlcmluZyBhbmRRAWFnZW5kYSBzcGFjZSwgc2FtZSBhcyBhIHJlZ3VsYXIgdGFzay4gSWYgYSBwZXJpb2RpYyB0YXNrIGZhaWxzLCBpdCB3aWxsIGJlIHNjaGVkdWxlZJBub3JtYWxseSB3aGlsZSB0aGUgdGFzayBpcyByZXRyeWluZy4AUQFUYXNrcyBzY2hlZHVsZWQgYXMgYSByZXN1bHQgb2YgYSByZXRyeSBmb3IgYSBwZXJpb2RpYyB0YXNrIGFyZSB1bm5hbWVkLCBub24tcGVyaW9kaWM9AWNsb25lcyBvZiB0aGUgb3JpZ2luYWwgdGFzay4gVGhlaXIgcmV0cnkgY29uZmlndXJhdGlvbiB3aWxsIGJlIGRlcml2ZWQgZnJvbSB0aGVNAW9yaWdpbmFsIHRhc2sncyBjb25maWd1cmF0aW9uLCBidXQgd2lsbCBoYXZlIGEgbG93ZXIgdmFsdWUgZm9yIGByZW1haW5pbmdgIHRoYW4gdGhlZG9yaWdpbmFsIGB0b3RhbF9yZXRyaWVzYC4ADQFUaGlzIGlzIHRoZSBvbmx5IHdheSB0byBzZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBhIG5hbWVkIHRhc2suMGNhbmNlbF9yZXRyeQQBEHRhc2vMAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4ACASoUmVtb3ZlcyB0aGUgcmV0cnkgY29uZmlndXJhdGlvbiBvZiBhIHRhc2suSGNhbmNlbF9yZXRyeV9uYW1lZAQBCGlkCAEgVGFza05hbWUACQS8Q2FuY2VsIHRoZSByZXRyeSBjb25maWd1cmF0aW9uIG9mIGEgbmFtZWQgdGFzay4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuyAQYT3B0aW9uBARUAcwBCBBOb25lAAAAEFNvbWUEAMwAAAEAAMwAAAQIODgA0AxEcGFsbGV0X3BhcmFtZXRlcnMYcGFsbGV0EENhbGwEBFQAAQQ0c2V0X3BhcmFtZXRlcgQBJGtleV92YWx1ZdQBUFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzAAAQdFNldCB0aGUgdmFsdWUgb2YgYSBwYXJhbWV0ZXIuAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBgQWRtaW5PcmlnaW5gIGZvciB0aGUgZ2l2ZW4gYGtleWAuIFZhbHVlcyBiZYhkZWxldGVkIGJ5IHNldHRpbmcgdGhlbSB0byBgTm9uZWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLtQIcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWVEUnVudGltZVBhcmFtZXRlcnMAAQw8U3Rha2luZ0VsZWN0aW9uBADYAbBkeW5hbWljX3BhcmFtczo6c3Rha2luZ19lbGVjdGlvbjo6UGFyYW1ldGVycwAAACRTY2hlZHVsZXIEAAEBAZRkeW5hbWljX3BhcmFtczo6c2NoZWR1bGVyOjpQYXJhbWV0ZXJzAAEAME1lc3NhZ2VRdWV1ZQQAFQEBpGR5bmFtaWNfcGFyYW1zOjptZXNzYWdlX3F1ZXVlOjpQYXJhbWV0ZXJzAAIAANgQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbihQYXJhbWV0ZXJzAAEcLFNpZ25lZFBoYXNlCADcASxTaWduZWRQaGFzZQAA4AFMT3B0aW9uPEJsb2NrTnVtYmVyPgAAAFBNYXhTaWduZWRTdWJtaXNzaW9ucwgA5AFQTWF4U2lnbmVkU3VibWlzc2lvbnMAAOABLE9wdGlvbjx1MzI+AAEANFVuc2lnbmVkUGhhc2UIAOgBNFVuc2lnbmVkUGhhc2UAAOABTE9wdGlvbjxCbG9ja051bWJlcj4AAgAoTWluZXJQYWdlcwgA7AEoTWluZXJQYWdlcwAA4AEsT3B0aW9uPHUzMj4AAwBETWF4RWxlY3RpbmdWb3RlcnMIAPABRE1heEVsZWN0aW5nVm90ZXJzAADgASxPcHRpb248dTMyPgAEAFhUYXJnZXRTbmFwc2hvdFBlckJsb2NrCAD0AVhUYXJnZXRTbmFwc2hvdFBlckJsb2NrAADgASxPcHRpb248dTMyPgAFADhNYXhFcmFEdXJhdGlvbggA+AE4TWF4RXJhRHVyYXRpb24AAPwBLE9wdGlvbjx1NjQ+AAYAANwQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbixTaWduZWRQaGFzZQAAAADgBBhPcHRpb24EBFQBOAEIEE5vbmUAAAAQU29tZQQAOAAAAQAA5BBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uUE1heFNpZ25lZFN1Ym1pc3Npb25zAAAAAOgQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbjRVbnNpZ25lZFBoYXNlAAAAAOwQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbihNaW5lclBhZ2VzAAAAAPAQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbkRNYXhFbGVjdGluZ1ZvdGVycwAAAAD0EHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb25YVGFyZ2V0U25hcHNob3RQZXJCbG9jawAAAAD4EHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb244TWF4RXJhRHVyYXRpb24AAAAA/AQYT3B0aW9uBARUASgBCBBOb25lAAAAEFNvbWUEACgAAAEAAAEBEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zJHNjaGVkdWxlcihQYXJhbWV0ZXJzAAEIUE1heFNjaGVkdWxlZFBlckJsb2NrCAAFAQFQTWF4U2NoZWR1bGVkUGVyQmxvY2sAAOABLE9wdGlvbjx1MzI+AAAANE1heGltdW1XZWlnaHQIAAkBATRNYXhpbXVtV2VpZ2h0AAANAQE4T3B0aW9uPFdlaWdodD4AAQAABQEQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMkc2NoZWR1bGVyUE1heFNjaGVkdWxlZFBlckJsb2NrAAAAAAkBEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zJHNjaGVkdWxlcjRNYXhpbXVtV2VpZ2h0AAAAAA0BBBhPcHRpb24EBFQBEQEBCBBOb25lAAAAEFNvbWUEABEBAAABAAARAQwoc3Bfd2VpZ2h0cyR3ZWlnaHRfdjIYV2VpZ2h0AAAIASByZWZfdGltZbQBDHU2NAABKHByb29mX3NpemW0AQx1NjQAABUBEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zNG1lc3NhZ2VfcXVldWUoUGFyYW1ldGVycwABCDxNYXhPbkluaXRXZWlnaHQIABkBATxNYXhPbkluaXRXZWlnaHQAAB0BAVhPcHRpb248T3B0aW9uPFdlaWdodD4+AAAAPE1heE9uSWRsZVdlaWdodAgAIQEBPE1heE9uSWRsZVdlaWdodAAAHQEBWE9wdGlvbjxPcHRpb248V2VpZ2h0Pj4AAQAAGQEQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM0bWVzc2FnZV9xdWV1ZTxNYXhPbkluaXRXZWlnaHQAAAAAHQEEGE9wdGlvbgQEVAENAQEIEE5vbmUAAAAQU29tZQQADQEAAAEAACEBEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zNG1lc3NhZ2VfcXVldWU8TWF4T25JZGxlV2VpZ2h0AAAAACUBDERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQQQ2FsbAQEVAABEEBmb3JjZV9zZXRfY3Vyc29yBAEYY3Vyc29yKQEBTE9wdGlvbjxDdXJzb3JPZjxUPj4AABRdAUFsbG93cyByb290IHRvIHNldCBhIGN1cnNvciB0byBmb3JjZWZ1bGx5IHN0YXJ0LCBzdG9wIG9yIGZvcndhcmQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgBJAVNob3VsZCBub3JtYWxseSBub3QgYmUgbmVlZGVkIGFuZCBpcyBvbmx5IGluIHBsYWNlIGFzIGVtZXJnZW5jeSBtZWFzdXJlLiBOb3RlIHRoYXQFAXJlc3RhcnRpbmcgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzIGluIHRoaXMgbWFubmVyIHdpbGwgbm90IGNhbGwgdGhlLQFbYE1pZ3JhdGlvblN0YXR1c0hhbmRsZXI6OnN0YXJ0ZWRgXSBob29rIG9yIGVtaXQgYW4gYFVwZ3JhZGVTdGFydGVkYCBldmVudC5cZm9yY2Vfc2V0X2FjdGl2ZV9jdXJzb3IMARRpbmRleDgBDHUzMgABMGlubmVyX2N1cnNvcjkBAVhPcHRpb248UmF3Q3Vyc29yT2Y8VD4+AAEoc3RhcnRlZF9hdOABZE9wdGlvbjxCbG9ja051bWJlckZvcjxUPj4AARhZAUFsbG93cyByb290IHRvIHNldCBhbiBhY3RpdmUgY3Vyc29yIHRvIGZvcmNlZnVsbHkgc3RhcnQvZm9yd2FyZCB0aGUgbWlncmF0aW9uIHByb2Nlc3MuAEUBVGhpcyBpcyBhbiBlZGdlLWNhc2UgdmVyc2lvbiBvZiBbYFNlbGY6OmZvcmNlX3NldF9jdXJzb3JgXSB0aGF0IGFsbG93cyB0byBzZXQgdGhlYQFgc3RhcnRlZF9hdGAgdmFsdWUgdG8gdGhlIG5leHQgYmxvY2sgbnVtYmVyLiBPdGhlcndpc2UgdGhpcyB3b3VsZCBub3QgYmUgcG9zc2libGUsIHNpbmNlRQFgZm9yY2Vfc2V0X2N1cnNvcmAgdGFrZXMgYW4gYWJzb2x1dGUgYmxvY2sgbnVtYmVyLiBTZXR0aW5nIGBzdGFydGVkX2F0YCB0byBgTm9uZWABAWluZGljYXRlcyB0aGF0IHRoZSBjdXJyZW50IGJsb2NrIG51bWJlciBwbHVzIG9uZSBzaG91bGQgYmUgdXNlZC5IZm9yY2Vfb25ib2FyZF9tYm1zAAIQoEZvcmNlcyB0aGUgb25ib2FyZGluZyBvZiB0aGUgbWlncmF0aW9ucy4AXQFUaGlzIHByb2Nlc3MgaGFwcGVucyBhdXRvbWF0aWNhbGx5IG9uIGEgcnVudGltZSB1cGdyYWRlLiBJdCBpcyBpbiBwbGFjZSBhcyBhbiBlbWVyZ2VuY3n8bWVhc3VyZW1lbnQuIFRoZSBjdXJzb3IgbmVlZHMgdG8gYmUgYE5vbmVgIGZvciB0aGlzIHRvIHN1Y2NlZWQuOGNsZWFyX2hpc3RvcmljBAEgc2VsZWN0b3I9AQGgSGlzdG9yaWNDbGVhbnVwU2VsZWN0b3I8SWRlbnRpZmllck9mPFQ+PgADFGhDbGVhcnMgdGhlIGBIaXN0b3JpY2Agc2V0LgANAWBtYXBfY3Vyc29yYCBtdXN0IGJlIHNldCB0byB0aGUgbGFzdCB2YWx1ZSB0aGF0IHdhcyByZXR1cm5lZCBieSB0aGVdAWBIaXN0b3JpY0NsZWFyZWRgIGV2ZW50LiBUaGUgZmlyc3QgdGltZSBgTm9uZWAgY2FuIGJlIHVzZWQuIGBsaW1pdGAgbXVzdCBiZSBjaG9zZW4gaW4gYah3YXkgdGhhdCB3aWxsIHJlc3VsdCBpbiBhIHNlbnNpYmxlIHdlaWdodC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKQEEGE9wdGlvbgQEVAEtAQEIEE5vbmUAAAAQU29tZQQALQEAAAEAAC0BCERwYWxsZXRfbWlncmF0aW9uczxNaWdyYXRpb25DdXJzb3IIGEN1cnNvcgExASxCbG9ja051bWJlcgE4AQgYQWN0aXZlBAA1AQGEQWN0aXZlQ3Vyc29yPEN1cnNvciwgQmxvY2tOdW1iZXI+AAAAFFN0dWNrAAEAADEBDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAANQEIRHBhbGxldF9taWdyYXRpb25zMEFjdGl2ZUN1cnNvcggYQ3Vyc29yATEBLEJsb2NrTnVtYmVyATgADAEUaW5kZXg4AQx1MzIAATBpbm5lcl9jdXJzb3I5AQE4T3B0aW9uPEN1cnNvcj4AAShzdGFydGVkX2F0OAEsQmxvY2tOdW1iZXIAADkBBBhPcHRpb24EBFQBMQEBCBBOb25lAAAAEFNvbWUEADEBAAABAAA9AQhEcGFsbGV0X21pZ3JhdGlvbnNcSGlzdG9yaWNDbGVhbnVwU2VsZWN0b3IECElkAUEBAQggU3BlY2lmaWMEAEUBARxWZWM8SWQ+AAAAIFdpbGRjYXJkCAEUbGltaXTgASxPcHRpb248dTMyPgABPHByZXZpb3VzX2N1cnNvckkBATxPcHRpb248VmVjPHU4Pj4AAQAAQQEMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABFAQAAAkEBAEkBBBhPcHRpb24EBFQBGAEIEE5vbmUAAAAQU29tZQQAGAAAAQAATQEMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQQQ2FsbAgEVAAESQABJFB0cmFuc2Zlcl9hbGxvd19kZWF0aAgBEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVlUQEBKFQ6OkJhbGFuY2UAABzUVHJhbnNmZXIgc29tZSBsaXF1aWQgZnJlZSBiYWxhbmNlIHRvIGFub3RoZXIgYWNjb3VudC4ANQFgdHJhbnNmZXJfYWxsb3dfZGVhdGhgIHdpbGwgc2V0IHRoZSBgRnJlZUJhbGFuY2VgIG9mIHRoZSBzZW5kZXIgYW5kIHJlY2VpdmVyLhEBSWYgdGhlIHNlbmRlcidzIGFjY291bnQgaXMgYmVsb3cgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYXMgYSByZXN1bHSwb2YgdGhlIHRyYW5zZmVyLCB0aGUgYWNjb3VudCB3aWxsIGJlIHJlYXBlZC4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgdHJhbnNhY3Rvci44Zm9yY2VfdHJhbnNmZXIMARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVlUQEBKFQ6OkJhbGFuY2UAAghhAUV4YWN0bHkgYXMgYHRyYW5zZmVyX2FsbG93X2RlYXRoYCwgZXhjZXB0IHRoZSBvcmlnaW4gbXVzdCBiZSByb290IGFuZCB0aGUgc291cmNlIGFjY291bnREbWF5IGJlIHNwZWNpZmllZC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQgBEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVlUQEBKFQ6OkJhbGFuY2UAAxhZAVNhbWUgYXMgdGhlIFtgdHJhbnNmZXJfYWxsb3dfZGVhdGhgXSBjYWxsLCBidXQgd2l0aCBhIGNoZWNrIHRoYXQgdGhlIHRyYW5zZmVyIHdpbGwgbm90YGtpbGwgdGhlIG9yaWdpbiBhY2NvdW50LgDoOTklIG9mIHRoZSB0aW1lIHlvdSB3YW50IFtgdHJhbnNmZXJfYWxsb3dfZGVhdGhgXSBpbnN0ZWFkLgDwW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdOiBzdHJ1Y3QuUGFsbGV0Lmh0bWwjbWV0aG9kLnRyYW5zZmVyMHRyYW5zZmVyX2FsbAgBEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGtlZXBfYWxpdmVZAQEQYm9vbAAEPAUBVHJhbnNmZXIgdGhlIGVudGlyZSB0cmFuc2ZlcmFibGUgYmFsYW5jZSBmcm9tIHRoZSBjYWxsZXIgYWNjb3VudC4AWQFOT1RFOiBUaGlzIGZ1bmN0aW9uIG9ubHkgYXR0ZW1wdHMgdG8gdHJhbnNmZXIgX3RyYW5zZmVyYWJsZV8gYmFsYW5jZXMuIFRoaXMgbWVhbnMgdGhhdGEBYW55IGxvY2tlZCwgcmVzZXJ2ZWQsIG9yIGV4aXN0ZW50aWFsIGRlcG9zaXRzICh3aGVuIGBrZWVwX2FsaXZlYCBpcyBgdHJ1ZWApLCB3aWxsIG5vdCBiZV0BdHJhbnNmZXJyZWQgYnkgdGhpcyBmdW5jdGlvbi4gVG8gZW5zdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXN1bHRzIGluIGEga2lsbGVkIGFjY291bnQsRQF5b3UgbWlnaHQgbmVlZCB0byBwcmVwYXJlIHRoZSBhY2NvdW50IGJ5IHJlbW92aW5nIGFueSByZWZlcmVuY2UgY291bnRlcnMsIHN0b3JhZ2VAZGVwb3NpdHMsIGV0Yy4uLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQuAKAtIGBkZXN0YDogVGhlIHJlY2lwaWVudCBvZiB0aGUgdHJhbnNmZXIuWQEtIGBrZWVwX2FsaXZlYDogQSBib29sZWFuIHRvIGRldGVybWluZSBpZiB0aGUgYHRyYW5zZmVyX2FsbGAgb3BlcmF0aW9uIHNob3VsZCBzZW5kIGFsbE0BICBvZiB0aGUgZnVuZHMgdGhlIGFjY291bnQgaGFzLCBjYXVzaW5nIHRoZSBzZW5kZXIgYWNjb3VudCB0byBiZSBraWxsZWQgKGZhbHNlKSwgb3JZASAgdHJhbnNmZXIgZXZlcnl0aGluZyBleGNlcHQgYXQgbGVhc3QgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQsIHdoaWNoIHdpbGwgZ3VhcmFudGVlIHRvnCAga2VlcCB0aGUgc2VuZGVyIGFjY291bnQgYWxpdmUgKHRydWUpLjxmb3JjZV91bnJlc2VydmUIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAAUMsFVucmVzZXJ2ZSBzb21lIGJhbGFuY2UgZnJvbSBhIHVzZXIgYnkgZm9yY2UuAGxDYW4gb25seSBiZSBjYWxsZWQgYnkgUk9PVC5AdXBncmFkZV9hY2NvdW50cwQBDHdob10BAURWZWM8VDo6QWNjb3VudElkPgAGIHBVcGdyYWRlIGEgc3BlY2lmaWVkIGFjY291bnQuAHQtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1cGdyYWRlZC4AVQFUaGlzIHdpbGwgd2FpdmUgdGhlIHRyYW5zYWN0aW9uIGZlZSBpZiBhdCBsZWFzdCBhbGwgYnV0IDEwJSBvZiB0aGUgYWNjb3VudHMgbmVlZGVkIHRvQQFiZSB1cGdyYWRlZC4gKFdlIGxldCBzb21lIG5vdCBoYXZlIHRvIGJlIHVwZ3JhZGVkIGp1c3QgaW4gb3JkZXIgdG8gYWxsb3cgZm9yIHRoZVhwb3NzaWJpbGl0eSBvZiBjaHVybikuRGZvcmNlX3NldF9iYWxhbmNlCAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBuZXdfZnJlZVEBAShUOjpCYWxhbmNlAAgMrFNldCB0aGUgcmVndWxhciBiYWxhbmNlIG9mIGEgZ2l2ZW4gYWNjb3VudC4AsFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBpcyBgcm9vdGAubGZvcmNlX2FkanVzdF90b3RhbF9pc3N1YW5jZQgBJGRpcmVjdGlvbmEBAUxBZGp1c3RtZW50RGlyZWN0aW9uAAEUZGVsdGFRAQEoVDo6QmFsYW5jZQAJFLhBZGp1c3QgdGhlIHRvdGFsIGlzc3VhbmNlIGluIGEgc2F0dXJhdGluZyB3YXkuAPxDYW4gb25seSBiZSBjYWxsZWQgYnkgcm9vdCBhbmQgYWx3YXlzIG5lZWRzIGEgcG9zaXRpdmUgYGRlbHRhYC4AJCMgRXhhbXBsZRBidXJuCAEUdmFsdWVRAQEoVDo6QmFsYW5jZQABKGtlZXBfYWxpdmVZAQEQYm9vbAAKHPxCdXJuIHRoZSBzcGVjaWZpZWQgbGlxdWlkIGZyZWUgYmFsYW5jZSBmcm9tIHRoZSBvcmlnaW4gYWNjb3VudC4AJQFJZiB0aGUgb3JpZ2luJ3MgYWNjb3VudCBlbmRzIHVwIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0IGFzIGEgcmVzdWx0CQFvZiB0aGUgYnVybiBhbmQgYGtlZXBfYWxpdmVgIGlzIGZhbHNlLCB0aGUgYWNjb3VudCB3aWxsIGJlIHJlYXBlZC4AUQFVbmxpa2Ugc2VuZGluZyBmdW5kcyB0byBhIF9idXJuXyBhZGRyZXNzLCB3aGljaCBtZXJlbHkgbWFrZXMgdGhlIGZ1bmRzIGluYWNjZXNzaWJsZSwhAXRoaXMgYGJ1cm5gIG9wZXJhdGlvbiB3aWxsIHJlZHVjZSB0b3RhbCBpc3N1YW5jZSBieSB0aGUgYW1vdW50IF9idXJuZWRfLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5RAQAABlUBAFUBAAAFBwBZAQAABQAAXQEAAAIEAGEBDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXNMQWRqdXN0bWVudERpcmVjdGlvbgABCCBJbmNyZWFzZQAAACBEZWNyZWFzZQABAABlAQw4cGFsbGV0X3Zlc3RpbmcYcGFsbGV0EENhbGwEBFQAARgQdmVzdAAAJLhVbmxvY2sgYW55IHZlc3RlZCBmdW5kcyBvZiB0aGUgc2VuZGVyIGFjY291bnQuAF0BVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIGZ1bmRzIHN0aWxsZGxvY2tlZCB1bmRlciB0aGlzIHBhbGxldC4A0EVtaXRzIGVpdGhlciBgVmVzdGluZ0NvbXBsZXRlZGAgb3IgYFZlc3RpbmdVcGRhdGVkYC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuKHZlc3Rfb3RoZXIEARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLLhVbmxvY2sgYW55IHZlc3RlZCBmdW5kcyBvZiBhIGB0YXJnZXRgIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AUQEtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB3aG9zZSB2ZXN0ZWQgZnVuZHMgc2hvdWxkIGJlIHVubG9ja2VkLiBNdXN0IGhhdmUgZnVuZHMgc3RpbGxkbG9ja2VkIHVuZGVyIHRoaXMgcGFsbGV0LgDQRW1pdHMgZWl0aGVyIGBWZXN0aW5nQ29tcGxldGVkYCBvciBgVmVzdGluZ1VwZGF0ZWRgLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC48dmVzdGVkX3RyYW5zZmVyCAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBzY2hlZHVsZWkBAbBWZXN0aW5nSW5mbzxCYWxhbmNlT2Y8VD4sIEJsb2NrTnVtYmVyRm9yPFQ+PgACNGRDcmVhdGUgYSB2ZXN0ZWQgdHJhbnNmZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AzC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHJlY2VpdmluZyB0aGUgdmVzdGVkIGZ1bmRzLvAtIGBzY2hlZHVsZWA6IFRoZSB2ZXN0aW5nIHNjaGVkdWxlIGF0dGFjaGVkIHRvIHRoZSB0cmFuc2Zlci4AXEVtaXRzIGBWZXN0aW5nQ3JlYXRlZGAuAPxOT1RFOiBUaGlzIHdpbGwgdW5sb2NrIGFsbCBzY2hlZHVsZXMgdGhyb3VnaCB0aGUgY3VycmVudCBibG9jay4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuVGZvcmNlX3Zlc3RlZF90cmFuc2ZlcgwBGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBzY2hlZHVsZWkBAbBWZXN0aW5nSW5mbzxCYWxhbmNlT2Y8VD4sIEJsb2NrTnVtYmVyRm9yPFQ+PgADOGBGb3JjZSBhIHZlc3RlZCB0cmFuc2Zlci4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4A6C0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHdob3NlIGZ1bmRzIHNob3VsZCBiZSB0cmFuc2ZlcnJlZC4RAS0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRoYXQgc2hvdWxkIGJlIHRyYW5zZmVycmVkIHRoZSB2ZXN0ZWQgZnVuZHMu8C0gYHNjaGVkdWxlYDogVGhlIHZlc3Rpbmcgc2NoZWR1bGUgYXR0YWNoZWQgdG8gdGhlIHRyYW5zZmVyLgBcRW1pdHMgYFZlc3RpbmdDcmVhdGVkYC4A/E5PVEU6IFRoaXMgd2lsbCB1bmxvY2sgYWxsIHNjaGVkdWxlcyB0aHJvdWdoIHRoZSBjdXJyZW50IGJsb2NrLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC48bWVyZ2Vfc2NoZWR1bGVzCAE8c2NoZWR1bGUxX2luZGV4OAEMdTMyAAE8c2NoZWR1bGUyX2luZGV4OAEMdTMyAARUXQFNZXJnZSB0d28gdmVzdGluZyBzY2hlZHVsZXMgdG9nZXRoZXIsIGNyZWF0aW5nIGEgbmV3IHZlc3Rpbmcgc2NoZWR1bGUgdGhhdCB1bmxvY2tzIG92ZXJVAXRoZSBoaWdoZXN0IHBvc3NpYmxlIHN0YXJ0IGFuZCBlbmQgYmxvY2tzLiBJZiBib3RoIHNjaGVkdWxlcyBoYXZlIGFscmVhZHkgc3RhcnRlZCB0aGVZAWN1cnJlbnQgYmxvY2sgd2lsbCBiZSB1c2VkIGFzIHRoZSBzY2hlZHVsZSBzdGFydDsgd2l0aCB0aGUgY2F2ZWF0IHRoYXQgaWYgb25lIHNjaGVkdWxlXQFpcyBmaW5pc2hlZCBieSB0aGUgY3VycmVudCBibG9jaywgdGhlIG90aGVyIHdpbGwgYmUgdHJlYXRlZCBhcyB0aGUgbmV3IG1lcmdlZCBzY2hlZHVsZSwsdW5tb2RpZmllZC4A+E5PVEU6IElmIGBzY2hlZHVsZTFfaW5kZXggPT0gc2NoZWR1bGUyX2luZGV4YCB0aGlzIGlzIGEgbm8tb3AuQQFOT1RFOiBUaGlzIHdpbGwgdW5sb2NrIGFsbCBzY2hlZHVsZXMgdGhyb3VnaCB0aGUgY3VycmVudCBibG9jayBwcmlvciB0byBtZXJnaW5nLmEBTk9URTogSWYgYm90aCBzY2hlZHVsZXMgaGF2ZSBlbmRlZCBieSB0aGUgY3VycmVudCBibG9jaywgbm8gbmV3IHNjaGVkdWxlIHdpbGwgYmUgY3JlYXRlZGRhbmQgYm90aCB3aWxsIGJlIHJlbW92ZWQuAGxNZXJnZWQgc2NoZWR1bGUgYXR0cmlidXRlczo1AS0gYHN0YXJ0aW5nX2Jsb2NrYDogYE1BWChzY2hlZHVsZTEuc3RhcnRpbmdfYmxvY2ssIHNjaGVkdWxlZDIuc3RhcnRpbmdfYmxvY2ssSCAgY3VycmVudF9ibG9jaylgLiEBLSBgZW5kaW5nX2Jsb2NrYDogYE1BWChzY2hlZHVsZTEuZW5kaW5nX2Jsb2NrLCBzY2hlZHVsZTIuZW5kaW5nX2Jsb2NrKWAuWQEtIGBsb2NrZWRgOiBgc2NoZWR1bGUxLmxvY2tlZF9hdChjdXJyZW50X2Jsb2NrKSArIHNjaGVkdWxlMi5sb2NrZWRfYXQoY3VycmVudF9ibG9jaylgLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAOgtIGBzY2hlZHVsZTFfaW5kZXhgOiBpbmRleCBvZiB0aGUgZmlyc3Qgc2NoZWR1bGUgdG8gbWVyZ2Uu7C0gYHNjaGVkdWxlMl9pbmRleGA6IGluZGV4IG9mIHRoZSBzZWNvbmQgc2NoZWR1bGUgdG8gbWVyZ2UudGZvcmNlX3JlbW92ZV92ZXN0aW5nX3NjaGVkdWxlCAEYdGFyZ2V0AAGMPFQ6Okxvb2t1cCBhcyBTdGF0aWNMb29rdXA+OjpTb3VyY2UAAThzY2hlZHVsZV9pbmRleDgBDHUzMgAFGHxGb3JjZSByZW1vdmUgYSB2ZXN0aW5nIHNjaGVkdWxlAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uAMgtIGB0YXJnZXRgOiBBbiBhY2NvdW50IHRoYXQgaGFzIGEgdmVzdGluZyBzY2hlZHVsZRUBLSBgc2NoZWR1bGVfaW5kZXhgOiBUaGUgdmVzdGluZyBzY2hlZHVsZSBpbmRleCB0aGF0IHNob3VsZCBiZSByZW1vdmVkBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLmkBDDhwYWxsZXRfdmVzdGluZzB2ZXN0aW5nX2luZm8sVmVzdGluZ0luZm8IHEJhbGFuY2UBVQEsQmxvY2tOdW1iZXIBOAAMARhsb2NrZWRVAQEcQmFsYW5jZQABJHBlcl9ibG9ja1UBARxCYWxhbmNlAAE4c3RhcnRpbmdfYmxvY2s4ASxCbG9ja051bWJlcgAAbQEQXHBvbGthZG90X3J1bnRpbWVfY29tbW9uGGNsYWltcxhwYWxsZXQQQ2FsbAQEVAABFBRjbGFpbQgBEGRlc3QEATBUOjpBY2NvdW50SWQAAUhldGhlcmV1bV9zaWduYXR1cmVxAQE4RWNkc2FTaWduYXR1cmUAAGCITWFrZSBhIGNsYWltIHRvIGNvbGxlY3QgeW91ciBET1RzLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBQVW5zaWduZWQgVmFsaWRhdGlvbjoFAUEgY2FsbCB0byBjbGFpbSBpcyBkZWVtZWQgdmFsaWQgaWYgdGhlIHNpZ25hdHVyZSBwcm92aWRlZCBtYXRjaGVzfHRoZSBleHBlY3RlZCBzaWduZWQgbWVzc2FnZSBvZjoAaD4gRXRoZXJldW0gU2lnbmVkIE1lc3NhZ2U6lD4gKGNvbmZpZ3VyZWQgcHJlZml4IHN0cmluZykoYWRkcmVzcykApGFuZCBgYWRkcmVzc2AgbWF0Y2hlcyB0aGUgYGRlc3RgIGFjY291bnQuACxQYXJhbWV0ZXJzOtgtIGBkZXN0YDogVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgdG8gcGF5b3V0IHRoZSBjbGFpbS5dAS0gYGV0aGVyZXVtX3NpZ25hdHVyZWA6IFRoZSBzaWduYXR1cmUgb2YgYW4gZXRoZXJldW0gc2lnbmVkIG1lc3NhZ2UgbWF0Y2hpbmcgdGhlIGZvcm1hdEggIGRlc2NyaWJlZCBhYm92ZS4AIDx3ZWlnaHQ+/FRoZSB3ZWlnaHQgb2YgdGhpcyBjYWxsIGlzIGludmFyaWFudCBvdmVyIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLuBXZWlnaHQgaW5jbHVkZXMgbG9naWMgdG8gdmFsaWRhdGUgdW5zaWduZWQgYGNsYWltYCBjYWxsLgBYVG90YWwgQ29tcGxleGl0eTogTygxKSQ8L3dlaWdodD4obWludF9jbGFpbRABDHdob3kBATxFdGhlcmV1bUFkZHJlc3MAARR2YWx1ZVUBATBCYWxhbmNlT2Y8VD4AAUB2ZXN0aW5nX3NjaGVkdWxlfQEB3E9wdGlvbjwoQmFsYW5jZU9mPFQ+LCBCYWxhbmNlT2Y8VD4sIEJsb2NrTnVtYmVyRm9yPFQ+KT4AASRzdGF0ZW1lbnSFAQFUT3B0aW9uPFN0YXRlbWVudEtpbmQ+AAE8hE1pbnQgYSBuZXcgY2xhaW0gdG8gY29sbGVjdCBET1RzLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgAsUGFyYW1ldGVyczrwLSBgd2hvYDogVGhlIEV0aGVyZXVtIGFkZHJlc3MgYWxsb3dlZCB0byBjb2xsZWN0IHRoaXMgY2xhaW0uzC0gYHZhbHVlYDogVGhlIG51bWJlciBvZiBET1RzIHRoYXQgd2lsbCBiZSBjbGFpbWVkLgkBLSBgdmVzdGluZ19zY2hlZHVsZWA6IEFuIG9wdGlvbmFsIHZlc3Rpbmcgc2NoZWR1bGUgZm9yIHRoZXNlIERPVHMuACA8d2VpZ2h0PvxUaGUgd2VpZ2h0IG9mIHRoaXMgY2FsbCBpcyBpbnZhcmlhbnQgb3ZlciB0aGUgaW5wdXQgcGFyYW1ldGVycy4dAVdlIGFzc3VtZSB3b3JzdCBjYXNlIHRoYXQgYm90aCB2ZXN0aW5nIGFuZCBzdGF0ZW1lbnQgaXMgYmVpbmcgaW5zZXJ0ZWQuAFhUb3RhbCBDb21wbGV4aXR5OiBPKDEpJDwvd2VpZ2h0PjBjbGFpbV9hdHRlc3QMARBkZXN0BAEwVDo6QWNjb3VudElkAAFIZXRoZXJldW1fc2lnbmF0dXJlcQEBOEVjZHNhU2lnbmF0dXJlAAEkc3RhdGVtZW50GAEcVmVjPHU4PgACbORNYWtlIGEgY2xhaW0gdG8gY29sbGVjdCB5b3VyIERPVHMgYnkgc2lnbmluZyBhIHN0YXRlbWVudC4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Ob25lXy4AUFVuc2lnbmVkIFZhbGlkYXRpb246KQFBIGNhbGwgdG8gYGNsYWltX2F0dGVzdGAgaXMgZGVlbWVkIHZhbGlkIGlmIHRoZSBzaWduYXR1cmUgcHJvdmlkZWQgbWF0Y2hlc3x0aGUgZXhwZWN0ZWQgc2lnbmVkIG1lc3NhZ2Ugb2Y6AGg+IEV0aGVyZXVtIFNpZ25lZCBNZXNzYWdlOsA+IChjb25maWd1cmVkIHByZWZpeCBzdHJpbmcpKGFkZHJlc3MpKHN0YXRlbWVudCkASQFhbmQgYGFkZHJlc3NgIG1hdGNoZXMgdGhlIGBkZXN0YCBhY2NvdW50OyB0aGUgYHN0YXRlbWVudGAgbXVzdCBtYXRjaCB0aGF0IHdoaWNoIGlzwGV4cGVjdGVkIGFjY29yZGluZyB0byB5b3VyIHB1cmNoYXNlIGFycmFuZ2VtZW50LgAsUGFyYW1ldGVyczrYLSBgZGVzdGA6IFRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IHRvIHBheW91dCB0aGUgY2xhaW0uXQEtIGBldGhlcmV1bV9zaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIGFuIGV0aGVyZXVtIHNpZ25lZCBtZXNzYWdlIG1hdGNoaW5nIHRoZSBmb3JtYXRIICBkZXNjcmliZWQgYWJvdmUuOQEtIGBzdGF0ZW1lbnRgOiBUaGUgaWRlbnRpdHkgb2YgdGhlIHN0YXRlbWVudCB3aGljaCBpcyBiZWluZyBhdHRlc3RlZCB0byBpbiB0aGUwICBzaWduYXR1cmUuACA8d2VpZ2h0PvxUaGUgd2VpZ2h0IG9mIHRoaXMgY2FsbCBpcyBpbnZhcmlhbnQgb3ZlciB0aGUgaW5wdXQgcGFyYW1ldGVycy78V2VpZ2h0IGluY2x1ZGVzIGxvZ2ljIHRvIHZhbGlkYXRlIHVuc2lnbmVkIGBjbGFpbV9hdHRlc3RgIGNhbGwuAFhUb3RhbCBDb21wbGV4aXR5OiBPKDEpJDwvd2VpZ2h0PhhhdHRlc3QEASRzdGF0ZW1lbnQYARxWZWM8dTg+AANM9EF0dGVzdCB0byBhIHN0YXRlbWVudCwgbmVlZGVkIHRvIGZpbmFsaXplIHRoZSBjbGFpbXMgcHJvY2Vzcy4AGQFXQVJOSU5HOiBJbnNlY3VyZSB1bmxlc3MgeW91ciBjaGFpbiBpbmNsdWRlcyBgUHJldmFsaWRhdGVBdHRlc3RzYCBhcyBhXGBUcmFuc2FjdGlvbkV4dGVuc2lvbmAuAFBVbnNpZ25lZCBWYWxpZGF0aW9uOikBQSBjYWxsIHRvIGF0dGVzdCBpcyBkZWVtZWQgdmFsaWQgaWYgdGhlIHNlbmRlciBoYXMgYSBgUHJlY2xhaW1gIHJlZ2lzdGVyZWT0YW5kIHByb3ZpZGVzIGEgYHN0YXRlbWVudGAgd2hpY2ggaXMgZXhwZWN0ZWQgZm9yIHRoZSBhY2NvdW50LgAsUGFyYW1ldGVyczo5AS0gYHN0YXRlbWVudGA6IFRoZSBpZGVudGl0eSBvZiB0aGUgc3RhdGVtZW50IHdoaWNoIGlzIGJlaW5nIGF0dGVzdGVkIHRvIGluIHRoZTAgIHNpZ25hdHVyZS4AIDx3ZWlnaHQ+/FRoZSB3ZWlnaHQgb2YgdGhpcyBjYWxsIGlzIGludmFyaWFudCBvdmVyIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLvBXZWlnaHQgaW5jbHVkZXMgbG9naWMgdG8gZG8gcHJlLXZhbGlkYXRpb24gb24gYGF0dGVzdGAgY2FsbC4AWFRvdGFsIENvbXBsZXhpdHk6IE8oMSkkPC93ZWlnaHQ+KG1vdmVfY2xhaW0MAQxvbGR5AQE8RXRoZXJldW1BZGRyZXNzAAEMbmV3eQEBPEV0aGVyZXVtQWRkcmVzcwABOG1heWJlX3ByZWNsYWltjQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAQABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLnEBDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXM4RWNkc2FTaWduYXR1cmUAAAQAdQEBIFt1ODsgNjVdAAB1AQAAA0EAAAAMAHkBDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXM8RXRoZXJldW1BZGRyZXNzAAAEABwBIFt1ODsgMjBdAAB9AQQYT3B0aW9uBARUAYEBAQgQTm9uZQAAABBTb21lBACBAQAAAQAAgQEAAAQMVQFVATgAhQEEGE9wdGlvbgQEVAGJAQEIEE5vbmUAAAAQU29tZQQAiQEAAAEAAIkBDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXM0U3RhdGVtZW50S2luZAABCBxSZWd1bGFyAAAAEFNhZnQAAQAAjQEEGE9wdGlvbgQEVAEEAQgQTm9uZQAAABBTb21lBAAEAAABAACRAQxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQQQ2FsbAQEVAABJERzZXRfaW52dWxuZXJhYmxlcwQBDG5ld10BAURWZWM8VDo6QWNjb3VudElkPgAANDEBU2V0IHRoZSBsaXN0IG9mIGludnVsbmVyYWJsZSAoZml4ZWQpIGNvbGxhdG9ycy4gVGhlc2UgY29sbGF0b3JzIG11c3QgZG8gc29tZdBwcmVwYXJhdGlvbiwgbmFtZWx5IHRvIGhhdmUgcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMuAFkBVGhlIGNhbGwgd2lsbCByZW1vdmUgYW55IGFjY291bnRzIHRoYXQgaGF2ZSBub3QgcmVnaXN0ZXJlZCBrZXlzIGZyb20gdGhlIHNldC4gVGhhdCBpcyxdAWl0IGlzIG5vbi1hdG9taWM7IHRoZSBjYWxsZXIgYWNjZXB0cyBhbGwgYEFjY291bnRJZGBzIHBhc3NlZCBpbiBgbmV3YCBfaW5kaXZpZHVhbGx5XyBhczEBYWNjZXB0YWJsZSBJbnZ1bG5lcmFibGVzLCBhbmQgaXMgbm90IHByb3Bvc2luZyBhIF9zZXRfIG9mIG5ldyBJbnZ1bG5lcmFibGVzLgBZAVRoaXMgY2FsbCBkb2VzIG5vdCBtYWludGFpbiBtdXR1YWwgZXhjbHVzaXZpdHkgb2YgYEludnVsbmVyYWJsZXNgIGFuZCBgQ2FuZGlkYXRlc2AuIEl0YQFpcyByZWNvbW1lbmRlZCB0byB1c2UgYSBiYXRjaCBvZiBgYWRkX2ludnVsbmVyYWJsZWAgYW5kIGByZW1vdmVfaW52dWxuZXJhYmxlYCBpbnN0ZWFkLiBBUQFgYmF0Y2hfYWxsYCBjYW4gYWxzbyBiZSB1c2VkIHRvIGVuZm9yY2UgYXRvbWljaXR5LiBJZiBhbnkgY2FuZGlkYXRlcyBhcmUgaW5jbHVkZWQgaW5NAWBuZXdgLCB0aGV5IHNob3VsZCBiZSByZW1vdmVkIHdpdGggYHJlbW92ZV9pbnZ1bG5lcmFibGVfY2FuZGlkYXRlYCBhZnRlciBleGVjdXRpb24uAJRNdXN0IGJlIGNhbGxlZCBieSB0aGUgYFVwZGF0ZU9yaWdpbmAuWHNldF9kZXNpcmVkX2NhbmRpZGF0ZXMEAQxtYXg4AQx1MzIAARRVAVNldCB0aGUgaWRlYWwgbnVtYmVyIG9mIG5vbi1pbnZ1bG5lcmFibGUgY29sbGF0b3JzLiBJZiBsb3dlcmluZyB0aGlzIG51bWJlciwgdGhlbiB0aGVhAW51bWJlciBvZiBydW5uaW5nIGNvbGxhdG9ycyBjb3VsZCBiZSBoaWdoZXIgdGhhbiB0aGlzIGZpZ3VyZS4gQXNpZGUgZnJvbSB0aGF0IGVkZ2UgY2FzZSw1AXRoZXJlIHNob3VsZCBiZSBubyBvdGhlciB3YXkgdG8gaGF2ZSBtb3JlIGNhbmRpZGF0ZXMgdGhhbiB0aGUgZGVzaXJlZCBudW1iZXIuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuSHNldF9jYW5kaWRhY3lfYm9uZAQBEGJvbmRVAQEwQmFsYW5jZU9mPFQ+AAIceFNldCB0aGUgY2FuZGlkYWN5IGJvbmQgYW1vdW50LgBRAUlmIHRoZSBjYW5kaWRhY3kgYm9uZCBpcyBpbmNyZWFzZWQgYnkgdGhpcyBjYWxsLCBhbGwgY3VycmVudCBjYW5kaWRhdGVzIHdoaWNoIGhhdmUgYU0BZGVwb3NpdCBsb3dlciB0aGFuIHRoZSBuZXcgYm9uZCB3aWxsIGJlIGtpY2tlZCBmcm9tIHRoZSBsaXN0IGFuZCBnZXQgdGhlaXIgZGVwb3NpdHMUYmFjay4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC5UcmVnaXN0ZXJfYXNfY2FuZGlkYXRlAAMQQQFSZWdpc3RlciB0aGlzIGFjY291bnQgYXMgYSBjb2xsYXRvciBjYW5kaWRhdGUuIFRoZSBhY2NvdW50IG11c3QgKGEpIGFscmVhZHkgaGF2ZR0BcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMgYW5kIChiKSBiZSBhYmxlIHRvIHJlc2VydmUgdGhlIGBDYW5kaWRhY3lCb25kYC4A3FRoaXMgY2FsbCBpcyBub3QgYXZhaWxhYmxlIHRvIGBJbnZ1bG5lcmFibGVgIGNvbGxhdG9ycy4wbGVhdmVfaW50ZW50AAQUVQFEZXJlZ2lzdGVyIGBvcmlnaW5gIGFzIGEgY29sbGF0b3IgY2FuZGlkYXRlLiBOb3RlIHRoYXQgdGhlIGNvbGxhdG9yIGNhbiBvbmx5IGxlYXZlIG9uDQFzZXNzaW9uIGNoYW5nZS4gVGhlIGBDYW5kaWRhY3lCb25kYCB3aWxsIGJlIHVucmVzZXJ2ZWQgaW1tZWRpYXRlbHkuABkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgdG90YWwgbnVtYmVyIG9mIGNhbmRpZGF0ZXMgd291bGQgZHJvcCBiZWxvd1xgTWluRWxpZ2libGVDb2xsYXRvcnNgLkBhZGRfaW52dWxuZXJhYmxlBAEMd2hvBAEwVDo6QWNjb3VudElkAAUQRQFBZGQgYSBuZXcgYWNjb3VudCBgd2hvYCB0byB0aGUgbGlzdCBvZiBgSW52dWxuZXJhYmxlc2AgY29sbGF0b3JzLiBgd2hvYCBtdXN0IGhhdmUdAXJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLiBJZiBgd2hvYCBpcyBhIGNhbmRpZGF0ZSwgdGhleSB3aWxsIGJlIHJlbW92ZWQuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuTHJlbW92ZV9pbnZ1bG5lcmFibGUEAQx3aG8EATBUOjpBY2NvdW50SWQABhBhAVJlbW92ZSBhbiBhY2NvdW50IGB3aG9gIGZyb20gdGhlIGxpc3Qgb2YgYEludnVsbmVyYWJsZXNgIGNvbGxhdG9ycy4gYEludnVsbmVyYWJsZXNgIG11c3QoYmUgc29ydGVkLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLix1cGRhdGVfYm9uZAQBLG5ld19kZXBvc2l0VQEBMEJhbGFuY2VPZjxUPgAHHF0BVXBkYXRlIHRoZSBjYW5kaWRhY3kgYm9uZCBvZiBjb2xsYXRvciBjYW5kaWRhdGUgYG9yaWdpbmAgdG8gYSBuZXcgYW1vdW50IGBuZXdfZGVwb3NpdGAuAEEBU2V0dGluZyBhIGBuZXdfZGVwb3NpdGAgdGhhdCBpcyBsb3dlciB0aGFuIHRoZSBjdXJyZW50IGRlcG9zaXQgd2hpbGUgYG9yaWdpbmAgaXPgb2NjdXB5aW5nIGEgdG9wLWBEZXNpcmVkQ2FuZGlkYXRlc2Agc2xvdCBpcyBub3QgYWxsb3dlZC4AWQFUaGlzIGNhbGwgd2lsbCBmYWlsIGlmIGBvcmlnaW5gIGlzIG5vdCBhIGNvbGxhdG9yIGNhbmRpZGF0ZSwgdGhlIHVwZGF0ZWQgYm9uZCBpcyBsb3dlchkBdGhhbiB0aGUgbWluaW11bSBjYW5kaWRhY3kgYm9uZCwgYW5kL29yIHRoZSBhbW91bnQgY2Fubm90IGJlIHJlc2VydmVkLkx0YWtlX2NhbmRpZGF0ZV9zbG90CAEcZGVwb3NpdFUBATBCYWxhbmNlT2Y8VD4AARh0YXJnZXQEATBUOjpBY2NvdW50SWQACBxNAVRoZSBjYWxsZXIgYG9yaWdpbmAgcmVwbGFjZXMgYSBjYW5kaWRhdGUgYHRhcmdldGAgaW4gdGhlIGNvbGxhdG9yIGNhbmRpZGF0ZSBsaXN0IGJ5VQFyZXNlcnZpbmcgYGRlcG9zaXRgLiBUaGUgYW1vdW50IGBkZXBvc2l0YCByZXNlcnZlZCBieSB0aGUgY2FsbGVyIG11c3QgYmUgZ3JlYXRlciB0aGFu4HRoZSBleGlzdGluZyBib25kIG9mIHRoZSB0YXJnZXQgaXQgaXMgdHJ5aW5nIHRvIHJlcGxhY2UuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgY2FsbGVyIGlzIGFscmVhZHkgYSBjb2xsYXRvciBjYW5kaWRhdGUgb3IgaW52dWxuZXJhYmxlLCB0aGVVAWNhbGxlciBkb2VzIG5vdCBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLCB0aGUgdGFyZ2V0IGlzIG5vdCBhIGNvbGxhdG9yIGNhbmRpZGF0ZSy8YW5kL29yIHRoZSBgZGVwb3NpdGAgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMulQEMOHBhbGxldF9zZXNzaW9uGHBhbGxldBBDYWxsBARUAAEIIHNldF9rZXlzCAEQa2V5c5kBARxUOjpLZXlzAAEUcHJvb2YYARxWZWM8dTg+AAAs5FNldHMgdGhlIHNlc3Npb24ga2V5KHMpIG9mIHRoZSBmdW5jdGlvbiBjYWxsZXIgdG8gYGtleXNgLgAdAUFsbG93cyBhbiBhY2NvdW50IHRvIHNldCBpdHMgc2Vzc2lvbiBrZXkgcHJpb3IgdG8gYmVjb21pbmcgYSB2YWxpZGF0b3IuwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgABAS0gYG9yaWdpbmA6IFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIHNpZ25lZC5VAS0gYGtleXNgOiBUaGUgbmV3IHNlc3Npb24ga2V5cyB0byBzZXQuIFRoZXNlIGFyZSB0aGUgcHVibGljIGtleXMgb2YgYWxsIHNlc3Npb25zIGtleXNcICBzZXR1cCBpbiB0aGUgcnVudGltZS5BAS0gYHByb29mYDogVGhlIHByb29mIHRoYXQgYG9yaWdpbmAgaGFzIGFjY2VzcyB0byB0aGUgcHJpdmF0ZSBrZXlzIG9mIGBrZXlzYC4gU2VlTQEgIFtgaW1wbF9vcGFxdWVfa2V5c2BdKHNwX3J1bnRpbWU6OmltcGxfb3BhcXVlX2tleXMpIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZTwgIHByb29mIGZvcm1hdC4ocHVyZ2Vfa2V5cwABIMhSZW1vdmVzIGFueSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyLgDAVGhpcyBkb2Vzbid0IHRha2UgZWZmZWN0IHVudGlsIHRoZSBuZXh0IHNlc3Npb24uAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgYWNjb3VudCBtdXN0IGJlIGVpdGhlciBiZV0BY29udmVydGlibGUgdG8gYSB2YWxpZGF0b3IgSUQgdXNpbmcgdGhlIGNoYWluJ3MgdHlwaWNhbCBhZGRyZXNzaW5nIHN5c3RlbSAodGhpcyB1c3VhbGx5UQFtZWFucyBiZWluZyBhIGNvbnRyb2xsZXIgYWNjb3VudCkgb3IgZGlyZWN0bHkgY29udmVydGlibGUgaW50byBhIHZhbGlkYXRvciBJRCAod2hpY2iUdXN1YWxseSBtZWFucyBiZWluZyBhIHN0YXNoIGFjY291bnQpLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6ZAQhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZSxTZXNzaW9uS2V5cwAABAEQYXVyYZ0BAcQ8QXVyYSBhcyAkY3JhdGU6OkJvdW5kVG9SdW50aW1lQXBwUHVibGljPjo6UHVibGljAACdARBEc3BfY29uc2Vuc3VzX2F1cmEcc3IyNTUxOSxhcHBfc3IyNTUxORhQdWJsaWMAAAQACAE8c3IyNTUxOTo6UHVibGljAAChAQxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQQQ2FsbAQEVAABFFRzdXNwZW5kX3hjbV9leGVjdXRpb24AAQxJAVN1c3BlbmRzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUsIHJlZ2FyZGxlc3Mgb2YgdGhlIHNlbmRlcidzIG9yaWdpbi4ApC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgQ29udHJvbGxlck9yaWdpbmAuUHJlc3VtZV94Y21fZXhlY3V0aW9uAAIUuFJlc3VtZXMgYWxsIFhDTSBleGVjdXRpb25zIGZvciB0aGUgWENNUCBxdWV1ZS4APQFOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGNoYW5nZSB0aGUgc3RhdHVzIG9mIHRoZSBpbi9vdXQgYm91bmQgY2hhbm5lbHMuAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLmB1cGRhdGVfc3VzcGVuZF90aHJlc2hvbGQEAQxuZXc4AQx1MzIAAxRJAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBmb3IgdGhlIG90aGVyIHNpZGUgdG8gYmV4dG9sZCB0byBzdXNwZW5kIHRoZWlyIHNlbmRpbmcuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLugtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLnN1c3BlbmRfdmFsdWVgVHVwZGF0ZV9kcm9wX3RocmVzaG9sZAQBDG5ldzgBDHUzMgAEFEUBT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIG11c3QgYmUgaW4gdGhlIHF1ZXVlIGFmdGVyIHdoaWNoIHdlIGRyb3AgYW55iGZ1cnRoZXIgbWVzc2FnZXMgZnJvbSB0aGUgY2hhbm5lbC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu7C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEuZHJvcF90aHJlc2hvbGRgXHVwZGF0ZV9yZXN1bWVfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAUUTQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggdGhlIHF1ZXVlIG11c3QgYmUgcmVkdWNlZCB0byBiZWZvcmUgaXQgc2lnbmFscwEBdGhhdCBtZXNzYWdlIHNlbmRpbmcgbWF5IHJlY29tbWVuY2UgYWZ0ZXIgaXQgaGFzIGJlZW4gc3VzcGVuZGVkLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC70LSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5yZXN1bWVfdGhyZXNob2xkYAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6lAQwocGFsbGV0X3hjbRhwYWxsZXQQQ2FsbAQEVAABRBBzZW5kCAEQZGVzdKkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEcbWVzc2FnZTECAVRCb3g8VmVyc2lvbmVkWGNtPCgpPj4AAAA8dGVsZXBvcnRfYXNzZXRzEAEQZGVzdKkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnmpAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c20DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAFIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgAdASoqVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOiBVc2UgYGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGVoICBmZWUgb24gdGhlIGBkZXN0YCBjaGFpbi5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5ccmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMQARBkZXN0qQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeakBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzbQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAAnhdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLHhkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZS4APQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIGFuZCBtYXkgbm90IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuTQEgLSBgYXNzZXRzYCBoYXZlIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuVQEgLSBgYXNzZXRzYCBoYXZlIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5hASAtIGBhc3NldHNgIGhhdmUgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmVhASAgIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGD0ICAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLgA9ASoqVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOiBVc2UgYGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHNgIGluc3RlYWQuKioAUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAuIFRoZSB3ZWlnaHQgbGltaXQgZm9yIGZlZXMgaXMgbm90IHByb3ZpZGVkIGFuZCB0aHVzIGlzIHVubGltaXRlZCy0d2l0aCBhbGwgZmVlcyB0YWtlbiBhcyBuZWVkZWQgZnJvbSB0aGUgYXNzZXQuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLhxleGVjdXRlCAEcbWVzc2FnZXEDAbRCb3g8VmVyc2lvbmVkWGNtPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPj4AAShtYXhfd2VpZ2h0EQEBGFdlaWdodAADINBFeGVjdXRlIGFuIFhDTSBtZXNzYWdlIGZyb20gYSBsb2NhbCwgc2lnbmVkLCBvcmlnaW4uAE0BQW4gZXZlbnQgaXMgZGVwb3NpdGVkIGluZGljYXRpbmcgd2hldGhlciBgbXNnYCBjb3VsZCBiZSBleGVjdXRlZCBjb21wbGV0ZWx5IG9yIG9ubHkocGFydGlhbGx5LgBdAU5vIG1vcmUgdGhhbiBgbWF4X3dlaWdodGAgd2lsbCBiZSB1c2VkIGluIGl0cyBhdHRlbXB0ZWQgZXhlY3V0aW9uLiBJZiB0aGlzIGlzIGxlc3MgdGhhbkEBdGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCB0aGF0IHRoZSBtZXNzYWdlIGNvdWxkIHRha2UgdG8gYmUgZXhlY3V0ZWQsIHRoZW4gbm98ZXhlY3V0aW9uIGF0dGVtcHQgd2lsbCBiZSBtYWRlLkRmb3JjZV94Y21fdmVyc2lvbggBIGxvY2F0aW9u/QEBNEJveDxMb2NhdGlvbj4AARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAEGEkBRXh0b2xsIHRoYXQgYSBwYXJ0aWN1bGFyIGRlc3RpbmF0aW9uIGNhbiBiZSBjb21tdW5pY2F0ZWQgd2l0aCB0aHJvdWdoIGEgcGFydGljdWxhcjx2ZXJzaW9uIG9mIFhDTS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi7YLSBgbG9jYXRpb25gOiBUaGUgZGVzdGluYXRpb24gdGhhdCBpcyBiZWluZyBkZXNjcmliZWQuEQEtIGB4Y21fdmVyc2lvbmA6IFRoZSBsYXRlc3QgdmVyc2lvbiBvZiBYQ00gdGhhdCBgbG9jYXRpb25gIHN1cHBvcnRzLmRmb3JjZV9kZWZhdWx0X3hjbV92ZXJzaW9uBAFEbWF5YmVfeGNtX3ZlcnNpb27gAUhPcHRpb248WGNtVmVyc2lvbj4ABRRZAVNldCBhIHNhZmUgWENNIHZlcnNpb24gKHRoZSB2ZXJzaW9uIHRoYXQgWENNIHNob3VsZCBiZSBlbmNvZGVkIHdpdGggaWYgdGhlIG1vc3QgcmVjZW50tHZlcnNpb24gYSBkZXN0aW5hdGlvbiBjYW4gYWNjZXB0IGlzIHVua25vd24pLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLjkBLSBgbWF5YmVfeGNtX3ZlcnNpb25gOiBUaGUgZGVmYXVsdCBYQ00gZW5jb2RpbmcgdmVyc2lvbiwgb3IgYE5vbmVgIHRvIGRpc2FibGUueGZvcmNlX3N1YnNjcmliZV92ZXJzaW9uX25vdGlmeQQBIGxvY2F0aW9uqQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ABhA5AUFzayBhIGxvY2F0aW9uIHRvIG5vdGlmeSB1cyByZWdhcmRpbmcgdGhlaXIgWENNIHZlcnNpb24gYW5kIGFueSBjaGFuZ2VzIHRvIGl0LgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLlkBLSBgbG9jYXRpb25gOiBUaGUgbG9jYXRpb24gdG8gd2hpY2ggd2Ugc2hvdWxkIHN1YnNjcmliZSBmb3IgWENNIHZlcnNpb24gbm90aWZpY2F0aW9ucy6AZm9yY2VfdW5zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbqkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAcYSQFSZXF1aXJlIHRoYXQgYSBwYXJ0aWN1bGFyIGRlc3RpbmF0aW9uIHNob3VsZCBubyBsb25nZXIgbm90aWZ5IHVzIHJlZ2FyZGluZyBhbnkgWENNQHZlcnNpb24gY2hhbmdlcy4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi49AS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIGFyZSBjdXJyZW50bHkgc3Vic2NyaWJlZCBmb3IgWENNIHZlcnNpb26oICBub3RpZmljYXRpb25zIHdoaWNoIHdlIG5vIGxvbmdlciBkZXNpcmUufGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMUARBkZXN0qQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeakBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzbQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXSlAgEsV2VpZ2h0TGltaXQACHhdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLHhkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZS4APQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIGFuZCBtYXkgbm90IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuTQEgLSBgYXNzZXRzYCBoYXZlIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuVQEgLSBgYXNzZXRzYCBoYXZlIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5hASAtIGBhc3NldHNgIGhhdmUgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmVhASAgIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGD0ICAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5cbGltaXRlZF90ZWxlcG9ydF9hc3NldHMUARBkZXN0qQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeakBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzbQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXSlAgEsV2VpZ2h0TGltaXQACUgRAVRlbGVwb3J0IHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHNvbWUgZGVzdGluYXRpb24gY2hhaW4uAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0WQFpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGVoICBmZWUgb24gdGhlIGBkZXN0YCBjaGFpbi5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLkBmb3JjZV9zdXNwZW5zaW9uBAEkc3VzcGVuZGVkWQEBEGJvb2wAChD0U2V0IG9yIHVuc2V0IHRoZSBnbG9iYWwgc3VzcGVuc2lvbiBzdGF0ZSBvZiB0aGUgWENNIGV4ZWN1dG9yLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLtAtIGBzdXNwZW5kZWRgOiBgdHJ1ZWAgdG8gc3VzcGVuZCwgYGZhbHNlYCB0byByZXN1bWUuPHRyYW5zZmVyX2Fzc2V0cxQBEGRlc3SpAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5qQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHNtAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABMHdlaWdodF9saW1pdKUCASxXZWlnaHRMaW1pdAALhF0BVHJhbnNmZXIgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHRocm91Z2ggdGhlaXIgbG9jYWws0GRlc3RpbmF0aW9uIG9yIHJlbW90ZSByZXNlcnZlLCBvciB0aHJvdWdoIHRlbGVwb3J0cy4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2Y1AWluZGV4IGBmZWVfYXNzZXRfaXRlbWAgKGhlbmNlIHJlZmVycmVkIHRvIGFzIGBmZWVzYCksIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yQQFgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0IGlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZdxvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAGEBYGFzc2V0c2AgKGV4Y2x1ZGluZyBgZmVlc2ApIG11c3QgaGF2ZSBzYW1lIHJlc2VydmUgbG9jYXRpb24gb3Igb3RoZXJ3aXNlIGJlIHRlbGVwb3J0YWJsZbB0byBgZGVzdGAsIG5vIGxpbWl0YXRpb25zIGltcG9zZWQgb24gYGZlZXNgLk0BIC0gZm9yIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbiBjaGFpbiBhbmRNASAgIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvRCAgIGBiZW5lZmljaWFyeWAuYQEgLSBmb3IgZGVzdGluYXRpb24gcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gdG8gYGRlc3RgIGNoYWluWQEgICB0byB3aXRoZHJhdyB0aGUgcmVzZXJ2ZSBhc3NldHMgZnJvbSB0aGlzIGNoYWluJ3Mgc292ZXJlaWduIGFjY291bnQgYW5kIGRlcG9zaXQgdGhlbVAgICB0byBgYmVuZWZpY2lhcnlgLl0BIC0gZm9yIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlIHJlc2VydmVzXQEgICBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3RgIHRvIG1pbnTUICAgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5RASAtIGZvciB0ZWxlcG9ydHM6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG8gbWludC90ZWxlcG9ydLAgICBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uLQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFgyKFBhcmVudCxVASAgUGFyYWNoYWluKC4uKSlgIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgWDEoUGFyYWNoYWluKC4uKSlgIHRvIHNlbmRoICBmcm9tIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS4wY2xhaW1fYXNzZXRzCAEYYXNzZXRzbQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAEsYmVuZWZpY2lhcnmpAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAMGFUBQ2xhaW1zIGFzc2V0cyB0cmFwcGVkIG9uIHRoaXMgcGFsbGV0IGJlY2F1c2Ugb2YgbGVmdG92ZXIgYXNzZXRzIGR1cmluZyBYQ00gZXhlY3V0aW9uLgCsLSBgb3JpZ2luYDogQW55b25lIGNhbiBjYWxsIHRoaXMgZXh0cmluc2ljLl0BLSBgYXNzZXRzYDogVGhlIGV4YWN0IGFzc2V0cyB0aGF0IHdlcmUgdHJhcHBlZC4gVXNlIHRoZSB2ZXJzaW9uIHRvIHNwZWNpZnkgd2hhdCB2ZXJzaW9umHdhcyB0aGUgbGF0ZXN0IHdoZW4gdGhleSB3ZXJlIHRyYXBwZWQuRQEtIGBiZW5lZmljaWFyeWA6IFRoZSBsb2NhdGlvbi9hY2NvdW50IHdoZXJlIHRoZSBjbGFpbWVkIGFzc2V0cyB3aWxsIGJlIGRlcG9zaXRlZC6MdHJhbnNmZXJfYXNzZXRzX3VzaW5nX3R5cGVfYW5kX3RoZW4cARBkZXN0qQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHNtAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAVBhc3NldHNfdHJhbnNmZXJfdHlwZZ0DAURCb3g8VHJhbnNmZXJUeXBlPgABOHJlbW90ZV9mZWVzX2lkoQMBVEJveDxWZXJzaW9uZWRBc3NldElkPgABSGZlZXNfdHJhbnNmZXJfdHlwZZ0DAURCb3g8VHJhbnNmZXJUeXBlPgABSGN1c3RvbV94Y21fb25fZGVzdDECAVRCb3g8VmVyc2lvbmVkWGNtPCgpPj4AATB3ZWlnaHRfbGltaXSlAgEsV2VpZ2h0TGltaXQADcBVAVRyYW5zZmVyIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdXNpbmcgZXhwbGljaXQgdHJhbnNmZXJodHlwZXMgZm9yIGFzc2V0cyBhbmQgZmVlcy4AWQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG1heSBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLiBDYWxsZXIgbXVzdOxwcm92aWRlIHRoZSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgIHRvIGJlIHVzZWQgZm9yIGBhc3NldHNgOlEBIC0gYFRyYW5zZmVyVHlwZTo6TG9jYWxSZXNlcnZlYDogdHJhbnNmZXIgYXNzZXRzIHRvIHNvdmVyZWlnbiBhY2NvdW50IG9mIGRlc3RpbmF0aW9uTQEgICBjaGFpbiBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZGwgICBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5ZASAtIGBUcmFuc2ZlclR5cGU6OkRlc3RpbmF0aW9uUmVzZXJ2ZWA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5ZASAtIGBUcmFuc2ZlclR5cGU6OlJlbW90ZVJlc2VydmUocmVzZXJ2ZSlgOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gYHJlc2VydmVgYQEgICBjaGFpbiB0byBtb3ZlIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyVQEgICBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4gVHlwaWNhbGx5lCAgIHRoZSByZW1vdGUgYHJlc2VydmVgIGlzIEFzc2V0IEh1Yi5FASAtIGBUcmFuc2ZlclR5cGU6OlRlbGVwb3J0YDogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgWENNIHRvIGBkZXN0YCBjaGFpbiB0b+ggICBtaW50L3RlbGVwb3J0IGFzc2V0cyBhbmQgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuAFUBT24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLCBhcyB3ZWxsIGFzIGFueSBpbnRlcm1lZGlhcnkgaG9wcywgYEJ1eUV4ZWN1dGlvbmAgaXMgdXNlZCB0byEBYnV5IGV4ZWN1dGlvbiB1c2luZyB0cmFuc2ZlcnJlZCBgYXNzZXRzYCBpZGVudGlmaWVkIGJ5IGByZW1vdGVfZmVlc19pZGAuWQFNYWtlIHN1cmUgZW5vdWdoIG9mIHRoZSBzcGVjaWZpZWQgYHJlbW90ZV9mZWVzX2lkYCBhc3NldCBpcyBpbmNsdWRlZCBpbiB0aGUgZ2l2ZW4gbGlzdGEBb2YgYGFzc2V0c2AuIGByZW1vdGVfZmVlc19pZGAgc2hvdWxkIGJlIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgLiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4ARQFgcmVtb3RlX2ZlZXNfaWRgIG1heSB1c2UgZGlmZmVyZW50IHRyYW5zZmVyIHR5cGUgdGhhbiByZXN0IG9mIGBhc3NldHNgIGFuZCBjYW4gYmWcc3BlY2lmaWVkIHRocm91Z2ggYGZlZXNfdHJhbnNmZXJfdHlwZWAuAGEBVGhlIGNhbGxlciBuZWVkcyB0byBzcGVjaWZ5IHdoYXQgc2hvdWxkIGhhcHBlbiB0byB0aGUgdHJhbnNmZXJyZWQgYXNzZXRzIG9uY2UgdGhleSByZWFjaEEBdGhlIGBkZXN0YCBjaGFpbi4gVGhpcyBpcyBkb25lIHRocm91Z2ggdGhlIGBjdXN0b21feGNtX29uX2Rlc3RgIHBhcmFtZXRlciwgd2hpY2j8Y29udGFpbnMgdGhlIGluc3RydWN0aW9ucyB0byBleGVjdXRlIG9uIGBkZXN0YCBhcyBhIGZpbmFsIHN0ZXAufCAgVGhpcyBpcyB1c3VhbGx5IGFzIHNpbXBsZSBhczpRASAgYFhjbSh2ZWMhW0RlcG9zaXRBc3NldCB7IGFzc2V0czogV2lsZChBbGxDb3VudGVkKGFzc2V0cy5sZW4oKSkpLCBiZW5lZmljaWFyeSB9XSlgLDEBICBidXQgY291bGQgYmUgc29tZXRoaW5nIG1vcmUgZXhvdGljIGxpa2Ugc2VuZGluZyB0aGUgYGFzc2V0c2AgZXZlbiBmdXJ0aGVyLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tPQEgIHJlbGF5IHRvIHBhcmFjaGFpbiwgb3IgYChwYXJlbnRzOiAyLCAoR2xvYmFsQ29uc2Vuc3VzKC4uKSwgLi4pKWAgdG8gc2VuZCBmcm9t9CAgcGFyYWNoYWluIGFjcm9zcyBhIGJyaWRnZSB0byBhbm90aGVyIGVjb3N5c3RlbSBkZXN0aW5hdGlvbi5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuPQEtIGBhc3NldHNfdHJhbnNmZXJfdHlwZWA6IFRoZSBYQ00gYFRyYW5zZmVyVHlwZWAgdXNlZCB0byB0cmFuc2ZlciB0aGUgYGFzc2V0c2AuIQEtIGByZW1vdGVfZmVlc19pZGA6IE9uZSBvZiB0aGUgaW5jbHVkZWQgYGFzc2V0c2AgdG8gYmUgdXNlZCB0byBwYXkgZmVlcy5JAS0gYGZlZXNfdHJhbnNmZXJfdHlwZWA6IFRoZSBYQ00gYFRyYW5zZmVyVHlwZWAgdXNlZCB0byB0cmFuc2ZlciB0aGUgYGZlZXNgIGFzc2V0cy5ZAS0gYGN1c3RvbV94Y21fb25fZGVzdGA6IFRoZSBYQ00gdG8gYmUgZXhlY3V0ZWQgb24gYGRlc3RgIGNoYWluIGFzIHRoZSBsYXN0IHN0ZXAgb2YgdGhlWQEgIHRyYW5zZmVyLCB3aGljaCBhbHNvIGRldGVybWluZXMgd2hhdCBoYXBwZW5zIHRvIHRoZSBhc3NldHMgb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuUGFkZF9hdXRob3JpemVkX2FsaWFzCAEcYWxpYXNlcqkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEcZXhwaXJlc/wBLE9wdGlvbjx1NjQ+AA4sXQFBdXRob3JpemUgYW5vdGhlciBgYWxpYXNlcmAgbG9jYXRpb24gdG8gYWxpYXMgaW50byB0aGUgbG9jYWwgYG9yaWdpbmAgbWFraW5nIHRoaXMgY2FsbC4pAVRoZSBgYWxpYXNlcmAgaXMgb25seSBhdXRob3JpemVkIHVudGlsIHRoZSBwcm92aWRlZCBgZXhwaXJ5YCBibG9jayBudW1iZXIuSQFUaGUgY2FsbCBjYW4gYWxzbyBiZSB1c2VkIGZvciBhIHByZXZpb3VzbHkgYXV0aG9yaXplZCBhbGlhcyBpbiBvcmRlciB0byB1cGRhdGUgaXRzWGBleHBpcnlgIGJsb2NrIG51bWJlci4AUQFVc3VhbGx5IHVzZWZ1bCB0byBhbGxvdyB5b3VyIGxvY2FsIGFjY291bnQgdG8gYmUgYWxpYXNlZCBpbnRvIGZyb20gYSByZW1vdGUgbG9jYXRpb270YWxzbyB1bmRlciB5b3VyIGNvbnRyb2wgKGxpa2UgeW91ciBhY2NvdW50IG9uIGFub3RoZXIgY2hhaW4pLgBRAVdBUk5JTkc6IG1ha2Ugc3VyZSB0aGUgY2FsbGVyIGBvcmlnaW5gICh5b3UpIHRydXN0cyB0aGUgYGFsaWFzZXJgIGxvY2F0aW9uIHRvIGFjdCBpblkBdGhlaXIveW91ciBuYW1lLiBPbmNlIGF1dGhvcml6ZWQgdXNpbmcgdGhpcyBjYWxsLCB0aGUgYGFsaWFzZXJgIGNhbiBmcmVlbHkgaW1wZXJzb25hdGXUYG9yaWdpbmAgaW4gWENNIHByb2dyYW1zIGV4ZWN1dGVkIG9uIHRoZSBsb2NhbCBjaGFpbi5ccmVtb3ZlX2F1dGhvcml6ZWRfYWxpYXMEARxhbGlhc2VyqQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ADwhdAVJlbW92ZSBhIHByZXZpb3VzbHkgYXV0aG9yaXplZCBgYWxpYXNlcmAgZnJvbSB0aGUgbGlzdCBvZiBsb2NhdGlvbnMgdGhhdCBjYW4gYWxpYXMgaW50b5B0aGUgbG9jYWwgYG9yaWdpbmAgbWFraW5nIHRoaXMgY2FsbC50cmVtb3ZlX2FsbF9hdXRob3JpemVkX2FsaWFzZXMAEAhJAVJlbW92ZSBhbGwgcHJldmlvdXNseSBhdXRob3JpemVkIGBhbGlhc2VyYHMgdGhhdCBjYW4gYWxpYXMgaW50byB0aGUgbG9jYWwgYG9yaWdpbmBEbWFraW5nIHRoaXMgY2FsbC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuqQEIDHhjbURWZXJzaW9uZWRMb2NhdGlvbgABDAhWMwQArQEBRHYzOjpNdWx0aUxvY2F0aW9uAAMACFY0BADJAQEwdjQ6OkxvY2F0aW9uAAQACFY1BAD9AQEwdjU6OkxvY2F0aW9uAAUAAK0BECxzdGFnaW5nX3hjbQh2MzRtdWx0aWxvY2F0aW9uNE11bHRpTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9ysQEBJEp1bmN0aW9ucwAAsQEQDHhjbQh2MyRqdW5jdGlvbnMkSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEALUBASBKdW5jdGlvbgABAAhYMggAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AAgAIWDMMALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AAwAIWDQQALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAEAAhYNRQAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24ABQAIWDYYALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24ABgAIWDccALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAHAAhYOCAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24ACAAAtQEQDHhjbQh2MyBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmu5AQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya7kBAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmu5AQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABRAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkwQEBGEJvZHlJZAABEHBhcnTFAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBAC9AQEkTmV0d29ya0lkAAkAALkBBBhPcHRpb24EBFQBvQEBCBBOb25lAAAAEFNvbWUEAL0BAAABAAC9ARAMeGNtCHYzIGp1bmN0aW9uJE5ldHdvcmtJZAABLCRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAcV2VzdGVuZAAEABhSb2NvY28ABQAYV29jb2NvAAYAIEV0aGVyZXVtBAEgY2hhaW5faWS0AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAADBARAMeGNtCHYzIGp1bmN0aW9uGEJvZHlJZAABKBBVbml0AAAAHE1vbmlrZXIEAHABHFt1ODsgNF0AAQAUSW5kZXgEAGABDHUzMgACACRFeGVjdXRpdmUAAwAkVGVjaG5pY2FsAAQALExlZ2lzbGF0aXZlAAUAIEp1ZGljaWFsAAYAHERlZmVuc2UABwA4QWRtaW5pc3RyYXRpb24ACAAgVHJlYXN1cnkACQAAxQEQDHhjbQh2MyBqdW5jdGlvbiBCb2R5UGFydAABFBRWb2ljZQAAABxNZW1iZXJzBAEUY291bnRgAQx1MzIAAQAgRnJhY3Rpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgACAERBdExlYXN0UHJvcG9ydGlvbggBDG5vbWABDHUzMgABFGRlbm9tYAEMdTMyAAMASE1vcmVUaGFuUHJvcG9ydGlvbggBDG5vbWABDHUzMgABFGRlbm9tYAEMdTMyAAQAAMkBECxzdGFnaW5nX3hjbQh2NCBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3LNAQEkSnVuY3Rpb25zAADNARAsc3RhZ2luZ194Y20IdjQkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBADRAQFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBADhAQFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBADlAQFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BADpAQFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BADtAQFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BADxAQFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BAD1AQFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BAD5AQFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAANEBAAADAQAAANUBANUBECxzdGFnaW5nX3hjbQh2NCBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmvZAQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya9kBAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmvZAQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABRAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkwQEBGEJvZHlJZAABEHBhcnTFAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBADdAQEkTmV0d29ya0lkAAkAANkBBBhPcHRpb24EBFQB3QEBCBBOb25lAAAAEFNvbWUEAN0BAAABAADdARAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAOEBAAADAgAAANUBAOUBAAADAwAAANUBAOkBAAADBAAAANUBAO0BAAADBQAAANUBAPEBAAADBgAAANUBAPUBAAADBwAAANUBAPkBAAADCAAAANUBAP0BECxzdGFnaW5nX3hjbQh2NSBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3IBAgEkSnVuY3Rpb25zAAABAhAsc3RhZ2luZ194Y20IdjUkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBAAFAgFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBAAVAgFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBAAZAgFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BAAdAgFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BAAhAgFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BAAlAgFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BAApAgFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BAAtAgFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAAAUCAAADAQAAAAkCAAkCECxzdGFnaW5nX3hjbQh2NSBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmsNAgFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29yaw0CAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmsNAgFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABRAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkwQEBGEJvZHlJZAABEHBhcnTFAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBAARAgEkTmV0d29ya0lkAAkAAA0CBBhPcHRpb24EBFQBEQIBCBBOb25lAAAAEFNvbWUEABECAAABAAARAhAsc3RhZ2luZ194Y20IdjUganVuY3Rpb24kTmV0d29ya0lkAAEgJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADACBFdGhlcmV1bQQBIGNoYWluX2lktAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAAFQIAAAMCAAAACQIAGQIAAAMDAAAACQIAHQIAAAMEAAAACQIAIQIAAAMFAAAACQIAJQIAAAMGAAAACQIAKQIAAAMHAAAACQIALQIAAAMIAAAACQIAMQIIDHhjbTBWZXJzaW9uZWRYY20ELFJ1bnRpbWVDYWxsAAEMCFYzBAA1AgFQdjM6OlhjbTxSdW50aW1lQ2FsbD4AAwAIVjQEAKkCAVB2NDo6WGNtPFJ1bnRpbWVDYWxsPgAEAAhWNQQA9QIBUHY1OjpYY208UnVudGltZUNhbGw+AAUAADUCDAx4Y20IdjMMWGNtBBBDYWxsAAAEADkCAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAA5AgAAAj0CAD0CDAx4Y20IdjMsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAQQIBLE11bHRpQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAQQIBLE11bHRpQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAEECASxNdWx0aUFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2VhAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0EQEBGFdlaWdodAABHHF1ZXJpZXKJAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHNBAgEsTXVsdGlBc3NldHMAASxiZW5lZmljaWFyea0BATRNdWx0aUxvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzQQIBLE11bHRpQXNzZXRzAAEQZGVzdK0BATRNdWx0aUxvY2F0aW9uAAEMeGNtNQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZI0CAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdBEBARhXZWlnaHQAARBjYWxskQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAsQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAlQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c5kCAUBNdWx0aUFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnmtAQE0TXVsdGlMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzmQIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN0rQEBNE11bHRpTG9jYXRpb24AAQx4Y201AgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZZkCAUBNdWx0aUFzc2V0RmlsdGVyAAEQd2FudEECASxNdWx0aUFzc2V0cwABHG1heGltYWxZAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c5kCAUBNdWx0aUFzc2V0RmlsdGVyAAEccmVzZXJ2Za0BATRNdWx0aUxvY2F0aW9uAAEMeGNtNQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c5kCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdK0BATRNdWx0aUxvY2F0aW9uAAEMeGNtNQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm+VAgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHOZAgFATXVsdGlBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzSQIBKE11bHRpQXNzZXQAATB3ZWlnaHRfbGltaXSlAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEADUCASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEADUCASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzQQIBLE11bHRpQXNzZXRzAAEYdGlja2V0rQEBNE11bHRpTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0EQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BABBAgEsTXVsdGlBc3NldHMAHAAsRXhwZWN0QXNzZXQEAEECASxNdWx0aUFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAIkCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAGUCAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAgQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb5UCAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAJUCAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAtQEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrvQEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9usQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgABDHhjbTUCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0SQIBKE11bHRpQXNzZXQAASB1bmxvY2tlcq0BATRNdWx0aUxvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXRJAgEoTXVsdGlBc3NldAABGHRhcmdldK0BATRNdWx0aUxvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXRJAgEoTXVsdGlBc3NldAABFG93bmVyrQEBNE11bHRpTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0SQIBKE11bHRpQXNzZXQAARhsb2NrZXKtAQE0TXVsdGlMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd1kBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBACtAQE0TXVsdGlMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXSlAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW6JAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AC8AAEECEAx4Y20IdjMobXVsdGlhc3NldCxNdWx0aUFzc2V0cwAABABFAgE8VmVjPE11bHRpQXNzZXQ+AABFAgAAAkkCAEkCEAx4Y20IdjMobXVsdGlhc3NldChNdWx0aUFzc2V0AAAIAQhpZE0CARxBc3NldElkAAEMZnVuUQIBLEZ1bmdpYmlsaXR5AABNAhAMeGNtCHYzKG11bHRpYXNzZXQcQXNzZXRJZAABCCBDb25jcmV0ZQQArQEBNE11bHRpTG9jYXRpb24AAAAgQWJzdHJhY3QEAAgBIFt1ODsgMzJdAAEAAFECEAx4Y20IdjMobXVsdGlhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAUQEBEHUxMjgAAAAsTm9uRnVuZ2libGUEAFUCATRBc3NldEluc3RhbmNlAAEAAFUCEAx4Y20IdjMobXVsdGlhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQAUQEBEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQAWQIBHFt1ODsgOF0AAwAcQXJyYXkxNgQAXQIBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAAFkCAAADCAAAAAwAXQIAAAMQAAAADABhAgwMeGNtCHYzIFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBABBAgEsTXVsdGlBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BABlAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAOAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EAHECAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQAgQIBOE1heWJlRXJyb3JDb2RlAAUAAGUCBBhPcHRpb24EBFQBaQIBCBBOb25lAAAAEFNvbWUEAGkCAAABAABpAgAABAg4bQIAbQIQDHhjbQh2Mxh0cmFpdHMURXJyb3IAAaAgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAQAKAEMdTY0ABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIATFVuaGFuZGxlZFhjbVZlcnNpb24AIwBIV2VpZ2h0TGltaXRSZWFjaGVkBAARAQEYV2VpZ2h0ACQAHEJhcnJpZXIAJQBMV2VpZ2h0Tm90Q29tcHV0YWJsZQAmAERFeGNlZWRzU3RhY2tMaW1pdAAnAABxAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAXUCBFMAAAQAfQIBGFZlYzxUPgAAdQIMDHhjbQh2MyhQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWV5AgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZXkCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAAeQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAB9AgAAAnUCAIECDAx4Y20IdjM4TWF5YmVFcnJvckNvZGUAAQwcU3VjY2VzcwAAABRFcnJvcgQAhQIBjEJvdW5kZWRWZWM8dTgsIE1heERpc3BhdGNoRXJyb3JMZW4+AAEAOFRydW5jYXRlZEVycm9yBACFAgGMQm91bmRlZFZlYzx1OCwgTWF4RGlzcGF0Y2hFcnJvckxlbj4AAgAAhQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACJAgQYT3B0aW9uBARUAa0BAQgQTm9uZQAAABBTb21lBACtAQAAAQAAjQIMDHhjbQh2MyhPcmlnaW5LaW5kAAEQGE5hdGl2ZQAAAEBTb3ZlcmVpZ25BY2NvdW50AAEAJFN1cGVydXNlcgACAAxYY20AAwAAkQIMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAAlQIMDHhjbQh2M0RRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb26tAQE0TXVsdGlMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHQRAQEYV2VpZ2h0AACZAhAMeGNtCHYzKG11bHRpYXNzZXRATXVsdGlBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQAQQIBLE11bHRpQXNzZXRzAAAAEFdpbGQEAJ0CAThXaWxkTXVsdGlBc3NldAABAACdAhAMeGNtCHYzKG11bHRpYXNzZXQ4V2lsZE11bHRpQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWRNAgEcQXNzZXRJZAABDGZ1bqECATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAYAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlkTQIBHEFzc2V0SWQAAQxmdW6hAgE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRgAQx1MzIAAwAAoQIQDHhjbQh2MyhtdWx0aWFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAAClAgwMeGNtCHYzLFdlaWdodExpbWl0AAEIJFVubGltaXRlZAAAABxMaW1pdGVkBAARAQEYV2VpZ2h0AAEAAKkCDCxzdGFnaW5nX3hjbQh2NAxYY20EEENhbGwAAAQArQIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAK0CAAACsQIAsQIMLHN0YWdpbmdfeGNtCHY0LEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEALUCARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAC1AgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEALUCARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlzQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodBEBARhXZWlnaHQAARxxdWVyaWVy4QIBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c7UCARhBc3NldHMAASxiZW5lZmljaWFyeckBASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c7UCARhBc3NldHMAARBkZXN0yQEBIExvY2F0aW9uAAEMeGNtqQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZI0CAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdBEBARhXZWlnaHQAARBjYWxskQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAzQEBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAOUCAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHPpAgEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeckBASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRz6QIBLEFzc2V0RmlsdGVyAAEQZGVzdMkBASBMb2NhdGlvbgABDHhjbakCARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZl6QIBLEFzc2V0RmlsdGVyAAEQd2FudLUCARhBc3NldHMAARxtYXhpbWFsWQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHPpAgEsQXNzZXRGaWx0ZXIAARxyZXNlcnZlyQEBIExvY2F0aW9uAAEMeGNtqQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c+kCASxBc3NldEZpbHRlcgABEGRlc3TJAQEgTG9jYXRpb24AAQx4Y22pAgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb+UCAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c+kCASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzvQIBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0pQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBACpAgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BACpAgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c7UCARhBc3NldHMAARh0aWNrZXTJAQEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0EQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAC1AgEYQXNzZXRzABwALEV4cGVjdEFzc2V0BAC1AgEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQA4QIBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAGUCAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAgQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb+UCAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAOUCAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQA1QEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3Jr3QEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uzQEBQEludGVyaW9yTG9jYXRpb24AAQx4Y22pAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldL0CARRBc3NldAABIHVubG9ja2VyyQEBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXS9AgEUQXNzZXQAARh0YXJnZXTJAQEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldL0CARRBc3NldAABFG93bmVyyQEBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldL0CARRBc3NldAABGGxvY2tlcskBASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd1kBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBADJAQEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0pQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2lu4QIBQE9wdGlvbjxMb2NhdGlvbj4ALwAAtQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0GEFzc2V0cwAABAC5AgEoVmVjPEFzc2V0PgAAuQIAAAK9AgC9AhAsc3RhZ2luZ194Y20IdjQUYXNzZXQUQXNzZXQAAAgBCGlkwQIBHEFzc2V0SWQAAQxmdW7FAgEsRnVuZ2liaWxpdHkAAMECECxzdGFnaW5nX3hjbQh2NBRhc3NldBxBc3NldElkAAAEAMkBASBMb2NhdGlvbgAAxQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBABRAQEQdTEyOAAAACxOb25GdW5naWJsZQQAyQIBNEFzc2V0SW5zdGFuY2UAAQAAyQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BABRAQEQdTEyOAABABhBcnJheTQEAHABHFt1ODsgNF0AAgAYQXJyYXk4BABZAgEcW3U4OyA4XQADABxBcnJheTE2BABdAgEgW3U4OyAxNl0ABAAcQXJyYXkzMgQACAEgW3U4OyAzMl0ABQAAzQIMLHN0YWdpbmdfeGNtCHY0IFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBAC1AgEYQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAZQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBADRAgGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAIECAThNYXliZUVycm9yQ29kZQAFAADRAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAdUCBFMAAAQA3QIBGFZlYzxUPgAA1QIMLHN0YWdpbmdfeGNtCHY0KFBhbGxldEluZm8AABgBFGluZGV4YAEMdTMyAAEQbmFtZdkCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1l2QIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3JgAQx1MzIAARRtaW5vcmABDHUzMgABFHBhdGNoYAEMdTMyAADZAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAN0CAAAC1QIA4QIEGE9wdGlvbgQEVAHJAQEIEE5vbmUAAAAQU29tZQQAyQEAAAEAAOUCDCxzdGFnaW5nX3hjbQh2NERRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb27JAQEgTG9jYXRpb24AASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0EQEBGFdlaWdodAAA6QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEFzc2V0RmlsdGVyAAEIIERlZmluaXRlBAC1AgEYQXNzZXRzAAAAEFdpbGQEAO0CASRXaWxkQXNzZXQAAQAA7QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0JFdpbGRBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZMECARxBc3NldElkAAEMZnVu8QIBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBABgAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWTBAgEcQXNzZXRJZAABDGZ1bvECATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudGABDHUzMgADAADxAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAAPUCDCxzdGFnaW5nX3hjbQh2NQxYY20EEENhbGwAAAQA+QIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAPkCAAAC/QIA/QIMLHN0YWdpbmdfeGNtCHY1LEluc3RydWN0aW9uBBBDYWxsAAHQNFdpdGhkcmF3QXNzZXQEAAEDARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAABAwEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAAEDARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlGQMBIFJlc3BvbnNlAAEobWF4X3dlaWdodBEBARhXZWlnaHQAARxxdWVyaWVyOQMBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0cwEDARhBc3NldHMAASxiZW5lZmljaWFyef0BASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cwEDARhBc3NldHMAARBkZXN0/QEBIExvY2F0aW9uAAEMeGNt9QIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZI0CAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodA0BAThPcHRpb248V2VpZ2h0PgABEGNhbGyRAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAABAgFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAPQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c0EDASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5/QEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHNBAwEsQXNzZXRGaWx0ZXIAARBkZXN0/QEBIExvY2F0aW9uAAEMeGNt9QIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVBAwEsQXNzZXRGaWx0ZXIAARB3YW50AQMBGEFzc2V0cwABHG1heGltYWxZAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c0EDASxBc3NldEZpbHRlcgABHHJlc2VydmX9AQEgTG9jYXRpb24AAQx4Y231AgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzQQMBLEFzc2V0RmlsdGVyAAEQZGVzdP0BASBMb2NhdGlvbgABDHhjbfUCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvPQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzQQMBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXMJAwEUQXNzZXQAATB3ZWlnaHRfbGltaXSlAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAPUCASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAPUCASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzAQMBGEFzc2V0cwABGHRpY2tldP0BASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQRAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAAEDARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAAEDARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAA5AwFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAHQMBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACBAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvPQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAPQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAAJAgEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmsRAgEkTmV0d29ya0lkAAEsZGVzdGluYXRpb24BAgFASW50ZXJpb3JMb2NhdGlvbgABDHhjbfUCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0CQMBFEFzc2V0AAEgdW5sb2NrZXL9AQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldAkDARRBc3NldAABGHRhcmdldP0BASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0CQMBFEFzc2V0AAEUb3duZXL9AQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0CQMBFEFzc2V0AAEYbG9ja2Vy/QEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3WQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAP0BASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXSlAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW45AwFAT3B0aW9uPExvY2F0aW9uPgAvABxQYXlGZWVzBAEUYXNzZXQJAwEUQXNzZXQAMABASW5pdGlhdGVUcmFuc2ZlchQBLGRlc3RpbmF0aW9u/QEBIExvY2F0aW9uAAEscmVtb3RlX2ZlZXNNAwFsT3B0aW9uPEFzc2V0VHJhbnNmZXJGaWx0ZXI+AAE8cHJlc2VydmVfb3JpZ2luWQEBEGJvb2wAARhhc3NldHNVAwHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNt9QIBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbl0DAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y231AgEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHNhAwGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAAAEDECxzdGFnaW5nX3hjbQh2NRRhc3NldBhBc3NldHMAAAQABQMBKFZlYzxBc3NldD4AAAUDAAACCQMACQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0FEFzc2V0AAAIAQhpZA0DARxBc3NldElkAAEMZnVuEQMBLEZ1bmdpYmlsaXR5AAANAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQcQXNzZXRJZAAABAD9AQEgTG9jYXRpb24AABEDECxzdGFnaW5nX3hjbQh2NRRhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAUQEBEHUxMjgAAAAsTm9uRnVuZ2libGUEABUDATRBc3NldEluc3RhbmNlAAEAABUDECxzdGFnaW5nX3hjbQh2NRRhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQAUQEBEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQAWQIBHFt1ODsgOF0AAwAcQXJyYXkxNgQAXQIBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAABkDDCxzdGFnaW5nX3hjbQh2NSBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQAAQMBGEFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAB0DAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQAKQMBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BACBAgE4TWF5YmVFcnJvckNvZGUABQAAHQMEGE9wdGlvbgQEVAEhAwEIEE5vbmUAAAAQU29tZQQAIQMAAAEAACEDAAAECDglAwAlAxAMeGNtCHY1GHRyYWl0cxRFcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAoAQx1NjQAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgA0VG9vTWFueUFzc2V0cwAjAExVbmhhbmRsZWRYY21WZXJzaW9uACQASFdlaWdodExpbWl0UmVhY2hlZAQAEQEBGFdlaWdodAAlABxCYXJyaWVyACYATFdlaWdodE5vdENvbXB1dGFibGUAJwBERXhjZWVkc1N0YWNrTGltaXQAKAAAKQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEtAwRTAAAEADUDARhWZWM8VD4AAC0DDCxzdGFnaW5nX3hjbQh2NShQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWUxAwGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZTEDAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAAMQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAA1AwAAAi0DADkDBBhPcHRpb24EBFQB/QEBCBBOb25lAAAAEFNvbWUEAP0BAAABAAA9Awwsc3RhZ2luZ194Y20IdjVEUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9u/QEBIExvY2F0aW9uAAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEobWF4X3dlaWdodBEBARhXZWlnaHQAAEEDECxzdGFnaW5nX3hjbQh2NRRhc3NldCxBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQAAQMBGEFzc2V0cwAAABBXaWxkBABFAwEkV2lsZEFzc2V0AAEAAEUDECxzdGFnaW5nX3hjbQh2NRRhc3NldCRXaWxkQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWQNAwEcQXNzZXRJZAABDGZ1bkkDATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAYAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlkDQMBHEFzc2V0SWQAAQxmdW5JAwE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRgAQx1MzIAAwAASQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAABNAwQYT3B0aW9uBARUAVEDAQgQTm9uZQAAABBTb21lBABRAwAAAQAAUQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0TEFzc2V0VHJhbnNmZXJGaWx0ZXIAAQwgVGVsZXBvcnQEAEEDASxBc3NldEZpbHRlcgAAADhSZXNlcnZlRGVwb3NpdAQAQQMBLEFzc2V0RmlsdGVyAAEAPFJlc2VydmVXaXRoZHJhdwQAQQMBLEFzc2V0RmlsdGVyAAIAAFUDDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBUQMEUwAABABZAwEYVmVjPFQ+AABZAwAAAlEDAF0DBBhPcHRpb24EBFQBAQIBCBBOb25lAAAAEFNvbWUEAAECAAABAABhAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAWUDBFMAAAQAaQMBGFZlYzxUPgAAZQMMLHN0YWdpbmdfeGNtCHY1EEhpbnQAAQQwQXNzZXRDbGFpbWVyBAEgbG9jYXRpb279AQEgTG9jYXRpb24AAAAAaQMAAAJlAwBtAwgMeGNtPFZlcnNpb25lZEFzc2V0cwABDAhWMwQAQQIBPHYzOjpNdWx0aUFzc2V0cwADAAhWNAQAtQIBKHY0OjpBc3NldHMABAAIVjUEAAEDASh2NTo6QXNzZXRzAAUAAHEDCAx4Y20wVmVyc2lvbmVkWGNtBCxSdW50aW1lQ2FsbAABDAhWMwQAdQMBUHYzOjpYY208UnVudGltZUNhbGw+AAMACFY0BACFAwFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAIVjUEAJEDAVB2NTo6WGNtPFJ1bnRpbWVDYWxsPgAFAAB1AwwMeGNtCHYzDFhjbQQQQ2FsbAAABAB5AwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAeQMAAAJ9AwB9AwwMeGNtCHYzLEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAEECASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAEECASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BABBAgEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlYQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodBEBARhXZWlnaHQAARxxdWVyaWVyiQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzQQIBLE11bHRpQXNzZXRzAAEsYmVuZWZpY2lhcnmtAQE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c0ECASxNdWx0aUFzc2V0cwABEGRlc3StAQE0TXVsdGlMb2NhdGlvbgABDHhjbTUCARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSNAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QRAQEYV2VpZ2h0AAEQY2FsbIEDAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EALEBAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAJUCAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHOZAgFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5rQEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c5kCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdK0BATRNdWx0aUxvY2F0aW9uAAEMeGNtNQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmWZAgFATXVsdGlBc3NldEZpbHRlcgABEHdhbnRBAgEsTXVsdGlBc3NldHMAARxtYXhpbWFsWQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHOZAgFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmWtAQE0TXVsdGlMb2NhdGlvbgABDHhjbTUCARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHOZAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3StAQE0TXVsdGlMb2NhdGlvbgABDHhjbTUCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvlQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzmQIBQE11bHRpQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc0kCAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl0pQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAB1AwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAB1AwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c0ECASxNdWx0aUFzc2V0cwABGHRpY2tldK0BATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodBEBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAQQIBLE11bHRpQXNzZXRzABwALEV4cGVjdEFzc2V0BABBAgEsTXVsdGlBc3NldHMAHQAwRXhwZWN0T3JpZ2luBACJAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBABlAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAIECAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm+VAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBACVAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EALUBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya70BASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbrEBAVRJbnRlcmlvck11bHRpTG9jYXRpb24AAQx4Y201AgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldEkCAShNdWx0aUFzc2V0AAEgdW5sb2NrZXKtAQE0TXVsdGlMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0SQIBKE11bHRpQXNzZXQAARh0YXJnZXStAQE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0SQIBKE11bHRpQXNzZXQAARRvd25lcq0BATRNdWx0aUxvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldEkCAShNdWx0aUFzc2V0AAEYbG9ja2VyrQEBNE11bHRpTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXdZAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQArQEBNE11bHRpTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0pQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luiQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAvAACBAwwMeGNtOGRvdWJsZV9lbmNvZGVkNERvdWJsZUVuY29kZWQEBFQAAAQBHGVuY29kZWQYARxWZWM8dTg+AACFAwwsc3RhZ2luZ194Y20IdjQMWGNtBBBDYWxsAAAEAIkDAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AACJAwAAAo0DAI0DDCxzdGFnaW5nX3hjbQh2NCxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BAC1AgEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAtQIBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAC1AgEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZc0CASBSZXNwb25zZQABKG1heF93ZWlnaHQRAQEYV2VpZ2h0AAEccXVlcmllcuECAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHO1AgEYQXNzZXRzAAEsYmVuZWZpY2lhcnnJAQEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHO1AgEYQXNzZXRzAAEQZGVzdMkBASBMb2NhdGlvbgABDHhjbakCARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSNAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QRAQEYV2VpZ2h0AAEQY2FsbIEDAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAM0BAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBADlAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRz6QIBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnnJAQEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c+kCASxBc3NldEZpbHRlcgABEGRlc3TJAQEgTG9jYXRpb24AAQx4Y22pAgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZekCASxBc3NldEZpbHRlcgABEHdhbnS1AgEYQXNzZXRzAAEcbWF4aW1hbFkBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRz6QIBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZckBASBMb2NhdGlvbgABDHhjbakCARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHPpAgEsQXNzZXRGaWx0ZXIAARBkZXN0yQEBIExvY2F0aW9uAAEMeGNtqQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm/lAgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHPpAgEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc70CARRBc3NldAABMHdlaWdodF9saW1pdKUCASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAhQMBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAhQMBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHO1AgEYQXNzZXRzAAEYdGlja2V0yQEBIExvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodBEBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAtQIBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQAtQIBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAOECAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBABlAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAIECAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm/lAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBADlAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EANUBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya90BASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbs0BAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtqQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXS9AgEUQXNzZXQAASB1bmxvY2tlcskBASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0vQIBFEFzc2V0AAEYdGFyZ2V0yQEBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXS9AgEUQXNzZXQAARRvd25lcskBASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXS9AgEUQXNzZXQAARhsb2NrZXLJAQEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXdZAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAyQEBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdKUCASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbuECAUBPcHRpb248TG9jYXRpb24+AC8AAJEDDCxzdGFnaW5nX3hjbQh2NQxYY20EEENhbGwAAAQAlQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAJUDAAACmQMAmQMMLHN0YWdpbmdfeGNtCHY1LEluc3RydWN0aW9uBBBDYWxsAAHQNFdpdGhkcmF3QXNzZXQEAAEDARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAABAwEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAAEDARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlGQMBIFJlc3BvbnNlAAEobWF4X3dlaWdodBEBARhXZWlnaHQAARxxdWVyaWVyOQMBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0cwEDARhBc3NldHMAASxiZW5lZmljaWFyef0BASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cwEDARhBc3NldHMAARBkZXN0/QEBIExvY2F0aW9uAAEMeGNt9QIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZI0CAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodA0BAThPcHRpb248V2VpZ2h0PgABEGNhbGyBAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAABAgFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAPQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c0EDASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5/QEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHNBAwEsQXNzZXRGaWx0ZXIAARBkZXN0/QEBIExvY2F0aW9uAAEMeGNt9QIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVBAwEsQXNzZXRGaWx0ZXIAARB3YW50AQMBGEFzc2V0cwABHG1heGltYWxZAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c0EDASxBc3NldEZpbHRlcgABHHJlc2VydmX9AQEgTG9jYXRpb24AAQx4Y231AgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzQQMBLEFzc2V0RmlsdGVyAAEQZGVzdP0BASBMb2NhdGlvbgABDHhjbfUCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvPQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzQQMBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXMJAwEUQXNzZXQAATB3ZWlnaHRfbGltaXSlAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAJEDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAJEDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzAQMBGEFzc2V0cwABGHRpY2tldP0BASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQRAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAAEDARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAAEDARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAA5AwFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAHQMBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACBAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvPQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAPQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAAJAgEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmsRAgEkTmV0d29ya0lkAAEsZGVzdGluYXRpb24BAgFASW50ZXJpb3JMb2NhdGlvbgABDHhjbfUCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0CQMBFEFzc2V0AAEgdW5sb2NrZXL9AQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldAkDARRBc3NldAABGHRhcmdldP0BASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0CQMBFEFzc2V0AAEUb3duZXL9AQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0CQMBFEFzc2V0AAEYbG9ja2Vy/QEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3WQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAP0BASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXSlAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW45AwFAT3B0aW9uPExvY2F0aW9uPgAvABxQYXlGZWVzBAEUYXNzZXQJAwEUQXNzZXQAMABASW5pdGlhdGVUcmFuc2ZlchQBLGRlc3RpbmF0aW9u/QEBIExvY2F0aW9uAAEscmVtb3RlX2ZlZXNNAwFsT3B0aW9uPEFzc2V0VHJhbnNmZXJGaWx0ZXI+AAE8cHJlc2VydmVfb3JpZ2luWQEBEGJvb2wAARhhc3NldHNVAwHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNt9QIBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbl0DAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y22RAwEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHNhAwGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAAJ0DEFBzdGFnaW5nX3hjbV9leGVjdXRvchh0cmFpdHM4YXNzZXRfdHJhbnNmZXIwVHJhbnNmZXJUeXBlAAEQIFRlbGVwb3J0AAAAMExvY2FsUmVzZXJ2ZQABAEhEZXN0aW5hdGlvblJlc2VydmUAAgA0UmVtb3RlUmVzZXJ2ZQQAqQEBRFZlcnNpb25lZExvY2F0aW9uAAMAAKEDCAx4Y21AVmVyc2lvbmVkQXNzZXRJZAABDAhWMwQATQIBLHYzOjpBc3NldElkAAMACFY0BADBAgEsdjQ6OkFzc2V0SWQABAAIVjUEAA0DASx2NTo6QXNzZXRJZAAFAAClAwxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBBDYWxsBARUAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLqkDDHBwYWxsZXRfeGNtX2JyaWRnZV9odWJfcm91dGVyGHBhbGxldBBDYWxsCARUAARJAAEEUHJlcG9ydF9icmlkZ2Vfc3RhdHVzCAEkYnJpZGdlX2lkPAEQSDI1NgABMGlzX2Nvbmdlc3RlZFkBARBib29sAAAEqE5vdGlmaWNhdGlvbiBhYm91dCBjb25nZXN0ZWQgYnJpZGdlIHF1ZXVlLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6tAwxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0EENhbGwEBFQAAQgkcmVhcF9wYWdlCAE4bWVzc2FnZV9vcmlnaW6xAwFITWVzc2FnZU9yaWdpbk9mPFQ+AAEocGFnZV9pbmRleDgBJFBhZ2VJbmRleAAABD0BUmVtb3ZlIGEgcGFnZSB3aGljaCBoYXMgbm8gbW9yZSBtZXNzYWdlcyByZW1haW5pbmcgdG8gYmUgcHJvY2Vzc2VkIG9yIGlzIHN0YWxlLkhleGVjdXRlX292ZXJ3ZWlnaHQQAThtZXNzYWdlX29yaWdpbrEDAUhNZXNzYWdlT3JpZ2luT2Y8VD4AARBwYWdlOAEkUGFnZUluZGV4AAEUaW5kZXg4ARxUOjpTaXplAAEwd2VpZ2h0X2xpbWl0EQEBGFdlaWdodAABNHhFeGVjdXRlIGFuIG92ZXJ3ZWlnaHQgbWVzc2FnZS4ATQFUZW1wb3JhcnkgcHJvY2Vzc2luZyBlcnJvcnMgd2lsbCBiZSBwcm9wYWdhdGVkIHdoZXJlYXMgcGVybWFuZW50IGVycm9ycyBhcmUgdHJlYXRlZFRhcyBzdWNjZXNzIGNvbmRpdGlvbi4AdC0gYG9yaWdpbmA6IE11c3QgYmUgYFNpZ25lZGAuNQEtIGBtZXNzYWdlX29yaWdpbmA6IFRoZSBvcmlnaW4gZnJvbSB3aGljaCB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZCBhcnJpdmVkLj0BLSBgcGFnZWA6IFRoZSBwYWdlIGluIHRoZSBxdWV1ZSBpbiB3aGljaCB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZCBpcyBzaXR0aW5nLgkBLSBgaW5kZXhgOiBUaGUgaW5kZXggaW50byB0aGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQuWQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgbWF4aW11bSBhbW91bnQgb2Ygd2VpZ2h0IGFsbG93ZWQgdG8gYmUgY29uc3VtZWQgaW4gdGhlIGV4ZWN1dGlvbkQgIG9mIHRoZSBtZXNzYWdlLgD0QmVuY2htYXJrIGNvbXBsZXhpdHkgY29uc2lkZXJhdGlvbnM6IE8oaW5kZXggKyB3ZWlnaHRfbGltaXQpLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6xAwhcY3VtdWx1c19wcmltaXRpdmVzX2NvcmVYQWdncmVnYXRlTWVzc2FnZU9yaWdpbgABDBBIZXJlAAAAGFBhcmVudAABABxTaWJsaW5nBACcARhQYXJhSWQAAgAAtQMMhHNub3dicmlkZ2VfcGFsbGV0X3N5c3RlbV9mcm9udGVuZBhwYWxsZXQQQ2FsbAQEVAABDEhzZXRfb3BlcmF0aW5nX21vZGUEARBtb2RluQMBNE9wZXJhdGluZ01vZGUAAAToU2V0IHRoZSBvcGVyYXRpbmcgbW9kZSBmb3IgZXhwb3J0aW5nIG1lc3NhZ2VzIHRvIEV0aGVyZXVtLjhyZWdpc3Rlcl90b2tlbgwBIGFzc2V0X2lkqQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASBtZXRhZGF0Yb0DATRBc3NldE1ldGFkYXRhAAEkZmVlX2Fzc2V0CQMBFEFzc2V0AAEcSQFJbml0aWF0ZXMgdGhlIHJlZ2lzdHJhdGlvbiBmb3IgYSBQb2xrYWRvdC1uYXRpdmUgdG9rZW4gYXMgYSB3cmFwcGVkIEVSQzIwIHRva2VuIG9uJEV0aGVyZXVtLowtIGBhc3NldF9pZGA6IExvY2F0aW9uIG9mIHRoZSBhc3NldEEBLSBgbWV0YWRhdGFgOiBNZXRhZGF0YSB0byBpbmNsdWRlIGluIHRoZSBpbnN0YW50aWF0ZWQgRVJDMjAgY29udHJhY3Qgb24gRXRoZXJldW0AXQFBbGwgb3JpZ2lucyBhcmUgYWxsb3dlZCwgaG93ZXZlciBgYXNzZXRfaWRgIG11c3QgYmUgYSBsb2NhdGlvbiBuZXN0ZWQgd2l0aGluIHRoZSBvcmlnaW5EY29uc2Vuc3VzIHN5c3RlbS4cYWRkX3RpcAgBKG1lc3NhZ2VfaWTFAwEkTWVzc2FnZUlkAAEUYXNzZXQJAwEUQXNzZXQAAghFAUFkZCBhbiBhZGRpdGlvbmFsIHJlbGF5ZXIgdGlwIGZvciBhIGNvbW1pdHRlZCBtZXNzYWdlIGlkZW50aWZpZWQgYnkgYG1lc3NhZ2VfaWRgLqBUaGUgdGlwIGFzc2V0IHdpbGwgYmUgc3dhcHBlZCBmb3IgZXRoZXIuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrkDDDxzbm93YnJpZGdlX2NvcmU4b3BlcmF0aW5nX21vZGVIQmFzaWNPcGVyYXRpbmdNb2RlAAEIGE5vcm1hbAAAABhIYWx0ZWQAAQAAvQMIPHNub3dicmlkZ2VfY29yZTRBc3NldE1ldGFkYXRhAAAMARBuYW1lwQMBwEJvdW5kZWRWZWM8dTgsIENvbnN0VTMyPE1FVEFEQVRBX0ZJRUxEX01BWF9MRU4+PgABGHN5bWJvbMEDAcBCb3VuZGVkVmVjPHU4LCBDb25zdFUzMjxNRVRBREFUQV9GSUVMRF9NQVhfTEVOPj4AASBkZWNpbWFscwwBCHU4AADBAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAMUDDDxzbm93YnJpZGdlX2NvcmUYcmV3YXJkJE1lc3NhZ2VJZAABCBxJbmJvdW5kBAAoAQx1NjQAAAAgT3V0Ym91bmQEACgBDHU2NAABAADJAww4cGFsbGV0X3V0aWxpdHkYcGFsbGV0EENhbGwEBFQAASAUYmF0Y2gEARRjYWxsc80DAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AABIfFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4AVQFUaGlzIHdpbGwgcmV0dXJuIGBPa2AgaW4gYWxsIGNpcmN1bXN0YW5jZXMuIFRvIGRldGVybWluZSB0aGUgc3VjY2VzcyBvZiB0aGUgYmF0Y2gsIGFuMQFldmVudCBpcyBkZXBvc2l0ZWQuIElmIGEgY2FsbCBmYWlsZWQgYW5kIHRoZSBiYXRjaCB3YXMgaW50ZXJydXB0ZWQsIHRoZW4gdGhlVQFgQmF0Y2hJbnRlcnJ1cHRlZGAgZXZlbnQgaXMgZGVwb3NpdGVkLCBhbG9uZyB3aXRoIHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCBjYWxscyBtYWRlTQFhbmQgdGhlIGVycm9yIG9mIHRoZSBmYWlsZWQgY2FsbC4gSWYgYWxsIHdlcmUgc3VjY2Vzc2Z1bCwgdGhlbiB0aGUgYEJhdGNoQ29tcGxldGVkYExldmVudCBpcyBkZXBvc2l0ZWQuNGFzX2Rlcml2YXRpdmUIARRpbmRleNEDAQx1MTYAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABNNxTZW5kIGEgY2FsbCB0aHJvdWdoIGFuIGluZGV4ZWQgcHNldWRvbnltIG9mIHRoZSBzZW5kZXIuAFUBRmlsdGVyIGZyb20gb3JpZ2luIGFyZSBwYXNzZWQgYWxvbmcuIFRoZSBjYWxsIHdpbGwgYmUgZGlzcGF0Y2hlZCB3aXRoIGFuIG9yaWdpbiB3aGljaLx1c2UgdGhlIHNhbWUgZmlsdGVyIGFzIHRoZSBvcmlnaW4gb2YgdGhpcyBjYWxsLgBFAU5PVEU6IElmIHlvdSBuZWVkIHRvIGVuc3VyZSB0aGF0IGFueSBhY2NvdW50LWJhc2VkIGZpbHRlcmluZyBpcyBub3QgaG9ub3JlZCAoaS5lLmEBYmVjYXVzZSB5b3UgZXhwZWN0IGBwcm94eWAgdG8gaGF2ZSBiZWVuIHVzZWQgcHJpb3IgaW4gdGhlIGNhbGwgc3RhY2sgYW5kIHlvdSBkbyBub3Qgd2FudFEBdGhlIGNhbGwgcmVzdHJpY3Rpb25zIHRvIGFwcGx5IHRvIGFueSBzdWItYWNjb3VudHMpLCB0aGVuIHVzZSBgYXNfbXVsdGlfdGhyZXNob2xkXzFgfGluIHRoZSBNdWx0aXNpZyBwYWxsZXQgaW5zdGVhZC4A9E5PVEU6IFByaW9yIHRvIHZlcnNpb24gKjEyLCB0aGlzIHdhcyBjYWxsZWQgYGFzX2xpbWl0ZWRfc3ViYC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiRiYXRjaF9hbGwEARRjYWxsc80DAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAI07FNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscyBhbmQgYXRvbWljYWxseSBleGVjdXRlIHRoZW0uIQFUaGUgd2hvbGUgdHJhbnNhY3Rpb24gd2lsbCByb2xsYmFjayBhbmQgZmFpbCBpZiBhbnkgb2YgdGhlIGNhbGxzIGZhaWxlZC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sZGlzcGF0Y2hfYXMIASRhc19vcmlnaW7VAwFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAxjIRGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIHByb3ZpZGVkIG9yaWdpbi4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLixmb3JjZV9iYXRjaAQBFGNhbGxzzQMBfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABDR8U2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzLtRVbmxpa2UgYGJhdGNoYCwgaXQgYWxsb3dzIGVycm9ycyBhbmQgd29uJ3QgaW50ZXJydXB0LgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBNAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sd2l0aF93ZWlnaHQIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABGHdlaWdodBEBARhXZWlnaHQABRjERGlzcGF0Y2ggYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBzcGVjaWZpZWQgd2VpZ2h0LgAtAVRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIHdlaWdodCBvZiB0aGUgY2FsbCwgYW5kIGluc3RlYWQgYWxsb3dzIHRoZbhSb290IG9yaWdpbiB0byBzcGVjaWZ5IHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uHGlmX2Vsc2UIARBtYWluIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABIGZhbGxiYWNrIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAGXBUBRGlzcGF0Y2ggYSBmYWxsYmFjayBjYWxsIGluIHRoZSBldmVudCB0aGUgbWFpbiBjYWxsIGZhaWxzIHRvIGV4ZWN1dGUusE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAORUaGlzIGZ1bmN0aW9uIGZpcnN0IGF0dGVtcHRzIHRvIGRpc3BhdGNoIHRoZSBgbWFpbmAgY2FsbC7USWYgdGhlIGBtYWluYCBjYWxsIGZhaWxzLCB0aGUgYGZhbGxiYWNrYCBpcyBhdHRlbXRlZC4VAWlmIHRoZSBmYWxsYmFjayBpcyBzdWNjZXNzZnVsbHkgZGlzcGF0Y2hlZCwgdGhlIHdlaWdodHMgb2YgYm90aCBjYWxscyUBYXJlIGFjY3VtdWxhdGVkIGFuZCBhbiBldmVudCBjb250YWluaW5nIHRoZSBtYWluIGNhbGwgZXJyb3IgaXMgZGVwb3NpdGVkLgDcSW4gdGhlIGV2ZW50IG9mIGEgZmFsbGJhY2sgZmFpbHVyZSB0aGUgd2hvbGUgY2FsbCBmYWlsc2h3aXRoIHRoZSB3ZWlnaHRzIHJldHVybmVkLgBBAS0gYG1haW5gOiBUaGUgbWFpbiBjYWxsIHRvIGJlIGRpc3BhdGNoZWQuIFRoaXMgaXMgdGhlIHByaW1hcnkgYWN0aW9uIHRvIGV4ZWN1dGUuPQEtIGBmYWxsYmFja2A6IFRoZSBmYWxsYmFjayBjYWxsIHRvIGJlIGRpc3BhdGNoZWQgaW4gY2FzZSB0aGUgYG1haW5gIGNhbGwgZmFpbHMuAEQjIyBEaXNwYXRjaCBMb2dpY0EBLSBJZiB0aGUgb3JpZ2luIGlzIGByb290YCwgYm90aCB0aGUgbWFpbiBhbmQgZmFsbGJhY2sgY2FsbHMgYXJlIGV4ZWN1dGVkIHdpdGhvdXR4ICBhcHBseWluZyBhbnkgb3JpZ2luIGZpbHRlcnMuSQEtIElmIHRoZSBvcmlnaW4gaXMgbm90IGByb290YCwgdGhlIG9yaWdpbiBmaWx0ZXIgaXMgYXBwbGllZCB0byBib3RoIHRoZSBgbWFpbmAgYW5kTCAgYGZhbGxiYWNrYCBjYWxscy4ALCMjIFVzZSBDYXNlWQEtIFNvbWUgdXNlIGNhc2VzIG1pZ2h0IGludm9sdmUgc3VibWl0dGluZyBhIGBiYXRjaGAgdHlwZSBjYWxsIGluIGVpdGhlciBtYWluLCBmYWxsYmFjayggIG9yIGJvdGguUGRpc3BhdGNoX2FzX2ZhbGxpYmxlCAEkYXNfb3JpZ2lu1QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAcUyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAFEBQWxtb3N0IHRoZSBzYW1lIGFzIFtgUGFsbGV0OjpkaXNwYXRjaF9hc2BdIGJ1dCBmb3J3YXJkcyBhbnkgZXJyb3Igb2YgdGhlIGlubmVyIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLs0DAAACIADRAwAABQQA1QMIcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUwT3JpZ2luQ2FsbGVyAAEgGHN5c3RlbQQA2QMBdGZyYW1lX3N5c3RlbTo6T3JpZ2luPFJ1bnRpbWU+AAAALFBvbGthZG90WGNtBADdAwFIcGFsbGV0X3hjbTo6T3JpZ2luAB8AKEN1bXVsdXNYY20EAOEDAWhjdW11bHVzX3BhbGxldF94Y206Ok9yaWdpbgAgABxPcmlnaW5zBADlAwF0cGFsbGV0X2N1c3RvbV9vcmlnaW5zOjpPcmlnaW4APwA0QWxpYXNBY2NvdW50cwQA6QMBjGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50czo6T3JpZ2luAGIAEFBnYXMEAPUDAWRpbmRpdl9wYWxsZXRfcGdhczo6T3JpZ2luAGMAGFJldml2ZQQAAQQBeHBhbGxldF9yZXZpdmU6Ok9yaWdpbjxSdW50aW1lPgBkADBEb3Ruc0dhdGV3YXkEAAkEAYhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheTo6T3JpZ2luAJgAANkDDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoJFJhd09yaWdpbgQkQWNjb3VudElkAQQBEBBSb290AAAAGFNpZ25lZAQABAEkQWNjb3VudElkAAEAEE5vbmUAAgAoQXV0aG9yaXplZAADAADdAwwocGFsbGV0X3hjbRhwYWxsZXQYT3JpZ2luAAEIDFhjbQQA/QEBIExvY2F0aW9uAAAAIFJlc3BvbnNlBAD9AQEgTG9jYXRpb24AAQAA4QMMSGN1bXVsdXNfcGFsbGV0X3hjbRhwYWxsZXQYT3JpZ2luAAEIFFJlbGF5AAAAQFNpYmxpbmdQYXJhY2hhaW4EAJwBGFBhcmFJZAABAADlAxRwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZShnb3Zlcm5hbmNlHG9yaWdpbnNUcGFsbGV0X2N1c3RvbV9vcmlnaW5zGE9yaWdpbgABPDBTdGFraW5nQWRtaW4AAAAkVHJlYXN1cmVyAAEAPEZlbGxvd3NoaXBBZG1pbgACADBHZW5lcmFsQWRtaW4AAwAwQXVjdGlvbkFkbWluAAQAKExlYXNlQWRtaW4ABQBMUmVmZXJlbmR1bUNhbmNlbGxlcgAGAEBSZWZlcmVuZHVtS2lsbGVyAAcALFNtYWxsVGlwcGVyAAgAJEJpZ1RpcHBlcgAJADBTbWFsbFNwZW5kZXIACgA0TWVkaXVtU3BlbmRlcgALAChCaWdTcGVuZGVyAAwARFdoaXRlbGlzdGVkQ2FsbGVyAA0ANFdpc2hGb3JDaGFuZ2UADgAA6QMMbGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50cxhwYWxsZXQYT3JpZ2luAAEEJFJpbmdBbGlhcwQA7QMBQEFsaWFzQWNjb3VudEluZm8AAAAA7QMMbGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50cxR0eXBlc0BBbGlhc0FjY291bnRJbmZvAAAQAShjb2xsZWN0aW9uCAEoSWRlbnRpZmllcgABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABEHJpbmc4ASRSaW5nSW5kZXgAAQhjYfEDATxDb250ZXh0dWFsQWxpYXMAAPEDEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5PENvbnRleHR1YWxBbGlhcwAACAEUYWxpYXMIARRBbGlhcwABHGNvbnRleHQIARxDb250ZXh0AAD1AwxEaW5kaXZfcGFsbGV0X3BnYXMYcGFsbGV0GE9yaWdpbgABBChDbGFpbUFsaWFzDAEUYWxpYXMIARRBbGlhcwABDGRhefkDAQxEYXkAAShjb2xsZWN0aW9u/QMBOFBnYXNDb2xsZWN0aW9uAAAAAPkDDDRpbmRpdl9zdXBwb3J0FHV0aWxzMEJpZ0VuZGlhblUzMgADBAAAAAwEGQFBIHUzMiBlbmNvZGVkIGluIGJpZy1lbmRpYW4gZm9ybWF0IGZvciBjb3JyZWN0IGxleGljb2dyYXBoaWMgb3JkZXJpbmcu/QMMRGluZGl2X3BhbGxldF9wZ2FzJGV4dGVuc2lvbjhQZ2FzQ29sbGVjdGlvbgABCBhQZW9wbGUAAAAoTGl0ZVBlb3BsZQABAAABBAw0cGFsbGV0X3Jldml2ZRhwYWxsZXQYT3JpZ2luBARUAQUEAQQ4RXRoVHJhbnNhY3Rpb24EAAQBMFQ6OkFjY291bnRJZAAAAAAFBAhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZRxSdW50aW1lAAAAAAkEDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRhwYWxsZXQYT3JpZ2luAAEESFBlcnNvblJlZ2lzdHJhdGlvbgQACAEUQWxpYXMAAAAADQQMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQQQ2FsbAQEVAABFFBhc19tdWx0aV90aHJlc2hvbGRfMQgBRG90aGVyX3NpZ25hdG9yaWVzXQEBRFZlYzxUOjpBY2NvdW50SWQ+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AADBRAUltbWVkaWF0ZWx5IGRpc3BhdGNoIGEgbXVsdGktc2lnbmF0dXJlIGNhbGwgdXNpbmcgYSBzaW5nbGUgYXBwcm92YWwgZnJvbSB0aGUgY2FsbGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAD0BLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGFyZSBwYXJ0IG9mIHRoZQEBbXVsdGktc2lnbmF0dXJlLCBidXQgZG8gbm90IHBhcnRpY2lwYXRlIGluIHRoZSBhcHByb3ZhbCBwcm9jZXNzLogtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuALhSZXN1bHQgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlzcGF0Y2hlZCByZXN1bHQuADQjIyBDb21wbGV4aXR5GQFPKFogKyBDKSB3aGVyZSBaIGlzIHRoZSBsZW5ndGggb2YgdGhlIGNhbGwgYW5kIEMgaXRzIGV4ZWN1dGlvbiB3ZWlnaHQuIGFzX211bHRpFAEkdGhyZXNob2xk0QMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzXQEBRFZlYzxUOjpBY2NvdW50SWQ+AAE8bWF5YmVfdGltZXBvaW50EQQBkE9wdGlvbjxUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+PgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEobWF4X3dlaWdodBEBARhXZWlnaHQAAahVAVJlZ2lzdGVyIGFwcHJvdmFsIGZvciBhIGRpc3BhdGNoIHRvIGJlIG1hZGUgZnJvbSBhIGRldGVybWluaXN0aWMgY29tcG9zaXRlIGFjY291bnQgaWb4YXBwcm92ZWQgYnkgYSB0b3RhbCBvZiBgdGhyZXNob2xkIC0gMWAgb2YgYG90aGVyX3NpZ25hdG9yaWVzYC4APQEqKklmIHRoZSBhcHByb3ZhbCB0aHJlc2hvbGQgaXMgbWV0IChpbmNsdWRpbmcgdGhlIHNlbmRlcidzIGFwcHJvdmFsKSwgdGhpcyB3aWxsRQFpbW1lZGlhdGVseSBleGVjdXRlIHRoZSBjYWxsLioqIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGV4ZWN1dGUgYSBtdWx0aXNpZyBjYWxsIC3AYGFwcHJvdmVfYXNfbXVsdGlgIHdpbGwgbmV2ZXIgdHJpZ2dlciBleGVjdXRpb24uAC0BUGF5bWVudDogYERlcG9zaXRCYXNlYCB3aWxsIGJlIHJlc2VydmVkIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCBwbHVzPQFgdGhyZXNob2xkYCB0aW1lcyBgRGVwb3NpdEZhY3RvcmAuIEl0IGlzIHJldHVybmVkIG9uY2UgdGhpcyBkaXNwYXRjaCBoYXBwZW5zIG9yNGlzIGNhbmNlbGxlZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBVAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIGZvciB0aGlzIGRpc3BhdGNoIGJlZm9yZSBpdCBpcyBleGVjdXRlZC5BAS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBjYW4gYXBwcm92ZSB0aGlzbGRpc3BhdGNoLiBNYXkgbm90IGJlIGVtcHR5LlkBLSBgbWF5YmVfdGltZXBvaW50YDogSWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gdGhpcyBtdXN0IGJlIGBOb25lYC4gSWYgaXQgaXNRAW5vdCB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gaXQgbXVzdCBiZSBgU29tZWAsIHdpdGggdGhlIHRpbWVwb2ludCAoYmxvY2sgbnVtYmVyIGFuZNR0cmFuc2FjdGlvbiBpbmRleCkgb2YgdGhlIGZpcnN0IGFwcHJvdmFsIHRyYW5zYWN0aW9uLogtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuAE0BTk9URTogRm9yIGludGVybWVkaWF0ZSBhcHByb3ZhbHMgKG5vdCB0aGUgZmluYWwgYXBwcm92YWwpLCB5b3Ugc2hvdWxkIGdlbmVyYWxseSB1c2VFAWBhcHByb3ZlX2FzX211bHRpYCBpbnN0ZWFkLCBzaW5jZSBpdCBvbmx5IHJlcXVpcmVzIGEgaGFzaCBvZiB0aGUgY2FsbCBhbmQgaXMgbW9yZShlZmZpY2llbnQuAFkBUmVzdWx0IGlzIGVxdWl2YWxlbnQgdG8gdGhlIGRpc3BhdGNoZWQgcmVzdWx0IGlmIGB0aHJlc2hvbGRgIGlzIGV4YWN0bHkgYDFgLiBPdGhlcndpc2VVAW9uIHN1Y2Nlc3MsIHJlc3VsdCBpcyBgT2tgIGFuZCB0aGUgcmVzdWx0IGZyb20gdGhlIGludGVyaW9yIGNhbGwsIGlmIGl0IHdhcyBleGVjdXRlZCzcbWF5IGJlIGZvdW5kIGluIHRoZSBkZXBvc2l0ZWQgYE11bHRpc2lnRXhlY3V0ZWRgIGV2ZW50LgA0IyMgQ29tcGxleGl0eVAtIGBPKFMgKyBaICsgQ2FsbClgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLiEBLSBPbmUgY2FsbCBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oWilgIHdoZXJlIGBaYCBpcyB0eC1sZW4uvC0gT25lIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhTKWAu1C0gVXAgdG8gb25lIGJpbmFyeSBzZWFyY2ggYW5kIGluc2VydCAoYE8obG9nUyArIFMpYCku+C0gSS9POiAxIHJlYWQgYE8oUylgLCB1cCB0byAxIG11dGF0ZSBgTyhTKWAuIFVwIHRvIG9uZSByZW1vdmUuMC0gT25lIGV2ZW50LmwtIFRoZSB3ZWlnaHQgb2YgdGhlIGBjYWxsYC5NAS0gU3RvcmFnZTogaW5zZXJ0cyBvbmUgaXRlbSwgdmFsdWUgc2l6ZSBib3VuZGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggYSBkZXBvc2l0GQEgIHRha2VuIGZvciBpdHMgbGlmZXRpbWUgb2YgYERlcG9zaXRCYXNlICsgdGhyZXNob2xkICogRGVwb3NpdEZhY3RvcmAuQGFwcHJvdmVfYXNfbXVsdGkUASR0aHJlc2hvbGTRAwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXNdAQFEVmVjPFQ6OkFjY291bnRJZD4AATxtYXliZV90aW1lcG9pbnQRBAGQT3B0aW9uPFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0AAShtYXhfd2VpZ2h0EQEBGFdlaWdodAACmFUBUmVnaXN0ZXIgYXBwcm92YWwgZm9yIGEgZGlzcGF0Y2ggdG8gYmUgbWFkZSBmcm9tIGEgZGV0ZXJtaW5pc3RpYyBjb21wb3NpdGUgYWNjb3VudCBpZvhhcHByb3ZlZCBieSBhIHRvdGFsIG9mIGB0aHJlc2hvbGQgLSAxYCBvZiBgb3RoZXJfc2lnbmF0b3JpZXNgLgA5ASoqVGhpcyBmdW5jdGlvbiB3aWxsIE5FVkVSIGV4ZWN1dGUgdGhlIGNhbGwsIGV2ZW4gaWYgdGhlIGFwcHJvdmFsIHRocmVzaG9sZCBpc1EBcmVhY2hlZC4qKiBJdCBvbmx5IHJlZ2lzdGVycyBhcHByb3ZhbC4gVG8gYWN0dWFsbHkgZXhlY3V0ZSB0aGUgY2FsbCwgYGFzX211bHRpYCBtdXN08GJlIGNhbGxlZCB3aXRoIHRoZSBmdWxsIGNhbGwgZGF0YSBieSBhbnkgb2YgdGhlIHNpZ25hdG9yaWVzLgBNAVRoaXMgZnVuY3Rpb24gaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBgYXNfbXVsdGlgIGZvciBpbnRlcm1lZGlhdGUgYXBwcm92YWxzIHNpbmNlIGl00G9ubHkgcmVxdWlyZXMgdGhlIGNhbGwgaGFzaCwgbm90IHRoZSBmdWxsIGNhbGwgZGF0YS4ALQFQYXltZW50OiBgRGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgaWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHBsdXM9AWB0aHJlc2hvbGRgIHRpbWVzIGBEZXBvc2l0RmFjdG9yYC4gSXQgaXMgcmV0dXJuZWQgb25jZSB0aGlzIGRpc3BhdGNoIGhhcHBlbnMgb3I0aXMgY2FuY2VsbGVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuWQEtIGBtYXliZV90aW1lcG9pbnRgOiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiB0aGlzIG11c3QgYmUgYE5vbmVgLiBJZiBpdCBpc1EBbm90IHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiBpdCBtdXN0IGJlIGBTb21lYCwgd2l0aCB0aGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5k1HRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWwgdHJhbnNhY3Rpb24uzC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgA9AU5PVEU6IFRvIGV4ZWN1dGUgdGhlIGNhbGwgYWZ0ZXIgYXBwcm92YWxzIGFyZSBnYXRoZXJlZCwgYW55IHNpZ25hdG9yeSBtdXN0IGNhbGwpAWBhc19tdWx0aWAgd2l0aCB0aGUgZnVsbCBjYWxsIGRhdGEuIFRoaXMgZnVuY3Rpb24gY2Fubm90IGV4ZWN1dGUgdGhlIGNhbGwuADQjIyBDb21wbGV4aXR5JC0gYE8oUylgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLtQtIFVwIHRvIG9uZSBiaW5hcnkgc2VhcmNoIGFuZCBpbnNlcnQgKGBPKGxvZ1MgKyBTKWApLvgtIEkvTzogMSByZWFkIGBPKFMpYCwgdXAgdG8gMSBtdXRhdGUgYE8oUylgLiBVcCB0byBvbmUgcmVtb3ZlLjAtIE9uZSBldmVudC5NAS0gU3RvcmFnZTogaW5zZXJ0cyBvbmUgaXRlbSwgdmFsdWUgc2l6ZSBib3VuZGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggYSBkZXBvc2l0GQEgIHRha2VuIGZvciBpdHMgbGlmZXRpbWUgb2YgYERlcG9zaXRCYXNlICsgdGhyZXNob2xkICogRGVwb3NpdEZhY3RvcmAuPGNhbmNlbF9hc19tdWx0aRABJHRocmVzaG9sZNEDAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc10BAURWZWM8VDo6QWNjb3VudElkPgABJHRpbWVwb2ludBUEAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0AA1RVAUNhbmNlbCBhIHByZS1leGlzdGluZywgb24tZ29pbmcgbXVsdGlzaWcgdHJhbnNhY3Rpb24uIEFueSBkZXBvc2l0IHJlc2VydmVkIHByZXZpb3VzbHnEZm9yIHRoaXMgb3BlcmF0aW9uIHdpbGwgYmUgdW5yZXNlcnZlZCBvbiBzdWNjZXNzLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuXQEtIGB0aW1lcG9pbnRgOiBUaGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5kIHRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWx4dHJhbnNhY3Rpb24gZm9yIHRoaXMgZGlzcGF0Y2guzC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgA0IyMgQ29tcGxleGl0eSQtIGBPKFMpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC4wLSBPbmUgZXZlbnQuhC0gSS9POiAxIHJlYWQgYE8oUylgLCBvbmUgcmVtb3ZlLnAtIFN0b3JhZ2U6IHJlbW92ZXMgb25lIGl0ZW0uMHBva2VfZGVwb3NpdAwBJHRocmVzaG9sZNEDAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc10BAURWZWM8VDo6QWNjb3VudElkPgABJGNhbGxfaGFzaAgBIFt1ODsgMzJdAAQ09FBva2UgdGhlIGRlcG9zaXQgcmVzZXJ2ZWQgZm9yIGFuIGV4aXN0aW5nIG11bHRpc2lnIG9wZXJhdGlvbi4AYQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgbXVzdCBiZSB0aGUgb3JpZ2luYWwgZGVwb3NpdG9yIG9mXHRoZSBtdWx0aXNpZyBvcGVyYXRpb24uAAEBVGhlIHRyYW5zYWN0aW9uIGZlZSBpcyB3YWl2ZWQgaWYgdGhlIGRlcG9zaXQgYW1vdW50IGhhcyBjaGFuZ2VkLgAZAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIG5lZWRlZCBmb3IgdGhpcyBtdWx0aXNpZy49AS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBhcmUgcGFydCBvZiB0aGUsICBtdWx0aXNpZy4FAS0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRoaXMgZGVwb3NpdCBpcyByZXNlcnZlZCBmb3IuAIxFbWl0cyBgRGVwb3NpdFBva2VkYCBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4RBAQYT3B0aW9uBARUARUEAQgQTm9uZQAAABBTb21lBAAVBAAAAQAAFQQIPHBhbGxldF9tdWx0aXNpZyRUaW1lcG9pbnQELEJsb2NrTnVtYmVyATgACAEYaGVpZ2h0OAEsQmxvY2tOdW1iZXIAARRpbmRleDgBDHUzMgAAGQQMMHBhbGxldF9wcm94eRhwYWxsZXQQQ2FsbAQEVAABLBRwcm94eQwBEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABQGZvcmNlX3Byb3h5X3R5cGUdBAFQT3B0aW9uPFQ6OlByb3h5VHlwZT4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAAJE0BRGlzcGF0Y2ggdGhlIGdpdmVuIGBjYWxsYCBmcm9tIGFuIGFjY291bnQgdGhhdCB0aGUgc2VuZGVyIGlzIGF1dGhvcmlzZWQgZm9yIHRocm91Z2gwYGFkZF9wcm94eWAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuYQEtIGBmb3JjZV9wcm94eV90eXBlYDogU3BlY2lmeSB0aGUgZXhhY3QgcHJveHkgdHlwZSB0byBiZSB1c2VkIGFuZCBjaGVja2VkIGZvciB0aGlzIGNhbGwu0C0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC4kYWRkX3Byb3h5DAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGUhBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgABJEUBUmVnaXN0ZXIgYSBwcm94eSBhY2NvdW50IGZvciB0aGUgc2VuZGVyIHRoYXQgaXMgYWJsZSB0byBtYWtlIGNhbGxzIG9uIGl0cyBiZWhhbGYuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6EQEtIGBwcm94eWA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIGBjYWxsZXJgIHdvdWxkIGxpa2UgdG8gbWFrZSBhIHByb3h5LvwtIGBwcm94eV90eXBlYDogVGhlIHBlcm1pc3Npb25zIGFsbG93ZWQgZm9yIHRoaXMgcHJveHkgYWNjb3VudC5NAS0gYGRlbGF5YDogVGhlIGFubm91bmNlbWVudCBwZXJpb2QgcmVxdWlyZWQgb2YgdGhlIGluaXRpYWwgcHJveHkuIFdpbGwgZ2VuZXJhbGx5IGJlFHplcm8uMHJlbW92ZV9wcm94eQwBIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShwcm94eV90eXBlIQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4AAhyoVW5yZWdpc3RlciBhIHByb3h5IGFjY291bnQgZm9yIHRoZSBzZW5kZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6JQEtIGBwcm94eWA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIGBjYWxsZXJgIHdvdWxkIGxpa2UgdG8gcmVtb3ZlIGFzIGEgcHJveHkuQQEtIGBwcm94eV90eXBlYDogVGhlIHBlcm1pc3Npb25zIGN1cnJlbnRseSBlbmFibGVkIGZvciB0aGUgcmVtb3ZlZCBwcm94eSBhY2NvdW50LjhyZW1vdmVfcHJveGllcwADGLRVbnJlZ2lzdGVyIGFsbCBwcm94eSBhY2NvdW50cyBmb3IgdGhlIHNlbmRlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBdAVdBUk5JTkc6IFRoaXMgbWF5IGJlIGNhbGxlZCBvbiBhY2NvdW50cyBjcmVhdGVkIGJ5IGBjcmVhdGVfcHVyZWAsIGhvd2V2ZXIgaWYgZG9uZSwgdGhlblkBdGhlIHVucmVzZXJ2ZWQgZmVlcyB3aWxsIGJlIGluYWNjZXNzaWJsZS4gKipBbGwgYWNjZXNzIHRvIHRoaXMgYWNjb3VudCB3aWxsIGJlIGxvc3QuKiosY3JlYXRlX3B1cmUMAShwcm94eV90eXBlIQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4AARRpbmRleNEDAQx1MTYABEg5AVNwYXduIGEgZnJlc2ggbmV3IGFjY291bnQgdGhhdCBpcyBndWFyYW50ZWVkIHRvIGJlIG90aGVyd2lzZSBpbmFjY2Vzc2libGUsIGFuZPxpbml0aWFsaXplIGl0IHdpdGggYSBwcm94eSBvZiBgcHJveHlfdHlwZWAgZm9yIGBvcmlnaW5gIHNlbmRlci4AbFJlcXVpcmVzIGEgYFNpZ25lZGAgb3JpZ2luLgBRAS0gYHByb3h5X3R5cGVgOiBUaGUgdHlwZSBvZiB0aGUgcHJveHkgdGhhdCB0aGUgc2VuZGVyIHdpbGwgYmUgcmVnaXN0ZXJlZCBhcyBvdmVyIHRoZU0BbmV3IGFjY291bnQuIFRoaXMgd2lsbCBhbG1vc3QgYWx3YXlzIGJlIHRoZSBtb3N0IHBlcm1pc3NpdmUgYFByb3h5VHlwZWAgcG9zc2libGUgdG94YWxsb3cgZm9yIG1heGltdW0gZmxleGliaWxpdHkuUQEtIGBpbmRleGA6IEEgZGlzYW1iaWd1YXRpb24gaW5kZXgsIGluIGNhc2UgdGhpcyBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgaW4gdGhlIHNhbWVdAXRyYW5zYWN0aW9uIChlLmcuIHdpdGggYHV0aWxpdHk6OmJhdGNoYCkuIFVubGVzcyB5b3UncmUgdXNpbmcgYGJhdGNoYCB5b3UgcHJvYmFibHkganVzdEB3YW50IHRvIHVzZSBgMGAuTQEtIGBkZWxheWA6IFRoZSBhbm5vdW5jZW1lbnQgcGVyaW9kIHJlcXVpcmVkIG9mIHRoZSBpbml0aWFsIHByb3h5LiBXaWxsIGdlbmVyYWxseSBiZRR6ZXJvLgBRAUZhaWxzIHdpdGggYER1cGxpY2F0ZWAgaWYgdGhpcyBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCBpbiB0aGlzIHRyYW5zYWN0aW9uLCBmcm9tIHRoZZhzYW1lIHNlbmRlciwgd2l0aCB0aGUgc2FtZSBwYXJhbWV0ZXJzLgDkRmFpbHMgaWYgdGhlcmUgYXJlIGluc3VmZmljaWVudCBmdW5kcyB0byBwYXkgZm9yIGRlcG9zaXQuJGtpbGxfcHVyZRQBHHNwYXduZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGUhBAEwVDo6UHJveHlUeXBlAAEUaW5kZXjRAwEMdTE2AAEYaGVpZ2h0YAFEQmxvY2tOdW1iZXJGb3I8VD4AASRleHRfaW5kZXhgAQx1MzIABUCgUmVtb3ZlcyBhIHByZXZpb3VzbHkgc3Bhd25lZCBwdXJlIHByb3h5LgBJAVdBUk5JTkc6ICoqQWxsIGFjY2VzcyB0byB0aGlzIGFjY291bnQgd2lsbCBiZSBsb3N0LioqIEFueSBmdW5kcyBoZWxkIGluIGl0IHdpbGwgYmU0aW5hY2Nlc3NpYmxlLgBZAVJlcXVpcmVzIGEgYFNpZ25lZGAgb3JpZ2luLCBhbmQgdGhlIHNlbmRlciBhY2NvdW50IG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgYSBjYWxsIHRvsGBjcmVhdGVfcHVyZWAgd2l0aCBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMuAFUBLSBgc3Bhd25lcmA6IFRoZSBhY2NvdW50IHRoYXQgb3JpZ2luYWxseSBjYWxsZWQgYGNyZWF0ZV9wdXJlYCB0byBjcmVhdGUgdGhpcyBhY2NvdW50LlUBLSBgaW5kZXhgOiBUaGUgZGlzYW1iaWd1YXRpb24gaW5kZXggb3JpZ2luYWxseSBwYXNzZWQgdG8gYGNyZWF0ZV9wdXJlYC4gUHJvYmFibHkgYDBgLgkBLSBgcHJveHlfdHlwZWA6IFRoZSBwcm94eSB0eXBlIG9yaWdpbmFsbHkgcGFzc2VkIHRvIGBjcmVhdGVfcHVyZWAuRQEtIGBoZWlnaHRgOiBUaGUgaGVpZ2h0IG9mIHRoZSBjaGFpbiB3aGVuIHRoZSBjYWxsIHRvIGBjcmVhdGVfcHVyZWAgd2FzIHByb2Nlc3NlZC5RAS0gYGV4dF9pbmRleGA6IFRoZSBleHRyaW5zaWMgaW5kZXggaW4gd2hpY2ggdGhlIGNhbGwgdG8gYGNyZWF0ZV9wdXJlYCB3YXMgcHJvY2Vzc2VkLgA1AUZhaWxzIHdpdGggYE5vUGVybWlzc2lvbmAgaW4gY2FzZSB0aGUgY2FsbGVyIGlzIG5vdCBhIHByZXZpb3VzbHkgY3JlYXRlZCBwdXJl+GFjY291bnQgd2hvc2UgYGNyZWF0ZV9wdXJlYCBjYWxsIGhhcyBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMuIGFubm91bmNlCAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgAGPAUBUHVibGlzaCB0aGUgaGFzaCBvZiBhIHByb3h5LWNhbGwgdGhhdCB3aWxsIGJlIG1hZGUgaW4gdGhlIGZ1dHVyZS4AXQFUaGlzIG11c3QgYmUgY2FsbGVkIHNvbWUgbnVtYmVyIG9mIGJsb2NrcyBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgYHByb3h5YCBpcyBhdHRlbXB0ZWQlAWlmIHRoZSBkZWxheSBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3h5IHJlbGF0aW9uc2hpcCBpcyBncmVhdGVyIHRoYW4gemVyby4AEQFObyBtb3JlIHRoYW4gYE1heFBlbmRpbmdgIGFubm91bmNlbWVudHMgbWF5IGJlIG1hZGUgYXQgYW55IG9uZSB0aW1lLgAJAVRoaXMgd2lsbCB0YWtlIGEgZGVwb3NpdCBvZiBgQW5ub3VuY2VtZW50RGVwb3NpdEZhY3RvcmAgYXMgd2VsbCBhcxkBYEFubm91bmNlbWVudERlcG9zaXRCYXNlYCBpZiB0aGVyZSBhcmUgbm8gb3RoZXIgcGVuZGluZyBhbm5vdW5jZW1lbnRzLgAlAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBhIHByb3h5IG9mIGByZWFsYC4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuFQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC5McmVtb3ZlX2Fubm91bmNlbWVudAgBEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGNhbGxfaGFzaDwBNENhbGxIYXNoT2Y8VD4AByhwUmVtb3ZlIGEgZ2l2ZW4gYW5ub3VuY2VtZW50LgBZAU1heSBiZSBjYWxsZWQgYnkgYSBwcm94eSBhY2NvdW50IHRvIHJlbW92ZSBhIGNhbGwgdGhleSBwcmV2aW91c2x5IGFubm91bmNlZCBhbmQgcmV0dXJuMHRoZSBkZXBvc2l0LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLhUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuTHJlamVjdF9hbm5vdW5jZW1lbnQIASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgAIKLBSZW1vdmUgdGhlIGdpdmVuIGFubm91bmNlbWVudCBvZiBhIGRlbGVnYXRlLgBhAU1heSBiZSBjYWxsZWQgYnkgYSB0YXJnZXQgKHByb3hpZWQpIGFjY291bnQgdG8gcmVtb3ZlIGEgY2FsbCB0aGF0IG9uZSBvZiB0aGVpciBkZWxlZ2F0ZXMlAShgZGVsZWdhdGVgKSBoYXMgYW5ub3VuY2VkIHRoZXkgd2FudCB0byBleGVjdXRlLiBUaGUgZGVwb3NpdCBpcyByZXR1cm5lZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczr0LSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0aGF0IHByZXZpb3VzbHkgYW5ub3VuY2VkIHRoZSBjYWxsLrwtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlLjxwcm94eV9hbm5vdW5jZWQQASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAZm9yY2VfcHJveHlfdHlwZR0EAVBPcHRpb248VDo6UHJveHlUeXBlPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAksTQFEaXNwYXRjaCB0aGUgZ2l2ZW4gYGNhbGxgIGZyb20gYW4gYWNjb3VudCB0aGF0IHRoZSBzZW5kZXIgaXMgYXV0aG9yaXplZCBmb3IgdGhyb3VnaDBgYWRkX3Byb3h5YC4AqFJlbW92ZXMgYW55IGNvcnJlc3BvbmRpbmcgYW5ub3VuY2VtZW50KHMpLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLmEBLSBgZm9yY2VfcHJveHlfdHlwZWA6IFNwZWNpZnkgdGhlIGV4YWN0IHByb3h5IHR5cGUgdG8gYmUgdXNlZCBhbmQgY2hlY2tlZCBmb3IgdGhpcyBjYWxsLtAtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuMHBva2VfZGVwb3NpdAAKIEkBUG9rZSAvIEFkanVzdCBkZXBvc2l0cyBtYWRlIGZvciBwcm94aWVzIGFuZCBhbm5vdW5jZW1lbnRzIGJhc2VkIG9uIGN1cnJlbnQgdmFsdWVzLg0BVGhpcyBjYW4gYmUgdXNlZCBieSBhY2NvdW50cyB0byBwb3NzaWJseSBsb3dlciB0aGVpciBsb2NrZWQgYW1vdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAAEBVGhlIHRyYW5zYWN0aW9uIGZlZSBpcyB3YWl2ZWQgaWYgdGhlIGRlcG9zaXQgYW1vdW50IGhhcyBjaGFuZ2VkLgCMRW1pdHMgYERlcG9zaXRQb2tlZGAgaWYgc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuHQQEGE9wdGlvbgQEVAEhBAEIEE5vbmUAAAAQU29tZQQAIQQAAAEAACEECHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lJFByb3h5VHlwZQABMAxBbnkAAAAsTm9uVHJhbnNmZXIAAQAsQ2FuY2VsUHJveHkAAgAYQXNzZXRzAAMAKEFzc2V0T3duZXIABAAwQXNzZXRNYW5hZ2VyAAUAIENvbGxhdG9yAAYAKEdvdmVybmFuY2UABwAcU3Rha2luZwAIADxOb21pbmF0aW9uUG9vbHMACQAcQXVjdGlvbgAKAEBQYXJhUmVnaXN0cmF0aW9uAAsAACUEDDhwYWxsZXRfaW5kaWNlcxhwYWxsZXQQQ2FsbAQEVAABGBRjbGFpbQQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAAwmEFzc2lnbiBhbiBwcmV2aW91c2x5IHVuYXNzaWduZWQgaW5kZXguANxQYXltZW50OiBgRGVwb3NpdGAgaXMgcmVzZXJ2ZWQgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4A8C0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIGNsYWltZWQuIFRoaXMgbXVzdCBub3QgYmUgaW4gdXNlLgCQRW1pdHMgYEluZGV4QXNzaWduZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLiB0cmFuc2ZlcggBDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAATBdAUFzc2lnbiBhbiBpbmRleCBhbHJlYWR5IG93bmVkIGJ5IHRoZSBzZW5kZXIgdG8gYW5vdGhlciBhY2NvdW50LiBUaGUgYmFsYW5jZSByZXNlcnZhdGlvbrhpcyBlZmZlY3RpdmVseSB0cmFuc2ZlcnJlZCB0byB0aGUgbmV3IGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AJQEtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSByZS1hc3NpZ25lZC4gVGhpcyBtdXN0IGJlIG93bmVkIGJ5IHRoZSBzZW5kZXIuXQEtIGBuZXdgOiB0aGUgbmV3IG93bmVyIG9mIHRoZSBpbmRleC4gVGhpcyBmdW5jdGlvbiBpcyBhIG5vLW9wIGlmIGl0IGlzIGVxdWFsIHRvIHNlbmRlci4AkEVtaXRzIGBJbmRleEFzc2lnbmVkYCBpZiBzdWNjZXNzZnVsLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC4QZnJlZQQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAIwlEZyZWUgdXAgYW4gaW5kZXggb3duZWQgYnkgdGhlIHNlbmRlci4AXQFQYXltZW50OiBBbnkgcHJldmlvdXMgZGVwb3NpdCBwbGFjZWQgZm9yIHRoZSBpbmRleCBpcyB1bnJlc2VydmVkIGluIHRoZSBzZW5kZXIgYWNjb3VudC4AVQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IG93biB0aGUgaW5kZXguAA0BLSBgaW5kZXhgOiB0aGUgaW5kZXggdG8gYmUgZnJlZWQuIFRoaXMgbXVzdCBiZSBvd25lZCBieSB0aGUgc2VuZGVyLgCERW1pdHMgYEluZGV4RnJlZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLjhmb3JjZV90cmFuc2ZlcgwBDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAARhmcmVlemVZAQEQYm9vbAADNFUBRm9yY2UgYW4gaW5kZXggdG8gYW4gYWNjb3VudC4gVGhpcyBkb2Vzbid0IHJlcXVpcmUgYSBkZXBvc2l0LiBJZiB0aGUgaW5kZXggaXMgYWxyZWFkeehoZWxkLCB0aGVuIGFueSBkZXBvc2l0IGlzIHJlaW1idXJzZWQgdG8gaXRzIGN1cnJlbnQgb3duZXIuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uAKQtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSAocmUtKWFzc2lnbmVkLl0BLSBgbmV3YDogdGhlIG5ldyBvd25lciBvZiB0aGUgaW5kZXguIFRoaXMgZnVuY3Rpb24gaXMgYSBuby1vcCBpZiBpdCBpcyBlcXVhbCB0byBzZW5kZXIuQQEtIGBmcmVlemVgOiBpZiBzZXQgdG8gYHRydWVgLCB3aWxsIGZyZWV6ZSB0aGUgaW5kZXggc28gaXQgY2Fubm90IGJlIHRyYW5zZmVycmVkLgCQRW1pdHMgYEluZGV4QXNzaWduZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLhhmcmVlemUEARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAAEMEEBRnJlZXplIGFuIGluZGV4IHNvIGl0IHdpbGwgYWx3YXlzIHBvaW50IHRvIHRoZSBzZW5kZXIgYWNjb3VudC4gVGhpcyBjb25zdW1lcyB0aGUgZGVwb3NpdC4AWQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGhhdmUgYWxub24tZnJvemVuIGFjY291bnQgYGluZGV4YC4ArC0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIGZyb3plbiBpbiBwbGFjZS4AiEVtaXRzIGBJbmRleEZyb3plbmAgaWYgc3VjY2Vzc2Z1bC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuMHBva2VfZGVwb3NpdAQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAUonFBva2UgdGhlIGRlcG9zaXQgcmVzZXJ2ZWQgZm9yIGFuIGluZGV4LgBZAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgaGF2ZSBhbG5vbi1mcm96ZW4gYWNjb3VudCBgaW5kZXhgLgBZAVRoZSB0cmFuc2FjdGlvbiBmZWVzIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBpcyBjaGFuZ2VkIGFmdGVyIHBva2luZy9yZWNvbnNpZGVyYXRpb24uAPwtIGBpbmRleGA6IHRoZSBpbmRleCB3aG9zZSBkZXBvc2l0IGlzIHRvIGJlIHBva2VkL3JlY29uc2lkZXJlZC4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLikEDDRwYWxsZXRfYXNzZXRzGHBhbGxldBBDYWxsCARUAARJAAGIGGNyZWF0ZQwBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlAABM6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50WQEBEGJvb2wAASxtaW5fYmFsYW5jZVEBAShUOjpCYWxhbmNlAAFM+Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uALRUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AWQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXIgcGVybWlzc2lvbnMlAW92ZXIgdGhpcyBhc3NldCwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWA0c3RhcnRfZGVzdHJveQQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgACMNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlmuGFuIGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS5AZGVzdHJveV9hY2NvdW50cwQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABSjEQ29tcGxldGUgZGVzdHJveWluZyBhc3NldCBhbmQgdW5yZXNlcnZlIGN1cnJlbmN5LgBVAWBmaW5pc2hfZGVzdHJveWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGVZAWFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLiBBbGwgYWNjb3VudHMgb3IgYXBwcm92YWxzIHNob3VsZCBiZSBkZXN0cm95ZWQgYmVmb3JlFGhhbmQuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A4EVhY2ggc3VjY2Vzc2Z1bCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZGAgZXZlbnQuEG1pbnQMAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50UQEBKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFEBAShUOjpCYWxhbmNlAAc8RQFSZWR1Y2UgdGhlIGJhbGFuY2Ugb2YgYHdob2AgYnkgYXMgbXVjaCBhcyBwb3NzaWJsZSB1cCB0byBgYW1vdW50YCBhc3NldHMgb2YgYGlkYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBNYW5hZ2VyIG9mIHRoZSBhc3NldCBgaWRgLgDQQmFpbHMgd2l0aCBgTm9BY2NvdW50YCBpZiB0aGUgYHdob2AgaXMgYWxyZWFkeSBkZWFkLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBidXJuZWQuoC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQgZnJvbS4pAS0gYGFtb3VudGA6IFRoZSBtYXhpbXVtIGFtb3VudCBieSB3aGljaCBgd2hvYCdzIGJhbGFuY2Ugc2hvdWxkIGJlIHJlZHVjZWQuAFEBRW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuIElmIHRoaXMgdGFrZXMgdGhlIGJhbGFuY2UgdG8gYmVsb3cgdGhlOQFtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCBidXJuZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgCQFNb2RlczogUG9zdC1leGlzdGVuY2Ugb2YgYHdob2A7IFByZSAmIHBvc3QgWm9tYmllLXN0YXR1cyBvZiBgd2hvYC4gdHJhbnNmZXIMAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFEBAShUOjpCYWxhbmNlAAhI0E1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLkx0cmFuc2Zlcl9rZWVwX2FsaXZlDAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRRAQEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50UQEBKFQ6OkJhbGFuY2UACky0TW92ZSBzb21lIGFzc2V0cyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6YLSBgc291cmNlYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZC6ULSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgYHNvdXJjZWAncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRZAWBkZXN0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluTQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgYHNvdXJjZWAgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dNRiZWxvdyB0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGBkZXN0YDsgUG9zdC1leGlzdGVuY2Ugb2YgYHNvdXJjZWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZhxgZGVzdGAuGGZyZWV6ZQgBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAswVQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCBmcm9tIGFuIGFjY291bnQgYHdob2AuIGB3aG9gTQFtdXN0IGFscmVhZHkgZXhpc3QgYXMgYW4gZW50cnkgaW4gYEFjY291bnRgcyBvZiB0aGUgYXNzZXQuIElmIHlvdSB3YW50IHRvIGZyZWV6ZSBhbvRhY2NvdW50IHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSwgdXNlIGB0b3VjaF9vdGhlcmAgZmlyc3QuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6ILSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjoQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmZyb3plbi4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWAwZnJlZXplX2Fzc2V0BAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAA0k8ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGNsYXNzLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgKHRoYXdfYXNzZXQEAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADiTEQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA8odENoYW5nZSB0aGUgT3duZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+ABAwxENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4ABFAeFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDYRnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6UQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUgKiAobmFtZS5sZW4gKyBzeW1ib2wubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEEAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAEiyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4ApEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgYXNzZXQgb3duZXIuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2Vfc2V0X21ldGFkYXRhFAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plblkBARBib29sABM4uEZvcmNlIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQgdG8gc29tZSB2YWx1ZS4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBoQW55IGRlcG9zaXQgaXMgbGVmdCBhbG9uZS4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgBRAVdlaWdodDogYE8oTiArIFMpYCB3aGVyZSBOIGFuZCBTIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIGFuZCBzeW1ib2wgcmVzcGVjdGl2ZWx5LlBmb3JjZV9jbGVhcl9tZXRhZGF0YQQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VRAQEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnRZAQEQYm9vbAABJGlzX2Zyb3plblkBARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50UQEBKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb24AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFEBAShUOjpCYWxhbmNlABlITQFUcmFuc2ZlciBzb21lIGFzc2V0IGJhbGFuY2UgZnJvbSBhIHByZXZpb3VzbHkgZGVsZWdhdGVkIGFjY291bnQgdG8gc29tZSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBieSB0aGUgYG93bmVyYCB0byB0aGUcc2lnbmVyLgBZAUlmIHRoZSBlbnRpcmUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2ZlciBpcyB0cmFuc2ZlcnJlZCwgdGhlbiBhbnkgZGVwb3NpdCBwcmV2aW91c2x5tHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBpcyB1bnJlc2VydmVkLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuYQEtIGBvd25lcmA6IFRoZSBhY2NvdW50IHdoaWNoIHByZXZpb3VzbHkgYXBwcm92ZWQgZm9yIGEgdHJhbnNmZXIgb2YgYXQgbGVhc3QgYGFtb3VudGAgYW5kvGZyb20gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugd2lsbCBiZSB3aXRoZHJhd24uYQEtIGBkZXN0aW5hdGlvbmA6IFRoZSBhY2NvdW50IHRvIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIG9mIGBhbW91bnRgIHdpbGwgYmUgdHJhbnNmZXJyZWQutC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXRzIHRvIHRyYW5zZmVyLgCcRW1pdHMgYFRyYW5zZmVycmVkQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYBR0b3VjaAQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAaJMBDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3Igbm9uLXByb3ZpZGVyIGFzc2V0cy4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhhyZWZ1bmQIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAShhbGxvd19idXJuWQEBEGJvb2wAGzRZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdLIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi5hAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLCB0aGUgYXNzZXQgc3RhdHVzIG11c3QoICBiZSBsaXZlLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHjRdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZVkBARBib29sACBAHQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhc3NldCBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0PQFhbnkgaGVsZCwgZnJvemVuLCBvciBtaW5pbXVtIGJhbGFuY2UgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQuoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYXNzZXQgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IHRvIGJlIGtpbGxlZEUBICAoZmFsc2UpLCBvciB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgbWluaW11bSBiYWxhbmNlLCB3aGljaCB3aWxs6CAgZ3VhcmFudGVlIHRvIGtlZXAgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IGFsaXZlICh0cnVlKS4wc2V0X3Jlc2VydmVzCAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgcmVzZXJ2ZXMtBAHIQm91bmRlZFZlYzxUOjpSZXNlcnZlRGF0YSwgQ29uc3RVMzI8TUFYX1JFU0VSVkVTPj4AISTEU2V0cyB0aGUgdHJ1c3RlZCByZXNlcnZlIGluZm9ybWF0aW9uIG9mIGFuIGFzc2V0LgBVAU9yaWdpbiBtdXN0IGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4gVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQlAWBDcmVhdGVPcmlnaW5gIG9yIGJlIHRoZSBzaWduZWQgYG93bmVyYCBjb25maWd1cmVkIGR1cmluZyBhc3NldCBjcmVhdGlvbi4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LvAtIGByZXNlcnZlc2A6IFRoZSBmdWxsIGxpc3Qgb2YgdHJ1c3RlZCByZXNlcnZlcyBpbmZvcm1hdGlvbi4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLi0EDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBEARTAAAEADEEARhWZWM8VD4AADEEAAACEAA1BAw4cGFsbGV0X3VuaXF1ZXMYcGFsbGV0EENhbGwIBFQABEkAAWgYY3JlYXRlCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAEAJAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAdAVRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgCsYEl0ZW1EZXBvc2l0YCBmdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkLgAsUGFyYW1ldGVyczphAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGNvbGxlY3Rpb24uIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZS5FAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJhtZW1iZXIgb2YgdGhlIGNvbGxlY3Rpb24ncyBhZG1pbiB0ZWFtLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEwZnJlZV9ob2xkaW5nWQEBEGJvb2wAAUQZAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4ArFRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4ASQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBpdGVtLiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UuOQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNvbGxlY3Rpb24gb2YgaXRlbXMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXI0ICBwZXJtaXNzaW9ucyEBb3ZlciB0aGlzIGl0ZW0sIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAcZGVzdHJveQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARx3aXRuZXNzOQQBOERlc3Ryb3lXaXRuZXNzAAI8nERlc3Ryb3kgYSBjb2xsZWN0aW9uIG9mIGZ1bmdpYmxlIGl0ZW1zLgBdAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZWhvd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgAFAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB0byBiZSBkZXN0cm95ZWQuMQEtIGB3aXRuZXNzYDogSW5mb3JtYXRpb24gb24gdGhlIGl0ZW1zIG1pbnRlZCBpbiB0aGUgY29sbGVjdGlvbi4gVGhpcyBtdXN0IGJlIGNvcnJlY3QuAKBFbWl0cyBgRGVzdHJveWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuAGRXZWlnaHQ6IGBPKG4gKyBtKWAgd2hlcmU6VC0gYG4gPSB3aXRuZXNzLml0ZW1zYHgtIGBtID0gd2l0bmVzcy5pdGVtX21ldGFkYXRhc2BoLSBgYSA9IHdpdG5lc3MuYXR0cmlidXRlc2AQbWludAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADLKBNaW50IGFuIGl0ZW0gb2YgYSBwYXJ0aWN1bGFyIGNvbGxlY3Rpb24uAEEBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBJc3N1ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBtaW50ZWQuyC0gYGl0ZW1gOiBUaGUgaXRlbSB2YWx1ZSBvZiB0aGUgaXRlbSB0byBiZSBtaW50ZWQu2C0gYGJlbmVmaWNpYXJ5YDogVGhlIGluaXRpYWwgb3duZXIgb2YgdGhlIG1pbnRlZCBpdGVtLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAQYnVybgwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEsY2hlY2tfb3duZXI9BAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAEPFhEZXN0cm95IGEgc2luZ2xlIGl0ZW0uAPRPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBiZSBlaXRoZXI6gC0gdGhlIEFkbWluIG9mIHRoZSBgY29sbGVjdGlvbmA7aC0gdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLrAtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLlEBLSBgY2hlY2tfb3duZXJgOiBJZiBgU29tZWAgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCB3aXRoIGBXcm9uZ093bmVyYCB1bmxlc3MgdGhleCAgaXRlbSBpcyBvd25lZCBieSB0aGlzIHZhbHVlLgC0RW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuADhXZWlnaHQ6IGBPKDEpYHxNb2RlczogYGNoZWNrX293bmVyLmlzX3NvbWUoKWAuIHRyYW5zZmVyDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABUTATW92ZSBhbiBpdGVtIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuALRUaGlzIHJlc2V0cyB0aGUgYXBwcm92ZWQgYWNjb3VudCBvZiB0aGUgaXRlbS4A9E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlIGVpdGhlcjqALSB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYDtoLSB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDs1AS0gdGhlIGFwcHJvdmVkIGRlbGVnYXRlIGZvciB0aGUgYGl0ZW1gIChpbiB0aGlzIGNhc2UsIHRoZSBhcHByb3ZhbCBpcyByZXNldCkuAChBcmd1bWVudHM69C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSB0cmFuc2ZlcnJlZC7ELSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIHRyYW5zZmVycmVkLtwtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gcmVjZWl2ZSBvd25lcnNoaXAgb2YgdGhlIGl0ZW0uAFBFbWl0cyBgVHJhbnNmZXJyZWRgLgA4V2VpZ2h0OiBgTygxKWAkcmVkZXBvc2l0CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFGl0ZW1zQQQBOFZlYzxUOjpJdGVtSWQ+AAZEmFJlZXZhbHVhdGUgdGhlIGRlcG9zaXRzIG9uIHNvbWUgaXRlbXMuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBmcm96ZW4uKQEtIGBpdGVtc2A6IFRoZSBpdGVtcyBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBkZXBvc2l0cyB3aWxsIGJlIHJlZXZhbHVhdGVkLgAtAU5PVEU6IFRoaXMgZXhpc3RzIGFzIGEgYmVzdC1lZmZvcnQgZnVuY3Rpb24uIEFueSBpdGVtcyB3aGljaCBhcmUgdW5rbm93biBvcjkBaW4gdGhlIGNhc2UgdGhhdCB0aGUgb3duZXIgYWNjb3VudCBkb2VzIG5vdCBoYXZlIHJlc2VydmFibGUgZnVuZHMgdG8gcGF5IGZvciBhTQFkZXBvc2l0IGluY3JlYXNlIGFyZSBpZ25vcmVkLiBHZW5lcmFsbHkgdGhlIG93bmVyIGlzbid0IGdvaW5nIHRvIGNhbGwgdGhpcyBvbiBpdGVtc1UBd2hvc2UgZXhpc3RpbmcgZGVwb3NpdCBpcyBsZXNzIHRoYW4gdGhlIHJlZnJlc2hlZCBkZXBvc2l0IGFzIGl0IHdvdWxkIG9ubHkgY29zdCB0aGVtLHhzbyBpdCdzIG9mIGxpdHRsZSBjb25zZXF1ZW5jZS4AWQFJdCB3aWxsIHN0aWxsIHJldHVybiBhbiBlcnJvciBpbiB0aGUgY2FzZSB0aGF0IHRoZSBjb2xsZWN0aW9uIGlzIHVua25vd24gb2YgdGhlIHNpZ25lcnBpcyBub3QgcGVybWl0dGVkIHRvIGNhbGwgaXQuAGBXZWlnaHQ6IGBPKGl0ZW1zLmxlbigpKWAYZnJlZXplCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAByjIRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXIgb2YgYW4gaXRlbS4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgZnJvemVuLrAtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQACCioUmUtYWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVyIG9mIGFuIGl0ZW0uAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHRoYXdlZC6wLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBEZnJlZXplX2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAkk/ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgYSB3aG9sZSBjb2xsZWN0aW9uLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBmcm96ZW4uAGRFbWl0cyBgQ29sbGVjdGlvbkZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYDx0aGF3X2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAok3FJlLWFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIGEgd2hvbGUgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYGNvbGxlY3Rpb25gLgCwLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHRvIGJlIHRoYXdlZC4AZEVtaXRzIGBDb2xsZWN0aW9uVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgALLIRDaGFuZ2UgdGhlIE93bmVyIG9mIGEgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgD0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHdob3NlIG93bmVyIHNob3VsZCBiZSBjaGFuZ2VkLgkBLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhleSBtdXN0IGhhdmUgY2FsbGVkSQEgIGBzZXRfYWNjZXB0X293bmVyc2hpcGAgd2l0aCBgY29sbGVjdGlvbmAgaW4gb3JkZXIgZm9yIHRoaXMgb3BlcmF0aW9uIHRvIHN1Y2NlZWQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAMMNRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYSBjb2xsZWN0aW9uLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAPAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gd2hvc2UgdGVhbSBzaG91bGQgYmUgY2hhbmdlZC64LSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBjb2xsZWN0aW9uLrAtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBjb2xsZWN0aW9uLsAtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgY29sbGVjdGlvbi4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AA04FQFBcHByb3ZlIGFuIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4ATQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZfhlaXRoZXIgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAgb3IgdGhlIGFkbWluIG9mIHRoZSBjb2xsZWN0aW9uLgBFAS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyLhUBLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIuGQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgdGhlIGl0ZW0uABkBSW1wb3J0YW50IE5PVEU6IFRoZSBgYXBwcm92ZWRgIGFjY291bnQgZ2V0cyByZXNldCBhZnRlciBlYWNoIHRyYW5zZmVyLgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABUG1heWJlX2NoZWNrX2RlbGVnYXRlPQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4ADkARAUNhbmNlbCB0aGUgcHJpb3IgYXBwcm92YWwgZm9yIHRoZSB0cmFuc2ZlciBvZiBhbiBpdGVtIGJ5IGEgZGVsZWdhdGUuAFhPcmlnaW4gbXVzdCBiZSBlaXRoZXI6VC0gdGhlIGBGb3JjZWAgb3JpZ2luO/wtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYDvkLSBgU2lnbmVkYCB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AChBcmd1bWVudHM6PQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWwgd2lsbCBiZSBjYW5jZWxsZWQuDQEtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWwgd2lsbCBiZSBjYW5jZWxsZWQuUQEtIGBtYXliZV9jaGVja19kZWxlZ2F0ZWA6IElmIGBTb21lYCB3aWxsIGVuc3VyZSB0aGF0IHRoZSBnaXZlbiBhY2NvdW50IGlzIHRoZSBvbmUgdG+wICB3aGljaCBwZXJtaXNzaW9uIG9mIHRyYW5zZmVyIGlzIGRlbGVnYXRlZC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRGZvcmNlX2l0ZW1fc3RhdHVzHAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATBmcmVlX2hvbGRpbmdZAQEQYm9vbAABJGlzX2Zyb3plblkBARBib29sAA9AlEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gaXRlbS4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0umC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGl0ZW0uoC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgaXRlbS6YLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgaXRlbS6oLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGl0ZW0uUQEtIGBmcmVlX2hvbGRpbmdgOiBXaGV0aGVyIGEgZGVwb3NpdCBpcyB0YWtlbiBmb3IgaG9sZGluZyBhbiBpdGVtIG9mIHRoaXMgY29sbGVjdGlvbi45AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhpcyBjb2xsZWN0aW9uIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOBFbWl0cyBgSXRlbVN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBpdGVtLgA4V2VpZ2h0OiBgTygxKWA0c2V0X2F0dHJpYnV0ZRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXnBAwFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWV4AXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAQRKhTZXQgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGU0YGNvbGxlY3Rpb25gLgBRAUlmIHRoZSBvcmlnaW4gaXMgU2lnbmVkLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOikBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIChrZXkubGVuICsgdmFsdWUubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC4FAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS7MLSBgdmFsdWVgOiBUaGUgdmFsdWUgdG8gd2hpY2ggdG8gc2V0IHRoZSBhdHRyaWJ1dGUuAFRFbWl0cyBgQXR0cmlidXRlU2V0YC4AOFdlaWdodDogYE8oMSlgPGNsZWFyX2F0dHJpYnV0ZQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXnBAwFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+ABE4sENsZWFyIGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlNGBjb2xsZWN0aW9uYC4AwEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgY29sbGVjdGlvbidzIG93bmVyLgBBAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gY2xlYXIuDQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS4AZEVtaXRzIGBBdHRyaWJ1dGVDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgMHNldF9tZXRhZGF0YRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGF0YUUEAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AASRpc19mcm96ZW5ZAQEQYm9vbAASRHRTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBSWYgdGhlIG9yaWdpbiBpcyBTaWduZWQsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC7sLSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuNQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgZnJvemVuIGFnYWluc3QgZnVydGhlciBjaGFuZ2VzLgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAEzR8Q2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZRxgaXRlbWAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLvQtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgXHNldF9jb2xsZWN0aW9uX21ldGFkYXRhDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGFFBAF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuWQEBEGJvb2wAFECIU2V0IHRoZSBtZXRhZGF0YSBmb3IgYSBjb2xsZWN0aW9uLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4AWQFJZiB0aGUgb3JpZ2luIGlzIGBTaWduZWRgLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOvRgTWV0YWRhdGFEZXBvc2l0QmFzZSArIERlcG9zaXRQZXJCeXRlICogZGF0YS5sZW5gIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuABEBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHVwZGF0ZS5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuNQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgZnJvemVuIGFnYWluc3QgZnVydGhlciBjaGFuZ2VzLgB4RW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYGRjbGVhcl9jb2xsZWN0aW9uX21ldGFkYXRhBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAVMJBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGEgY29sbGVjdGlvbi4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mRHRoZSBgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AJQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAIhFbWl0cyBgQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFBzZXRfYWNjZXB0X293bmVyc2hpcAQBQG1heWJlX2NvbGxlY3Rpb27gAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAWKBEBU2V0IChvciByZXNldCkgdGhlIGFjY2VwdGFuY2Ugb2Ygb3duZXJzaGlwIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudC4AYQFPcmlnaW4gbXVzdCBiZSBgU2lnbmVkYCBhbmQgaWYgYG1heWJlX2NvbGxlY3Rpb25gIGlzIGBTb21lYCwgdGhlbiB0aGUgc2lnbmVyIG11c3QgaGF2ZSBhTHByb3ZpZGVyIHJlZmVyZW5jZS4AUQEtIGBtYXliZV9jb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2Ugb3duZXJzaGlwIHRoZSBzaWduZXIgaXNhASAgd2lsbGluZyB0byBhY2NlcHQsIG9yIGlmIGBOb25lYCwgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZSBzaWduZXIgaXMgd2lsbGluZyB0byBhY2NlcHQgbm9cICBvd25lcnNoaXAgdHJhbnNmZXJhbC4AjEVtaXRzIGBPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZGAuZHNldF9jb2xsZWN0aW9uX21heF9zdXBwbHkIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseTgBDHUzMgAXLOBTZXQgdGhlIG1heGltdW0gYW1vdW50IG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBjb3VsZCBoYXZlLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4A5E5vdGU6IFRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgc3VjY2VlZCBvbmNlIHBlciBjb2xsZWN0aW9uLgDsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGNoYW5nZS4RAS0gYG1heF9zdXBwbHlgOiBUaGUgbWF4aW11bSBhbW91bnQgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGNvdWxkIGhhdmUuANRFbWl0cyBgQ29sbGVjdGlvbk1heFN1cHBseVNldGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLiRzZXRfcHJpY2UQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlSQQBXE9wdGlvbjxJdGVtUHJpY2U8VCwgST4+AAFEd2hpdGVsaXN0ZWRfYnV5ZXI9BAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAYLJRTZXQgKG9yIHJlc2V0KSB0aGUgcHJpY2UgZm9yIGFuIGl0ZW0uAAEBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIHRoZSBvd25lciBvZiB0aGUgYXNzZXQgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqAtIGBpdGVtYDogVGhlIGl0ZW0gdG8gc2V0IHRoZSBwcmljZSBmb3IuDQEtIGBwcmljZWA6IFRoZSBwcmljZSBmb3IgdGhlIGl0ZW0uIFBhc3MgYE5vbmVgLCB0byByZXNldCB0aGUgcHJpY2Uu9C0gYGJ1eWVyYDogUmVzdHJpY3RzIHRoZSBidXkgb3BlcmF0aW9uIHRvIGEgc3BlY2lmaWMgYWNjb3VudC4A7EVtaXRzIGBJdGVtUHJpY2VTZXRgIG9uIHN1Y2Nlc3MgaWYgdGhlIHByaWNlIGlzIG5vdCBgTm9uZWAu7EVtaXRzIGBJdGVtUHJpY2VSZW1vdmVkYCBvbiBzdWNjZXNzIGlmIHRoZSBwcmljZSBpcyBgTm9uZWAuIGJ1eV9pdGVtDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASRiaWRfcHJpY2VVAQE8SXRlbVByaWNlPFQsIEk+ABkkqEFsbG93cyB0byBidXkgYW4gaXRlbSBpZiBpdCdzIHVwIGZvciBzYWxlLgD4T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IG5vdCBiZSB0aGUgb3duZXIgb2YgdGhlIGBpdGVtYC4ArC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbS6sLSBgaXRlbWA6IFRoZSBpdGVtIHRoZSBzZW5kZXIgd2FudHMgdG8gYnV5LtgtIGBiaWRfcHJpY2VgOiBUaGUgcHJpY2UgdGhlIHNlbmRlciBpcyB3aWxsaW5nIHRvIHBheS4AeEVtaXRzIGBJdGVtQm91Z2h0YCBvbiBzdWNjZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy45BAw4cGFsbGV0X3VuaXF1ZXMUdHlwZXM4RGVzdHJveVdpdG5lc3MAAAwBFGl0ZW1zYAEMdTMyAAE4aXRlbV9tZXRhZGF0YXNgAQx1MzIAAShhdHRyaWJ1dGVzYAEMdTMyAAA9BAQYT3B0aW9uBARUAQABCBBOb25lAAAAEFNvbWUEAAAAAAEAAEEEAAACOABFBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAEkEBBhPcHRpb24EBFQBVQEBCBBOb25lAAAAEFNvbWUEAFUBAAABAABNBAwscGFsbGV0X25mdHMYcGFsbGV0EENhbGwIBFQABEkAAZwYY3JlYXRlCAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGNvbmZpZ1EEAWRDb2xsZWN0aW9uQ29uZmlnRm9yPFQsIEk+AAA8CQFJc3N1ZSBhIG5ldyBjb2xsZWN0aW9uIG9mIG5vbi1mdW5naWJsZSBpdGVtcyBmcm9tIGEgcHVibGljIG9yaWdpbi4AHQFUaGlzIG5ldyBjb2xsZWN0aW9uIGhhcyBubyBpdGVtcyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgAlAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AxGBDb2xsZWN0aW9uRGVwb3NpdGAgZnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZC4ALFBhcmFtZXRlcnM6RQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2iYbWVtYmVyIG9mIHRoZSBjb2xsZWN0aW9uJ3MgYWRtaW4gdGVhbS4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUIARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYY29uZmlnUQQBZENvbGxlY3Rpb25Db25maWdGb3I8VCwgST4AATwZAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4ArFRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AOQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNvbGxlY3Rpb24gb2YgaXRlbXMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXJZASAgcGVybWlzc2lvbnMgb3ZlciB0aGlzIGl0ZW0sIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nmCAgYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuAKxFbWl0cyBgRm9yY2VDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYBxkZXN0cm95CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABHHdpdG5lc3NtBAE4RGVzdHJveVdpdG5lc3MAAkScRGVzdHJveSBhIGNvbGxlY3Rpb24gb2YgZnVuZ2libGUgaXRlbXMuAF0BVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlaG93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuANxOT1RFOiBUaGUgY29sbGVjdGlvbiBtdXN0IGhhdmUgMCBpdGVtcyB0byBiZSBkZXN0cm95ZWQuAAUBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGJlIGRlc3Ryb3llZC4xAS0gYHdpdG5lc3NgOiBJbmZvcm1hdGlvbiBvbiB0aGUgaXRlbXMgbWludGVkIGluIHRoZSBjb2xsZWN0aW9uLiBUaGlzIG11c3QgYmUgY29ycmVjdC4AoEVtaXRzIGBEZXN0cm95ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AdFdlaWdodDogYE8obSArIGMgKyBhKWAgd2hlcmU6eC0gYG0gPSB3aXRuZXNzLml0ZW1fbWV0YWRhdGFzYHAtIGBjID0gd2l0bmVzcy5pdGVtX2NvbmZpZ3NgaC0gYGEgPSB3aXRuZXNzLmF0dHJpYnV0ZXNgEG1pbnQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABHG1pbnRfdG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABMHdpdG5lc3NfZGF0YXEEAdhPcHRpb248TWludFdpdG5lc3M8VDo6SXRlbUlkLCBEZXBvc2l0QmFsYW5jZU9mPFQsIEk+Pj4AA0CgTWludCBhbiBpdGVtIG9mIGEgcGFydGljdWxhciBjb2xsZWN0aW9uLgBRAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBjb21wbHkgd2l0aCB0aGUgYG1pbnRfc2V0dGluZ3NgIHJ1bGVzLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIG1pbnRlZC6gLSBgaXRlbWA6IEFuIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBpdGVtLuAtIGBtaW50X3RvYDogQWNjb3VudCBpbnRvIHdoaWNoIHRoZSBpdGVtIHdpbGwgYmUgbWludGVkLkUBLSBgd2l0bmVzc19kYXRhYDogV2hlbiB0aGUgbWludCB0eXBlIGlzIGBIb2xkZXJPZihjb2xsZWN0aW9uX2lkKWAsIHRoZW4gdGhlIG93bmVkWQEgIGl0ZW1faWQgZnJvbSB0aGF0IGNvbGxlY3Rpb24gbmVlZHMgdG8gYmUgcHJvdmlkZWQgd2l0aGluIHRoZSB3aXRuZXNzIGRhdGEgb2JqZWN0LiBJZmEBICB0aGUgbWludCBwcmljZSBpcyBzZXQsIHRoZW4gaXQgc2hvdWxkIGJlIGFkZGl0aW9uYWxseSBjb25maXJtZWQgaW4gdGhlIGB3aXRuZXNzX2RhdGFgLgBRAU5vdGU6IHRoZSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgYG9yaWdpbmAgYW5kIG5vdCB0aGUgYG93bmVyYCBvZiB0aGUgYGl0ZW1gLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAoZm9yY2VfbWludBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEcbWludF90bwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsaXRlbV9jb25maWd5BAEoSXRlbUNvbmZpZwAENAUBTWludCBhbiBpdGVtIG9mIGEgcGFydGljdWxhciBjb2xsZWN0aW9uIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGVsSXNzdWVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgbWludGVkLqAtIGBpdGVtYDogQW4gaWRlbnRpZmllciBvZiB0aGUgbmV3IGl0ZW0u4C0gYG1pbnRfdG9gOiBBY2NvdW50IGludG8gd2hpY2ggdGhlIGl0ZW0gd2lsbCBiZSBtaW50ZWQuqC0gYGl0ZW1fY29uZmlnYDogQSBjb25maWcgb2YgdGhlIG5ldyBpdGVtLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAQYnVybggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAUsWERlc3Ryb3kgYSBzaW5nbGUgaXRlbS4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3RsYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLoAtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmUgYnVybmVkLgA8RW1pdHMgYEJ1cm5lZGAuADhXZWlnaHQ6IGBPKDEpYCB0cmFuc2ZlcgwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAY4wE1vdmUgYW4gaXRlbSBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLgD0T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgYmUgZWl0aGVyOmgtIHRoZSBPd25lciBvZiB0aGUgYGl0ZW1gOzUBLSB0aGUgYXBwcm92ZWQgZGVsZWdhdGUgZm9yIHRoZSBgaXRlbWAgKGluIHRoaXMgY2FzZSwgdGhlIGFwcHJvdmFsIGlzIHJlc2V0KS4AKEFyZ3VtZW50czr0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHRyYW5zZmVycmVkLpQtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQu3C0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byByZWNlaXZlIG93bmVyc2hpcCBvZiB0aGUgaXRlbS4AUEVtaXRzIGBUcmFuc2ZlcnJlZGAuADhXZWlnaHQ6IGBPKDEpYCRyZWRlcG9zaXQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUaXRlbXNBBAE4VmVjPFQ6Okl0ZW1JZD4AB0ScUmUtZXZhbHVhdGUgdGhlIGRlcG9zaXRzIG9uIHNvbWUgaXRlbXMuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A+C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbXMgdG8gYmUgcmVldmFsdWF0ZWQuKQEtIGBpdGVtc2A6IFRoZSBpdGVtcyBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBkZXBvc2l0cyB3aWxsIGJlIHJlZXZhbHVhdGVkLgAtAU5PVEU6IFRoaXMgZXhpc3RzIGFzIGEgYmVzdC1lZmZvcnQgZnVuY3Rpb24uIEFueSBpdGVtcyB3aGljaCBhcmUgdW5rbm93biBvcjkBaW4gdGhlIGNhc2UgdGhhdCB0aGUgb3duZXIgYWNjb3VudCBkb2VzIG5vdCBoYXZlIHJlc2VydmFibGUgZnVuZHMgdG8gcGF5IGZvciBhTQFkZXBvc2l0IGluY3JlYXNlIGFyZSBpZ25vcmVkLiBHZW5lcmFsbHkgdGhlIG93bmVyIGlzbid0IGdvaW5nIHRvIGNhbGwgdGhpcyBvbiBpdGVtc1UBd2hvc2UgZXhpc3RpbmcgZGVwb3NpdCBpcyBsZXNzIHRoYW4gdGhlIHJlZnJlc2hlZCBkZXBvc2l0IGFzIGl0IHdvdWxkIG9ubHkgY29zdCB0aGVtLHhzbyBpdCdzIG9mIGxpdHRsZSBjb25zZXF1ZW5jZS4AWQFJdCB3aWxsIHN0aWxsIHJldHVybiBhbiBlcnJvciBpbiB0aGUgY2FzZSB0aGF0IHRoZSBjb2xsZWN0aW9uIGlzIHVua25vd24gb3IgdGhlIHNpZ25lcnBpcyBub3QgcGVybWl0dGVkIHRvIGNhbGwgaXQuAGBXZWlnaHQ6IGBPKGl0ZW1zLmxlbigpKWBIbG9ja19pdGVtX3RyYW5zZmVyCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQACCjIRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXIgb2YgYW4gaXRlbS4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgY2hhbmdlZC64LSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlY29tZSBub24tdHJhbnNmZXJhYmxlLgBsRW1pdHMgYEl0ZW1UcmFuc2ZlckxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYFB1bmxvY2tfaXRlbV90cmFuc2ZlcggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAkoqFJlLWFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlciBvZiBhbiBpdGVtLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A5C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBjaGFuZ2VkLqgtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmVjb21lIHRyYW5zZmVyYWJsZS4AdEVtaXRzIGBJdGVtVHJhbnNmZXJVbmxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYDxsb2NrX2NvbGxlY3Rpb24IAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAE0bG9ja19zZXR0aW5nc1UEAUhDb2xsZWN0aW9uU2V0dGluZ3MACjDYRGlzYWxsb3dzIHNwZWNpZmllZCBzZXR0aW5ncyBmb3IgdGhlIHdob2xlIGNvbGxlY3Rpb24uADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBsb2NrZWQutC0gYGxvY2tfc2V0dGluZ3NgOiBUaGUgc2V0dGluZ3MgdG8gYmUgbG9ja2VkLgAdAU5vdGU6IGl0J3MgcG9zc2libGUgdG8gb25seSBsb2NrKHNldCkgdGhlIHNldHRpbmcsIGJ1dCBub3QgdG8gdW5zZXQgaXQuAGRFbWl0cyBgQ29sbGVjdGlvbkxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkbmV3X293bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ACyyEQ2hhbmdlIHRoZSBPd25lciBvZiBhIGNvbGxlY3Rpb24uADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A9C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB3aG9zZSBvd25lciBzaG91bGQgYmUgY2hhbmdlZC4JAS0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZXkgbXVzdCBoYXZlIGNhbGxlZEkBICBgc2V0X2FjY2VwdF9vd25lcnNoaXBgIHdpdGggYGNvbGxlY3Rpb25gIGluIG9yZGVyIGZvciB0aGlzIG9wZXJhdGlvbiB0byBzdWNjZWVkLgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARhpc3N1ZXI9BAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgABFGFkbWluPQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4AARxmcmVlemVyPQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4ADEDUQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGEgY29sbGVjdGlvbi4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGU0YGNvbGxlY3Rpb25gLgBRAU5vdGU6IGJ5IHNldHRpbmcgdGhlIHJvbGUgdG8gYE5vbmVgIG9ubHkgdGhlIGBGb3JjZU9yaWdpbmAgd2lsbCBiZSBhYmxlIHRvIGNoYW5nZSBpdGRhZnRlciB0byBgU29tZShhY2NvdW50KWAuAPAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gd2hvc2UgdGVhbSBzaG91bGQgYmUgY2hhbmdlZC64LSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBjb2xsZWN0aW9uLrAtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBjb2xsZWN0aW9uLsAtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgY29sbGVjdGlvbi4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYFhmb3JjZV9jb2xsZWN0aW9uX293bmVyCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADSiEQ2hhbmdlIHRoZSBPd25lciBvZiBhIGNvbGxlY3Rpb24uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgDELSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uLrAtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBjb2xsZWN0aW9uLgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYFxmb3JjZV9jb2xsZWN0aW9uX2NvbmZpZwgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARhjb25maWdRBAFkQ29sbGVjdGlvbkNvbmZpZ0ZvcjxULCBJPgAOKIhDaGFuZ2UgdGhlIGNvbmZpZyBvZiBhIGNvbGxlY3Rpb24uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgDELSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uLrgtIGBjb25maWdgOiBUaGUgbmV3IGNvbmZpZyBvZiB0aGlzIGNvbGxlY3Rpb24uAIBFbWl0cyBgQ29sbGVjdGlvbkNvbmZpZ0NoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlchABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABOG1heWJlX2RlYWRsaW5l4AFwT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQsIEk+PgAPOBUBQXBwcm92ZSBhbiBpdGVtIHRvIGJlIHRyYW5zZmVycmVkIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlHGBpdGVtYC4ARQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2Zlci7kLSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlIGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIuGQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgdGhlIGl0ZW0uSQEtIGBtYXliZV9kZWFkbGluZWA6IE9wdGlvbmFsIGRlYWRsaW5lIGZvciB0aGUgYXBwcm92YWwuIFNwZWNpZmllZCBieSBwcm92aWRpbmcgdGhl2AludW1iZXIgb2YgYmxvY2tzIGFmdGVyIHdoaWNoIHRoZSBhcHByb3ZhbCB3aWxsIGV4cGlyZQCQRW1pdHMgYFRyYW5zZmVyQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AEDjkQ2FuY2VsIG9uZSBvZiB0aGUgdHJhbnNmZXIgYXBwcm92YWxzIGZvciBhIHNwZWNpZmljIGl0ZW0uAFhPcmlnaW4gbXVzdCBiZSBlaXRoZXI6VC0gdGhlIGBGb3JjZWAgb3JpZ2luO+QtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDsAKEFyZ3VtZW50czo9AS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC4lAS0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgY29sbGVjdGlvbiBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC4BAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdGhhdCBpcyBnb2luZyB0byBsb29zZSB0aGVpciBhcHByb3ZhbC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgcGNsZWFyX2FsbF90cmFuc2Zlcl9hcHByb3ZhbHMIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAARNLBDYW5jZWwgYWxsIHRoZSBhcHByb3ZhbHMgb2YgYSBzcGVjaWZpYyBpdGVtLgBYT3JpZ2luIG11c3QgYmUgZWl0aGVyOlQtIHRoZSBgRm9yY2VgIG9yaWdpbjvkLSBgU2lnbmVkYCB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AChBcmd1bWVudHM6OQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWxzIHdpbGwgYmUgY2xlYXJlZC4hAS0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgY29sbGVjdGlvbiBvZiB3aG9zZSBhcHByb3ZhbHMgd2lsbCBiZSBjbGVhcmVkLgCkRW1pdHMgYEFsbEFwcHJvdmFsc0NhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgUGxvY2tfaXRlbV9wcm9wZXJ0aWVzEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAATRsb2NrX21ldGFkYXRhWQEBEGJvb2wAATxsb2NrX2F0dHJpYnV0ZXNZAQEQYm9vbAASROhEaXNhbGxvd3MgY2hhbmdpbmcgdGhlIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZXMgb2YgdGhlIGl0ZW0uAEEBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW5Qb2YgdGhlIGBjb2xsZWN0aW9uYC4AtC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBpZiB0aGUgYGl0ZW1gLnwtIGBpdGVtYDogQW4gaXRlbSB0byBiZSBsb2NrZWQuDQEtIGBsb2NrX21ldGFkYXRhYDogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIG1ldGFkYXRhIHNob3VsZCBiZSBsb2NrZWQuYQEtIGBsb2NrX2F0dHJpYnV0ZXNgOiBTcGVjaWZpZXMgd2hldGhlciB0aGUgYXR0cmlidXRlcyBpbiB0aGUgYENvbGxlY3Rpb25Pd25lcmAgbmFtZXNwYWNlTCAgc2hvdWxkIGJlIGxvY2tlZC4AXQFOb3RlOiBgbG9ja19hdHRyaWJ1dGVzYCBhZmZlY3RzIHRoZSBhdHRyaWJ1dGVzIGluIHRoZSBgQ29sbGVjdGlvbk93bmVyYCBuYW1lc3BhY2Ugb25seS5FAVdoZW4gdGhlIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZXMgYXJlIGxvY2tlZCwgaXQgd29uJ3QgYmUgcG9zc2libGUgdGhlIHVubG9jayB0aGVtLgB0RW1pdHMgYEl0ZW1Qcm9wZXJ0aWVzTG9ja2VkYC4AOFdlaWdodDogYE8oMSlgNHNldF9hdHRyaWJ1dGUUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeABRE9wdGlvbjxUOjpJdGVtSWQ+AAEkbmFtZXNwYWNlfQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+AAEMa2V5eAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWVBAQF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AE1ioU2V0IGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAAEBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGNvbmZvcm0gdG8gdGhlIG5hbWVzcGFjZSBydWxlc2V0Oj0BLSBgQ29sbGVjdGlvbk93bmVyYCBuYW1lc3BhY2UgY291bGQgYmUgbW9kaWZpZWQgYnkgdGhlIGBjb2xsZWN0aW9uYCBBZG1pbiBvbmx5O1kBLSBgSXRlbU93bmVyYCBuYW1lc3BhY2UgY291bGQgYmUgbW9kaWZpZWQgYnkgdGhlIGBtYXliZV9pdGVtYCBvd25lciBvbmx5LiBgbWF5YmVfaXRlbWB0ICBzaG91bGQgYmUgc2V0IGluIHRoYXQgY2FzZTtVAS0gYEFjY291bnQoQWNjb3VudElkKWAgbmFtZXNwYWNlIGNvdWxkIGJlIG1vZGlmaWVkIG9ubHkgd2hlbiB0aGUgYG9yaWdpbmAgd2FzIGdpdmVuIGFYICBwZXJtaXNzaW9uIHRvIGRvIHNvOwDwVGhlIGZ1bmRzIG9mIGBvcmlnaW5gIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6LQFgQXR0cmlidXRlRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIChrZXkubGVuICsgdmFsdWUubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC4FAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQulC0gYG5hbWVzcGFjZWA6IEF0dHJpYnV0ZSdzIG5hbWVzcGFjZS6ILSBga2V5YDogVGhlIGtleSBvZiB0aGUgYXR0cmlidXRlLswtIGB2YWx1ZWA6IFRoZSB2YWx1ZSB0byB3aGljaCB0byBzZXQgdGhlIGF0dHJpYnV0ZS4AVEVtaXRzIGBBdHRyaWJ1dGVTZXRgLgA4V2VpZ2h0OiBgTygxKWBMZm9yY2Vfc2V0X2F0dHJpYnV0ZRgBGHNldF9hc40BAVBPcHRpb248VDo6QWNjb3VudElkPgABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AASRuYW1lc3BhY2V9BAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AAQxrZXl4AWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AARR2YWx1ZUEBAXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAURMBGb3JjZS1zZXQgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuADkBSWYgdGhlIGF0dHJpYnV0ZSBhbHJlYWR5IGV4aXN0cyBhbmQgaXQgd2FzIHNldCBieSBhbm90aGVyIGFjY291bnQsIHRoZSBkZXBvc2l0nHdpbGwgYmUgcmV0dXJuZWQgdG8gdGhlIHByZXZpb3VzIG93bmVyLgC8LSBgc2V0X2FzYDogQW4gb3B0aW9uYWwgb3duZXIgb2YgdGhlIGF0dHJpYnV0ZS45AS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gc2V0LgUBLSBgbWF5YmVfaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC6ULSBgbmFtZXNwYWNlYDogQXR0cmlidXRlJ3MgbmFtZXNwYWNlLogtIGBrZXlgOiBUaGUga2V5IG9mIHRoZSBhdHRyaWJ1dGUuzC0gYHZhbHVlYDogVGhlIHZhbHVlIHRvIHdoaWNoIHRvIHNldCB0aGUgYXR0cmlidXRlLgBURW1pdHMgYEF0dHJpYnV0ZVNldGAuADhXZWlnaHQ6IGBPKDEpYDxjbGVhcl9hdHRyaWJ1dGUQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeABRE9wdGlvbjxUOjpJdGVtSWQ+AAEkbmFtZXNwYWNlfQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+AAEMa2V5eAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+ABU8sENsZWFyIGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlKGF0dHJpYnV0ZS4AwEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgY29sbGVjdGlvbidzIG93bmVyLgBBAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gY2xlYXIuDQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIulC0gYG5hbWVzcGFjZWA6IEF0dHJpYnV0ZSdzIG5hbWVzcGFjZS6ILSBga2V5YDogVGhlIGtleSBvZiB0aGUgYXR0cmlidXRlLgBkRW1pdHMgYEF0dHJpYnV0ZUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBcYXBwcm92ZV9pdGVtX2F0dHJpYnV0ZXMMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFiQtAUFwcHJvdmUgaXRlbSdzIGF0dHJpYnV0ZXMgdG8gYmUgY2hhbmdlZCBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgDkT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgaXRlbWAuAKQtIGBjb2xsZWN0aW9uYDogQSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqQtIGBpdGVtYDogVGhlIGl0ZW0gdGhhdCBob2xkcyBhdHRyaWJ1dGVzLkkBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBhdHRyaWJ1dGVzIG9mIHRoZSBpdGVtLgC8RW1pdHMgYEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxBZGRlZGAgb24gc3VjY2Vzcy58Y2FuY2VsX2l0ZW1fYXR0cmlidXRlc19hcHByb3ZhbBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHHdpdG5lc3OBBAF8Q2FuY2VsQXR0cmlidXRlc0FwcHJvdmFsV2l0bmVzcwAXKBEBQ2FuY2VsIHRoZSBwcmV2aW91c2x5IHByb3ZpZGVkIGFwcHJvdmFsIHRvIGNoYW5nZSBpdGVtJ3MgYXR0cmlidXRlcy4RAUFsbCB0aGUgcHJldmlvdXNseSBzZXQgYXR0cmlidXRlcyBieSB0aGUgYGRlbGVnYXRlYCB3aWxsIGJlIHJlbW92ZWQuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4A9C0gYGNvbGxlY3Rpb25gOiBDb2xsZWN0aW9uIHRoYXQgdGhlIGl0ZW0gaXMgY29udGFpbmVkIHdpdGhpbi6kLSBgaXRlbWA6IFRoZSBpdGVtIHRoYXQgaG9sZHMgYXR0cmlidXRlcy7gLSBgZGVsZWdhdGVgOiBUaGUgcHJldmlvdXNseSBhcHByb3ZlZCBhY2NvdW50IHRvIHJlbW92ZS4AxEVtaXRzIGBJdGVtQXR0cmlidXRlc0FwcHJvdmFsUmVtb3ZlZGAgb24gc3VjY2Vzcy4wc2V0X21ldGFkYXRhDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkYXRhQQEBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAYQHRTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBSWYgdGhlIG9yaWdpbiBpcyBTaWduZWQsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC7sLSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuAGBFbWl0cyBgSXRlbU1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAGTR8Q2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZTRgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLvQtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAHBFbWl0cyBgSXRlbU1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFxzZXRfY29sbGVjdGlvbl9tZXRhZGF0YQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBkYXRhQQEBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAaPIhTZXQgdGhlIG1ldGFkYXRhIGZvciBhIGNvbGxlY3Rpb24uAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZkR0aGUgYGNvbGxlY3Rpb25gLgBZAUlmIHRoZSBvcmlnaW4gaXMgYFNpZ25lZGAsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AEQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gdXBkYXRlLk0BLSBgZGF0YWA6IFRoZSBnZW5lcmFsIGluZm9ybWF0aW9uIG9mIHRoaXMgaXRlbS4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4AeEVtaXRzIGBDb2xsZWN0aW9uTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWBkY2xlYXJfY29sbGVjdGlvbl9tZXRhZGF0YQQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAGzCQQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhIGNvbGxlY3Rpb24uAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZkR0aGUgYGNvbGxlY3Rpb25gLgDAQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIuACUBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLgCIRW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBQc2V0X2FjY2VwdF9vd25lcnNoaXAEAUBtYXliZV9jb2xsZWN0aW9u4AFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AHCgRAVNldCAob3IgcmVzZXQpIHRoZSBhY2NlcHRhbmNlIG9mIG93bmVyc2hpcCBmb3IgYSBwYXJ0aWN1bGFyIGFjY291bnQuAGEBT3JpZ2luIG11c3QgYmUgYFNpZ25lZGAgYW5kIGlmIGBtYXliZV9jb2xsZWN0aW9uYCBpcyBgU29tZWAsIHRoZW4gdGhlIHNpZ25lciBtdXN0IGhhdmUgYUxwcm92aWRlciByZWZlcmVuY2UuAFEBLSBgbWF5YmVfY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIG93bmVyc2hpcCB0aGUgc2lnbmVyIGlzYQEgIHdpbGxpbmcgdG8gYWNjZXB0LCBvciBpZiBgTm9uZWAsIGFuIGluZGljYXRpb24gdGhhdCB0aGUgc2lnbmVyIGlzIHdpbGxpbmcgdG8gYWNjZXB0IG5vXCAgb3duZXJzaGlwIHRyYW5zZmVyYWwuAIxFbWl0cyBgT3duZXJzaGlwQWNjZXB0YW5jZUNoYW5nZWRgLmRzZXRfY29sbGVjdGlvbl9tYXhfc3VwcGx5CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heF9zdXBwbHk4AQx1MzIAHSTgU2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gY291bGQgaGF2ZS4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mRHRoZSBgY29sbGVjdGlvbmAuAOwtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gdG8gY2hhbmdlLhEBLSBgbWF4X3N1cHBseWA6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gY291bGQgaGF2ZS4A1EVtaXRzIGBDb2xsZWN0aW9uTWF4U3VwcGx5U2V0YCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuUHVwZGF0ZV9taW50X3NldHRpbmdzCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABNG1pbnRfc2V0dGluZ3NdBAEVAU1pbnRTZXR0aW5nczxCYWxhbmNlT2Y8VCwgST4sIEJsb2NrTnVtYmVyRm9yPFQsIEk+LCBUOjoKQ29sbGVjdGlvbklkPgAeJFRVcGRhdGUgbWludCBzZXR0aW5ncy4ATQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIElzc3VlclBvZiB0aGUgYGNvbGxlY3Rpb25gLgDsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGNoYW5nZS6kLSBgbWludF9zZXR0aW5nc2A6IFRoZSBuZXcgbWludCBzZXR0aW5ncy4A8EVtaXRzIGBDb2xsZWN0aW9uTWludFNldHRpbmdzVXBkYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLiRzZXRfcHJpY2UQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlSQQBXE9wdGlvbjxJdGVtUHJpY2U8VCwgST4+AAFEd2hpdGVsaXN0ZWRfYnV5ZXI9BAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAfLJRTZXQgKG9yIHJlc2V0KSB0aGUgcHJpY2UgZm9yIGFuIGl0ZW0uAOhPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0uoC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBzZXQgdGhlIHByaWNlIGZvci4NAS0gYHByaWNlYDogVGhlIHByaWNlIGZvciB0aGUgaXRlbS4gUGFzcyBgTm9uZWAsIHRvIHJlc2V0IHRoZSBwcmljZS70LSBgYnV5ZXJgOiBSZXN0cmljdHMgdGhlIGJ1eSBvcGVyYXRpb24gdG8gYSBzcGVjaWZpYyBhY2NvdW50LgDsRW1pdHMgYEl0ZW1QcmljZVNldGAgb24gc3VjY2VzcyBpZiB0aGUgcHJpY2UgaXMgbm90IGBOb25lYC7sRW1pdHMgYEl0ZW1QcmljZVJlbW92ZWRgIG9uIHN1Y2Nlc3MgaWYgdGhlIHByaWNlIGlzIGBOb25lYC4gYnV5X2l0ZW0MAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABJGJpZF9wcmljZVUBATxJdGVtUHJpY2U8VCwgST4AICSoQWxsb3dzIHRvIGJ1eSBhbiBpdGVtIGlmIGl0J3MgdXAgZm9yIHNhbGUuAPhPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3Qgbm90IGJlIHRoZSBvd25lciBvZiB0aGUgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqwtIGBpdGVtYDogVGhlIGl0ZW0gdGhlIHNlbmRlciB3YW50cyB0byBidXku2C0gYGJpZF9wcmljZWA6IFRoZSBwcmljZSB0aGUgc2VuZGVyIGlzIHdpbGxpbmcgdG8gcGF5LgB4RW1pdHMgYEl0ZW1Cb3VnaHRgIG9uIHN1Y2Nlc3MuIHBheV90aXBzBAEQdGlwc4UEAZxCb3VuZGVkVmVjPEl0ZW1UaXBPZjxULCBJPiwgVDo6TWF4VGlwcz4AIRxcQWxsb3dzIHRvIHBheSB0aGUgdGlwcy4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AVC0gYHRpcHNgOiBUaXBzIGFycmF5LgCYRW1pdHMgYFRpcFNlbnRgIG9uIGV2ZXJ5IHRpcCB0cmFuc2Zlci4sY3JlYXRlX3N3YXAYAUhvZmZlcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBvZmZlcmVkX2l0ZW04ASRUOjpJdGVtSWQAAUhkZXNpcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAUhtYXliZV9kZXNpcmVkX2l0ZW3gAURPcHRpb248VDo6SXRlbUlkPgABLG1heWJlX3ByaWNlkQQBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AASBkdXJhdGlvbjgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+ACJAUQFSZWdpc3RlciBhIG5ldyBhdG9taWMgc3dhcCwgZGVjbGFyaW5nIGFuIGludGVudGlvbiB0byBzZW5kIGFuIGBpdGVtYCBpbiBleGNoYW5nZSBmb3L8YGRlc2lyZWRfaXRlbWAgZnJvbSBvcmlnaW4gdG8gdGFyZ2V0IG9uIHRoZSBjdXJyZW50IGJsb2NrY2hhaW4uTQFUaGUgdGFyZ2V0IGNhbiBleGVjdXRlIHRoZSBzd2FwIGR1cmluZyB0aGUgc3BlY2lmaWVkIGBkdXJhdGlvbmAgb2YgYmxvY2tzIChpZiBzZXQpLvBBZGRpdGlvbmFsbHksIHRoZSBwcmljZSBjb3VsZCBiZSBzZXQgZm9yIHRoZSBkZXNpcmVkIGBpdGVtYC4A5E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSBhbiBvd25lciBvZiB0aGUgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqgtIGBpdGVtYDogVGhlIGl0ZW0gYW4gb3duZXIgd2FudHMgdG8gZ2l2ZS7sLSBgZGVzaXJlZF9jb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGRlc2lyZWQgaXRlbS70LSBgZGVzaXJlZF9pdGVtYDogVGhlIGRlc2lyZWQgaXRlbSBhbiBvd25lciB3YW50cyB0byByZWNlaXZlLmEBLSBgbWF5YmVfcHJpY2VgOiBUaGUgcHJpY2UgYW4gb3duZXIgaXMgd2lsbGluZyB0byBwYXkgb3IgcmVjZWl2ZSBmb3IgdGhlIGRlc2lyZWQgYGl0ZW1gLkkBLSBgZHVyYXRpb25gOiBBIGRlYWRsaW5lIGZvciB0aGUgc3dhcC4gU3BlY2lmaWVkIGJ5IHByb3ZpZGluZyB0aGUgbnVtYmVyIG9mIGJsb2Nrc4gJYWZ0ZXIgd2hpY2ggdGhlIHN3YXAgd2lsbCBleHBpcmUuAHxFbWl0cyBgU3dhcENyZWF0ZWRgIG9uIHN1Y2Nlc3MuLGNhbmNlbF9zd2FwCAFIb2ZmZXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwb2ZmZXJlZF9pdGVtOAEkVDo6SXRlbUlkACMkWENhbmNlbCBhbiBhdG9taWMgc3dhcC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4VAU9yaWdpbiBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgaXRlbWAgaWYgdGhlIGRlYWRsaW5lIGhhc24ndCBleHBpcmVkLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqgtIGBpdGVtYDogVGhlIGl0ZW0gYW4gb3duZXIgd2FudHMgdG8gZ2l2ZS4AhEVtaXRzIGBTd2FwQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLihjbGFpbV9zd2FwFAE8c2VuZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkc2VuZF9pdGVtOAEkVDo6SXRlbUlkAAFIcmVjZWl2ZV9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwcmVjZWl2ZV9pdGVtOAEkVDo6SXRlbUlkAAE0d2l0bmVzc19wcmljZZEEAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+ACQwVENsYWltIGFuIGF0b21pYyBzd2FwLjkBVGhpcyBtZXRob2QgZXhlY3V0ZXMgYSBwZW5kaW5nIHN3YXAsIHRoYXQgd2FzIGNyZWF0ZWQgYnkgYSBjb3VudGVycGFydCBiZWZvcmUuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4A7C0gYHNlbmRfY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHNlbnQujC0gYHNlbmRfaXRlbWA6IFRoZSBpdGVtIHRvIGJlIHNlbnQuCQEtIGByZWNlaXZlX2NvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSByZWNlaXZlZC6oLSBgcmVjZWl2ZV9pdGVtYDogVGhlIGl0ZW0gdG8gYmUgcmVjZWl2ZWQu5C0gYHdpdG5lc3NfcHJpY2VgOiBBIHByaWNlIHRoYXQgd2FzIHByZXZpb3VzbHkgYWdyZWVkIG9uLgB8RW1pdHMgYFN3YXBDbGFpbWVkYCBvbiBzdWNjZXNzLjxtaW50X3ByZV9zaWduZWQMASRtaW50X2RhdGGdBAFoQm94PFByZVNpZ25lZE1pbnRPZjxULCBJPj4AASRzaWduYXR1cmWhBAFQVDo6T2ZmY2hhaW5TaWduYXR1cmUAARhzaWduZXIEATBUOjpBY2NvdW50SWQAJTTITWludCBhbiBpdGVtIGJ5IHByb3ZpZGluZyB0aGUgcHJlLXNpZ25lZCBhcHByb3ZhbC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AXQEtIGBtaW50X2RhdGFgOiBUaGUgcHJlLXNpZ25lZCBhcHByb3ZhbCB0aGF0IGNvbnNpc3RzIG9mIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaXRlbSxRASAgaXRzIG1ldGFkYXRhLCBhdHRyaWJ1dGVzLCB3aG8gY2FuIG1pbnQgaXQgKGBOb25lYCBmb3IgYW55b25lKSBhbmQgdW50aWwgd2hhdCBibG9jayQgIG51bWJlci7ILSBgc2lnbmF0dXJlYDogVGhlIHNpZ25hdHVyZSBvZiB0aGUgYGRhdGFgIG9iamVjdC45AS0gYHNpZ25lcmA6IFRoZSBgZGF0YWAgb2JqZWN0J3Mgc2lnbmVyLiBTaG91bGQgYmUgYW4gSXNzdWVyIG9mIHRoZSBjb2xsZWN0aW9uLgBoRW1pdHMgYElzc3VlZGAgb24gc3VjY2Vzcy7URW1pdHMgYEF0dHJpYnV0ZVNldGAgaWYgdGhlIGF0dHJpYnV0ZXMgd2VyZSBwcm92aWRlZC7YRW1pdHMgYEl0ZW1NZXRhZGF0YVNldGAgaWYgdGhlIG1ldGFkYXRhIHdhcyBub3QgZW1wdHkuZHNldF9hdHRyaWJ1dGVzX3ByZV9zaWduZWQMARBkYXRhqQQBbFByZVNpZ25lZEF0dHJpYnV0ZXNPZjxULCBJPgABJHNpZ25hdHVyZaEEAVBUOjpPZmZjaGFpblNpZ25hdHVyZQABGHNpZ25lcgQBMFQ6OkFjY291bnRJZAAmNAEBU2V0IGF0dHJpYnV0ZXMgZm9yIGFuIGl0ZW0gYnkgcHJvdmlkaW5nIHRoZSBwcmUtc2lnbmVkIGFwcHJvdmFsLgD4T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgZGF0YS5pdGVtYC4ASQEtIGBkYXRhYDogVGhlIHByZS1zaWduZWQgYXBwcm92YWwgdGhhdCBjb25zaXN0cyBvZiB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGl0ZW0szCAgYXR0cmlidXRlcyB0byB1cGRhdGUgYW5kIHVudGlsIHdoYXQgYmxvY2sgbnVtYmVyLsgtIGBzaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIHRoZSBgZGF0YWAgb2JqZWN0LlEBLSBgc2lnbmVyYDogVGhlIGBkYXRhYCBvYmplY3QncyBzaWduZXIuIFNob3VsZCBiZSBhbiBBZG1pbiBvZiB0aGUgY29sbGVjdGlvbiBmb3IgdGhleCAgYENvbGxlY3Rpb25Pd25lcmAgbmFtZXNwYWNlLgDERW1pdHMgYEF0dHJpYnV0ZVNldGAgZm9yIGVhY2ggcHJvdmlkZWQgYXR0cmlidXRlLhkBRW1pdHMgYEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxBZGRlZGAgaWYgdGhlIGFwcHJvdmFsIHdhc24ndCBzZXQgYmVmb3JlLqhFbWl0cyBgUHJlU2lnbmVkQXR0cmlidXRlc1NldGAgb24gc3VjY2Vzcy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuUQQMLHBhbGxldF9uZnRzFHR5cGVzQENvbGxlY3Rpb25Db25maWcMFFByaWNlAVUBLEJsb2NrTnVtYmVyATgwQ29sbGVjdGlvbklkATgADAEgc2V0dGluZ3NVBAFIQ29sbGVjdGlvblNldHRpbmdzAAEobWF4X3N1cHBseeABLE9wdGlvbjx1MzI+AAE0bWludF9zZXR0aW5nc10EAbhNaW50U2V0dGluZ3M8UHJpY2UsIEJsb2NrTnVtYmVyLCBDb2xsZWN0aW9uSWQ+AABVBAwscGFsbGV0X25mdHMUdHlwZXMgQml0RmxhZ3MEBFQBWQQABAAoAURDb2xsZWN0aW9uU2V0dGluZwAAWQQMLHBhbGxldF9uZnRzFHR5cGVzRENvbGxlY3Rpb25TZXR0aW5nAAEURFRyYW5zZmVyYWJsZUl0ZW1zAAEAQFVubG9ja2VkTWV0YWRhdGEAAgBIVW5sb2NrZWRBdHRyaWJ1dGVzAAQARFVubG9ja2VkTWF4U3VwcGx5AAgAPERlcG9zaXRSZXF1aXJlZAAQAABdBAwscGFsbGV0X25mdHMUdHlwZXMwTWludFNldHRpbmdzDBRQcmljZQFVASxCbG9ja051bWJlcgE4MENvbGxlY3Rpb25JZAE4ABQBJG1pbnRfdHlwZWEEAVhNaW50VHlwZTxDb2xsZWN0aW9uSWQ+AAEUcHJpY2VJBAE0T3B0aW9uPFByaWNlPgABLHN0YXJ0X2Jsb2Nr4AFMT3B0aW9uPEJsb2NrTnVtYmVyPgABJGVuZF9ibG9ja+ABTE9wdGlvbjxCbG9ja051bWJlcj4AAVRkZWZhdWx0X2l0ZW1fc2V0dGluZ3NlBAEwSXRlbVNldHRpbmdzAABhBAwscGFsbGV0X25mdHMUdHlwZXMgTWludFR5cGUEMENvbGxlY3Rpb25JZAE4AQwYSXNzdWVyAAAAGFB1YmxpYwABACBIb2xkZXJPZgQAOAEwQ29sbGVjdGlvbklkAAIAAGUEDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAFpBAAEACgBLEl0ZW1TZXR0aW5nAABpBAwscGFsbGV0X25mdHMUdHlwZXMsSXRlbVNldHRpbmcAAQwwVHJhbnNmZXJhYmxlAAEAQFVubG9ja2VkTWV0YWRhdGEAAgBIVW5sb2NrZWRBdHRyaWJ1dGVzAAQAAG0EDCxwYWxsZXRfbmZ0cxR0eXBlczhEZXN0cm95V2l0bmVzcwAADAE4aXRlbV9tZXRhZGF0YXNgAQx1MzIAATBpdGVtX2NvbmZpZ3NgAQx1MzIAAShhdHRyaWJ1dGVzYAEMdTMyAABxBAQYT3B0aW9uBARUAXUEAQgQTm9uZQAAABBTb21lBAB1BAAAAQAAdQQMLHBhbGxldF9uZnRzFHR5cGVzLE1pbnRXaXRuZXNzCBhJdGVtSWQBOBxCYWxhbmNlAVUBAAgBKG93bmVkX2l0ZW3gAThPcHRpb248SXRlbUlkPgABKG1pbnRfcHJpY2VJBAE8T3B0aW9uPEJhbGFuY2U+AAB5BAwscGFsbGV0X25mdHMUdHlwZXMoSXRlbUNvbmZpZwAABAEgc2V0dGluZ3NlBAEwSXRlbVNldHRpbmdzAAB9BAwscGFsbGV0X25mdHMUdHlwZXNIQXR0cmlidXRlTmFtZXNwYWNlBCRBY2NvdW50SWQBBAEQGFBhbGxldAAAADxDb2xsZWN0aW9uT3duZXIAAQAkSXRlbU93bmVyAAIAHEFjY291bnQEAAQBJEFjY291bnRJZAADAACBBAwscGFsbGV0X25mdHMUdHlwZXN8Q2FuY2VsQXR0cmlidXRlc0FwcHJvdmFsV2l0bmVzcwAABAFIYWNjb3VudF9hdHRyaWJ1dGVzOAEMdTMyAACFBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYkEBFMAAAQAjQQBGFZlYzxUPgAAiQQMLHBhbGxldF9uZnRzFHR5cGVzHEl0ZW1UaXAQMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4JEFjY291bnRJZAEEGEFtb3VudAFVAQAQAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBGEl0ZW1JZAABIHJlY2VpdmVyBAEkQWNjb3VudElkAAEYYW1vdW50VQEBGEFtb3VudAAAjQQAAAKJBACRBAQYT3B0aW9uBARUAZUEAQgQTm9uZQAAABBTb21lBACVBAAAAQAAlQQMLHBhbGxldF9uZnRzFHR5cGVzSFByaWNlV2l0aERpcmVjdGlvbgQYQW1vdW50AVUBAAgBGGFtb3VudFUBARhBbW91bnQAASRkaXJlY3Rpb26ZBAE4UHJpY2VEaXJlY3Rpb24AAJkEDCxwYWxsZXRfbmZ0cxR0eXBlczhQcmljZURpcmVjdGlvbgABCBBTZW5kAAAAHFJlY2VpdmUAAQAAnQQMLHBhbGxldF9uZnRzFHR5cGVzNFByZVNpZ25lZE1pbnQUMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4JEFjY291bnRJZAEEIERlYWRsaW5lATgcQmFsYW5jZQFVAQAcAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBGEl0ZW1JZAABKGF0dHJpYnV0ZXMsAVxWZWM8KFZlYzx1OD4sIFZlYzx1OD4pPgABIG1ldGFkYXRhGAEcVmVjPHU4PgABMG9ubHlfYWNjb3VudI0BAURPcHRpb248QWNjb3VudElkPgABIGRlYWRsaW5lOAEgRGVhZGxpbmUAAShtaW50X3ByaWNlSQQBPE9wdGlvbjxCYWxhbmNlPgAAoQQIKHNwX3J1bnRpbWU4TXVsdGlTaWduYXR1cmUAARAcRWQyNTUxOQQApQQBSGVkMjU1MTk6OlNpZ25hdHVyZQAAABxTcjI1NTE5BAClBAFIc3IyNTUxOTo6U2lnbmF0dXJlAAEAFEVjZHNhBAB1AQFAZWNkc2E6OlNpZ25hdHVyZQACAAxFdGgEAHUBAVhlY2RzYTo6S2VjY2FrU2lnbmF0dXJlAAMAAKUEAAADQAAAAAwAqQQMLHBhbGxldF9uZnRzFHR5cGVzTFByZVNpZ25lZEF0dHJpYnV0ZXMQMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4JEFjY291bnRJZAEEIERlYWRsaW5lATgAFAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABEGl0ZW04ARhJdGVtSWQAAShhdHRyaWJ1dGVzLAFcVmVjPChWZWM8dTg+LCBWZWM8dTg+KT4AASRuYW1lc3BhY2V9BAF0QXR0cmlidXRlTmFtZXNwYWNlPEFjY291bnRJZD4AASBkZWFkbGluZTgBIERlYWRsaW5lAACtBAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQQQ2FsbAgEVAAESQABiBhjcmVhdGUMAQhpZP0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlVQEBKFQ6OkJhbGFuY2UAAEzoSXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAlAVRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5IGFuZCBpdHMgb3duZXIgaXMgdGhlIG9yaWdpbi4AYQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCBgQ3JlYXRlT3JpZ2luYCBhbmQgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZyZWUuALxGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGJ5IGBBc3NldERlcG9zaXRgLgAsUGFyYW1ldGVyczpZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5MQFhbiBleGlzdGluZyBhc3NldC4gSWYgW2BOZXh0QXNzZXRJZGBdIGlzIHNldCwgdGhlbiB0aGlzIG11c3QgYmUgZXF1YWwgdG8gaXQuWQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJxtZW1iZXIgb2YgdGhlIGFzc2V0IGNsYXNzJ3MgYWRtaW4gdGVhbS5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAJhFbWl0cyBgQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAwZm9yY2VfY3JlYXRlEAEIaWT9AQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50WQEBEGJvb2wAASxtaW5fYmFsYW5jZVEBAShUOjpCYWxhbmNlAAFM+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/QEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASByZXNlcnZlc7EEAchCb3VuZGVkVmVjPFQ6OlJlc2VydmVEYXRhLCBDb25zdFUzMjxNQVhfUkVTRVJWRVM+PgAhJMRTZXRzIHRoZSB0cnVzdGVkIHJlc2VydmUgaW5mb3JtYXRpb24gb2YgYW4gYXNzZXQuAFUBT3JpZ2luIG11c3QgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLiBUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCUBYENyZWF0ZU9yaWdpbmAgb3IgYmUgdGhlIHNpZ25lZCBgb3duZXJgIGNvbmZpZ3VyZWQgZHVyaW5nIGFzc2V0IGNyZWF0aW9uLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQu8C0gYHJlc2VydmVzYDogVGhlIGZ1bGwgbGlzdCBvZiB0cnVzdGVkIHJlc2VydmVzIGluZm9ybWF0aW9uLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMusQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAG1BARTAAAEALkEARhWZWM8VD4AALUEDDRhc3NldHNfY29tbW9uYGxvY2FsX2FuZF9mb3JlaWduX2Fzc2V0c1xGb3JlaWduQXNzZXRSZXNlcnZlRGF0YQAACAEccmVzZXJ2Zf0BASBMb2NhdGlvbgABMHRlbGVwb3J0YWJsZVkBARBib29sAAC5BAAAArUEAL0EDDRwYWxsZXRfYXNzZXRzGHBhbGxldBBDYWxsCARUAARJAAGIGGNyZWF0ZQwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlAABM6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50WQEBEGJvb2wAASxtaW5fYmFsYW5jZVEBAShUOjpCYWxhbmNlAAFM+Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uALRUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AWQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXIgcGVybWlzc2lvbnMlAW92ZXIgdGhpcyBhc3NldCwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWA0c3RhcnRfZGVzdHJveQQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgACMNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlmuGFuIGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS5AZGVzdHJveV9hY2NvdW50cwQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABSjEQ29tcGxldGUgZGVzdHJveWluZyBhc3NldCBhbmQgdW5yZXNlcnZlIGN1cnJlbmN5LgBVAWBmaW5pc2hfZGVzdHJveWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGVZAWFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLiBBbGwgYWNjb3VudHMgb3IgYXBwcm92YWxzIHNob3VsZCBiZSBkZXN0cm95ZWQgYmVmb3JlFGhhbmQuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A4EVhY2ggc3VjY2Vzc2Z1bCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZGAgZXZlbnQuEG1pbnQMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50UQEBKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFEBAShUOjpCYWxhbmNlAAc8RQFSZWR1Y2UgdGhlIGJhbGFuY2Ugb2YgYHdob2AgYnkgYXMgbXVjaCBhcyBwb3NzaWJsZSB1cCB0byBgYW1vdW50YCBhc3NldHMgb2YgYGlkYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBNYW5hZ2VyIG9mIHRoZSBhc3NldCBgaWRgLgDQQmFpbHMgd2l0aCBgTm9BY2NvdW50YCBpZiB0aGUgYHdob2AgaXMgYWxyZWFkeSBkZWFkLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBidXJuZWQuoC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQgZnJvbS4pAS0gYGFtb3VudGA6IFRoZSBtYXhpbXVtIGFtb3VudCBieSB3aGljaCBgd2hvYCdzIGJhbGFuY2Ugc2hvdWxkIGJlIHJlZHVjZWQuAFEBRW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuIElmIHRoaXMgdGFrZXMgdGhlIGJhbGFuY2UgdG8gYmVsb3cgdGhlOQFtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCBidXJuZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgCQFNb2RlczogUG9zdC1leGlzdGVuY2Ugb2YgYHdob2A7IFByZSAmIHBvc3QgWm9tYmllLXN0YXR1cyBvZiBgd2hvYC4gdHJhbnNmZXIMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFEBAShUOjpCYWxhbmNlAAhI0E1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLkx0cmFuc2Zlcl9rZWVwX2FsaXZlDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRRAQEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50UQEBKFQ6OkJhbGFuY2UACky0TW92ZSBzb21lIGFzc2V0cyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6YLSBgc291cmNlYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZC6ULSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgYHNvdXJjZWAncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRZAWBkZXN0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluTQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgYHNvdXJjZWAgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dNRiZWxvdyB0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGBkZXN0YDsgUG9zdC1leGlzdGVuY2Ugb2YgYHNvdXJjZWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZhxgZGVzdGAuGGZyZWV6ZQgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAswVQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCBmcm9tIGFuIGFjY291bnQgYHdob2AuIGB3aG9gTQFtdXN0IGFscmVhZHkgZXhpc3QgYXMgYW4gZW50cnkgaW4gYEFjY291bnRgcyBvZiB0aGUgYXNzZXQuIElmIHlvdSB3YW50IHRvIGZyZWV6ZSBhbvRhY2NvdW50IHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSwgdXNlIGB0b3VjaF9vdGhlcmAgZmlyc3QuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6ILSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjoQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmZyb3plbi4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWAwZnJlZXplX2Fzc2V0BAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAA0k8ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGNsYXNzLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgKHRoYXdfYXNzZXQEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADiTEQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA8odENoYW5nZSB0aGUgT3duZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+ABAwxENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4ABFAeFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDYRnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6UQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUgKiAobmFtZS5sZW4gKyBzeW1ib2wubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAEiyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4ApEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgYXNzZXQgb3duZXIuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2Vfc2V0X21ldGFkYXRhFAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plblkBARBib29sABM4uEZvcmNlIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQgdG8gc29tZSB2YWx1ZS4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBoQW55IGRlcG9zaXQgaXMgbGVmdCBhbG9uZS4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgBRAVdlaWdodDogYE8oTiArIFMpYCB3aGVyZSBOIGFuZCBTIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIGFuZCBzeW1ib2wgcmVzcGVjdGl2ZWx5LlBmb3JjZV9jbGVhcl9tZXRhZGF0YQQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VRAQEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnRZAQEQYm9vbAABJGlzX2Zyb3plblkBARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50UQEBKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb24AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFEBAShUOjpCYWxhbmNlABlITQFUcmFuc2ZlciBzb21lIGFzc2V0IGJhbGFuY2UgZnJvbSBhIHByZXZpb3VzbHkgZGVsZWdhdGVkIGFjY291bnQgdG8gc29tZSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBieSB0aGUgYG93bmVyYCB0byB0aGUcc2lnbmVyLgBZAUlmIHRoZSBlbnRpcmUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2ZlciBpcyB0cmFuc2ZlcnJlZCwgdGhlbiBhbnkgZGVwb3NpdCBwcmV2aW91c2x5tHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBpcyB1bnJlc2VydmVkLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuYQEtIGBvd25lcmA6IFRoZSBhY2NvdW50IHdoaWNoIHByZXZpb3VzbHkgYXBwcm92ZWQgZm9yIGEgdHJhbnNmZXIgb2YgYXQgbGVhc3QgYGFtb3VudGAgYW5kvGZyb20gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugd2lsbCBiZSB3aXRoZHJhd24uYQEtIGBkZXN0aW5hdGlvbmA6IFRoZSBhY2NvdW50IHRvIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIG9mIGBhbW91bnRgIHdpbGwgYmUgdHJhbnNmZXJyZWQutC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXRzIHRvIHRyYW5zZmVyLgCcRW1pdHMgYFRyYW5zZmVycmVkQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYBR0b3VjaAQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAaJMBDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3Igbm9uLXByb3ZpZGVyIGFzc2V0cy4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhhyZWZ1bmQIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAShhbGxvd19idXJuWQEBEGJvb2wAGzRZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdLIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi5hAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLCB0aGUgYXNzZXQgc3RhdHVzIG11c3QoICBiZSBsaXZlLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHjRdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZVkBARBib29sACBAHQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhc3NldCBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0PQFhbnkgaGVsZCwgZnJvemVuLCBvciBtaW5pbXVtIGJhbGFuY2UgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQuoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYXNzZXQgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IHRvIGJlIGtpbGxlZEUBICAoZmFsc2UpLCBvciB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgbWluaW11bSBiYWxhbmNlLCB3aGljaCB3aWxs6CAgZ3VhcmFudGVlIHRvIGtlZXAgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IGFsaXZlICh0cnVlKS4wc2V0X3Jlc2VydmVzCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEgcmVzZXJ2ZXMtBAHIQm91bmRlZFZlYzxUOjpSZXNlcnZlRGF0YSwgQ29uc3RVMzI8TUFYX1JFU0VSVkVTPj4AISTEU2V0cyB0aGUgdHJ1c3RlZCByZXNlcnZlIGluZm9ybWF0aW9uIG9mIGFuIGFzc2V0LgBVAU9yaWdpbiBtdXN0IGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4gVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQlAWBDcmVhdGVPcmlnaW5gIG9yIGJlIHRoZSBzaWduZWQgYG93bmVyYCBjb25maWd1cmVkIGR1cmluZyBhc3NldCBjcmVhdGlvbi4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LvAtIGByZXNlcnZlc2A6IFRoZSBmdWxsIGxpc3Qgb2YgdHJ1c3RlZCByZXNlcnZlcyBpbmZvcm1hdGlvbi4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsEEDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhhwYWxsZXQQQ2FsbAQEVAABGCxjcmVhdGVfcG9vbAgBGGFzc2V0Mf0BAURCb3g8VDo6QXNzZXRLaW5kPgABGGFzc2V0Mv0BAURCb3g8VDo6QXNzZXRLaW5kPgAAEBkBQ3JlYXRlcyBhbiBlbXB0eSBsaXF1aWRpdHkgcG9vbCBhbmQgYW4gYXNzb2NpYXRlZCBuZXcgYGxwX3Rva2VuYCBhc3NldAEBKHRoZSBpZCBvZiB3aGljaCBpcyByZXR1cm5lZCBpbiB0aGUgYEV2ZW50OjpQb29sQ3JlYXRlZGAgZXZlbnQpLgARAU9uY2UgYSBwb29sIGlzIGNyZWF0ZWQsIHNvbWVvbmUgbWF5IFtgUGFsbGV0OjphZGRfbGlxdWlkaXR5YF0gdG8gaXQuNGFkZF9saXF1aWRpdHkcARhhc3NldDH9AQFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDL9AQFEQm94PFQ6OkFzc2V0S2luZD4AATxhbW91bnQxX2Rlc2lyZWRVAQEoVDo6QmFsYW5jZQABPGFtb3VudDJfZGVzaXJlZFUBAShUOjpCYWxhbmNlAAEsYW1vdW50MV9taW5VAQEoVDo6QmFsYW5jZQABLGFtb3VudDJfbWluVQEBKFQ6OkJhbGFuY2UAARxtaW50X3RvBAEwVDo6QWNjb3VudElkAAE45FByb3ZpZGUgbGlxdWlkaXR5IGludG8gdGhlIHBvb2wgb2YgYGFzc2V0MWAgYW5kIGBhc3NldDJgLg0BTk9URTogYW4gb3B0aW1hbCBhbW91bnQgb2YgYXNzZXQxIGFuZCBhc3NldDIgd2lsbCBiZSBjYWxjdWxhdGVkIGFuZCEBbWlnaHQgYmUgZGlmZmVyZW50IHRoYW4gdGhlIHByb3ZpZGVkIGBhbW91bnQxX2Rlc2lyZWRgL2BhbW91bnQyX2Rlc2lyZWRg/HRodXMgeW91IHNob3VsZCBwcm92aWRlIHRoZSBtaW4gYW1vdW50IHlvdSdyZSBoYXBweSB0byBwcm92aWRlLshQYXJhbXMgYGFtb3VudDFfbWluYC9gYW1vdW50Ml9taW5gIHJlcHJlc2VudCB0aGF0LkkBYG1pbnRfdG9gIHdpbGwgYmUgc2VudCB0aGUgbGlxdWlkaXR5IHRva2VucyB0aGF0IHJlcHJlc2VudCB0aGlzIHNoYXJlIG9mIHRoZSBwb29sLgBdAU5PVEU6IHdoZW4gZW5jb3VudGVyaW5nIGFuIGluY29ycmVjdCBleGNoYW5nZSByYXRlIGFuZCBub24td2l0aGRyYXdhYmxlIHBvb2wgbGlxdWlkaXR5LNxiYXRjaCBhbiBhdG9taWMgY2FsbCB3aXRoIFtgUGFsbGV0OjphZGRfbGlxdWlkaXR5YF0gYW5kUQFbYFBhbGxldDo6c3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdIG9yIFtgUGFsbGV0Ojpzd2FwX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zYF0lAWNhbGxzIHRvIHJlbmRlciB0aGUgbGlxdWlkaXR5IHdpdGhkcmF3YWJsZSBhbmQgcmVjdGlmeSB0aGUgZXhjaGFuZ2UgcmF0ZS4A2E9uY2UgbGlxdWlkaXR5IGlzIGFkZGVkLCBzb21lb25lIG1heSBzdWNjZXNzZnVsbHkgY2FsbKRbYFBhbGxldDo6c3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdLkByZW1vdmVfbGlxdWlkaXR5GAEYYXNzZXQx/QEBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQy/QEBREJveDxUOjpBc3NldEtpbmQ+AAE0bHBfdG9rZW5fYnVyblUBAShUOjpCYWxhbmNlAAFMYW1vdW50MV9taW5fcmVjZWl2ZVUBAShUOjpCYWxhbmNlAAFMYW1vdW50Ml9taW5fcmVjZWl2ZVUBAShUOjpCYWxhbmNlAAEsd2l0aGRyYXdfdG8EATBUOjpBY2NvdW50SWQAAgxNAUFsbG93cyB5b3UgdG8gcmVtb3ZlIGxpcXVpZGl0eSBieSBwcm92aWRpbmcgdGhlIGBscF90b2tlbl9idXJuYCB0b2tlbnMgdGhhdCB3aWxsIGJlUQFidXJuZWQgaW4gdGhlIHByb2Nlc3MuIFdpdGggdGhlIHVzYWdlIG9mIGBhbW91bnQxX21pbl9yZWNlaXZlYC9gYW1vdW50Ml9taW5fcmVjZWl2ZWA1AWl0J3MgcG9zc2libGUgdG8gY29udHJvbCB0aGUgbWluIGFtb3VudCBvZiByZXR1cm5lZCB0b2tlbnMgeW91J3JlIGhhcHB5IHdpdGgucHN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnMUARBwYXRoxQQBWFZlYzxCb3g8VDo6QXNzZXRLaW5kPj4AASRhbW91bnRfaW5VAQEoVDo6QmFsYW5jZQABOGFtb3VudF9vdXRfbWluVQEBKFQ6OkJhbGFuY2UAARxzZW5kX3RvBAEwVDo6QWNjb3VudElkAAEoa2VlcF9hbGl2ZVkBARBib29sAAMYwFN3YXAgdGhlIGV4YWN0IGFtb3VudCBvZiBgYXNzZXQxYCBpbnRvIGBhc3NldDJgLi0BYGFtb3VudF9vdXRfbWluYCBwYXJhbSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG1pbiBhbW91bnQgb2YgdGhlIGBhc3NldDJgYHlvdSdyZSBoYXBweSB0byByZWNlaXZlLgBZAVtgQXNzZXRDb252ZXJzaW9uQXBpOjpxdW90ZV9wcmljZV9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdIHJ1bnRpbWUgY2FsbCBjYW4gYmUgY2FsbGVkMGZvciBhIHF1b3RlLnBzd2FwX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zFAEQcGF0aMUEAVhWZWM8Qm94PFQ6OkFzc2V0S2luZD4+AAEoYW1vdW50X291dFUBAShUOjpCYWxhbmNlAAE0YW1vdW50X2luX21heFUBAShUOjpCYWxhbmNlAAEcc2VuZF90bwQBMFQ6OkFjY291bnRJZAABKGtlZXBfYWxpdmVZAQEQYm9vbAAEGAEBU3dhcCBhbnkgYW1vdW50IG9mIGBhc3NldDFgIHRvIGdldCB0aGUgZXhhY3QgYW1vdW50IG9mIGBhc3NldDJgLhkBYGFtb3VudF9pbl9tYXhgIHBhcmFtIGFsbG93cyB0byBzcGVjaWZ5IHRoZSBtYXggYW1vdW50IG9mIHRoZSBgYXNzZXQxYGB5b3UncmUgaGFwcHkgdG8gcHJvdmlkZS4AWQFbYEFzc2V0Q29udmVyc2lvbkFwaTo6cXVvdGVfcHJpY2VfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnNgXSBydW50aW1lIGNhbGwgY2FuIGJlIGNhbGxlZDBmb3IgYSBxdW90ZS4UdG91Y2gIARhhc3NldDH9AQFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDL9AQFEQm94PFQ6OkFzc2V0S2luZD4ABSxNAVRvdWNoIGFuIGV4aXN0aW5nIHBvb2wgdG8gZnVsZmlsbCBwcmVyZXF1aXNpdGVzIGJlZm9yZSBwcm92aWRpbmcgbGlxdWlkaXR5LCBzdWNoIGFzSQFlbnN1cmluZyB0aGF0IHRoZSBwb29sJ3MgYWNjb3VudHMgYXJlIGluIHBsYWNlLiBJdCBpcyB0eXBpY2FsbHkgdXNlZnVsIHdoZW4gYSBwb29sVQFjcmVhdG9yIHJlbW92ZXMgdGhlIHBvb2wncyBhY2NvdW50cyBhbmQgZG9lcyBub3QgcHJvdmlkZSBhIGxpcXVpZGl0eS4gVGhpcyBhY3Rpb24gbWF5VQFpbnZvbHZlIGhvbGRpbmcgYXNzZXRzIGZyb20gdGhlIGNhbGxlciBhcyBhIGRlcG9zaXQgZm9yIGNyZWF0aW5nIHRoZSBwb29sJ3MgYWNjb3VudHMuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgApAS0gYGFzc2V0MWA6IFRoZSBhc3NldCBJRCBvZiBhbiBleGlzdGluZyBwb29sIHdpdGggYSBwYWlyIChhc3NldDEsIGFzc2V0MikuKQEtIGBhc3NldDJgOiBUaGUgYXNzZXQgSUQgb2YgYW4gZXhpc3RpbmcgcG9vbCB3aXRoIGEgcGFpciAoYXNzZXQxLCBhc3NldDIpLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4EcFBhbGxldCdzIGNhbGxhYmxlIGZ1bmN0aW9ucy7FBAAAAv0BAMkEDDxwYWxsZXRfdHJlYXN1cnkYcGFsbGV0EENhbGwIBFQABEkAARgsc3BlbmRfbG9jYWwIARhhbW91bnRRAQE8QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADRLhQcm9wb3NlIGFuZCBhcHByb3ZlIGEgc3BlbmQgb2YgdHJlYXN1cnkgZnVuZHMuAEgjIyBEaXNwYXRjaCBPcmlnaW4ARQFNdXN0IGJlIFtgQ29uZmlnOjpTcGVuZE9yaWdpbmBdIHdpdGggdGhlIGBTdWNjZXNzYCB2YWx1ZSBiZWluZyBhdCBsZWFzdCBgYW1vdW50YC4ALCMjIyBEZXRhaWxzRQFOT1RFOiBGb3IgcmVjb3JkLWtlZXBpbmcgcHVycG9zZXMsIHRoZSBwcm9wb3NlciBpcyBkZWVtZWQgdG8gYmUgZXF1aXZhbGVudCB0byB0aGUwYmVuZWZpY2lhcnkuADgjIyMgUGFyYW1ldGVyc0EBLSBgYW1vdW50YDogVGhlIGFtb3VudCB0byBiZSB0cmFuc2ZlcnJlZCBmcm9tIHRoZSB0cmVhc3VyeSB0byB0aGUgYGJlbmVmaWNpYXJ5YC7oLSBgYmVuZWZpY2lhcnlgOiBUaGUgZGVzdGluYXRpb24gYWNjb3VudCBmb3IgdGhlIHRyYW5zZmVyLgAkIyMgRXZlbnRzALRFbWl0cyBbYEV2ZW50OjpTcGVuZEFwcHJvdmVkYF0gaWYgc3VjY2Vzc2Z1bC48cmVtb3ZlX2FwcHJvdmFsBAEscHJvcG9zYWxfaWRgATRQcm9wb3NhbEluZGV4AARULQFGb3JjZSBhIHByZXZpb3VzbHkgYXBwcm92ZWQgcHJvcG9zYWwgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBhcHByb3ZhbCBxdWV1ZS4ASCMjIERpc3BhdGNoIE9yaWdpbgCETXVzdCBiZSBbYENvbmZpZzo6UmVqZWN0T3JpZ2luYF0uACgjIyBEZXRhaWxzAMBUaGUgb3JpZ2luYWwgZGVwb3NpdCB3aWxsIG5vIGxvbmdlciBiZSByZXR1cm5lZC4AOCMjIyBQYXJhbWV0ZXJzoC0gYHByb3Bvc2FsX2lkYDogVGhlIGluZGV4IG9mIGEgcHJvcG9zYWwAOCMjIyBDb21wbGV4aXR5rC0gTyhBKSB3aGVyZSBgQWAgaXMgdGhlIG51bWJlciBvZiBhcHByb3ZhbHMAKCMjIyBFcnJvcnNFAS0gW2BFcnJvcjo6UHJvcG9zYWxOb3RBcHByb3ZlZGBdOiBUaGUgYHByb3Bvc2FsX2lkYCBzdXBwbGllZCB3YXMgbm90IGZvdW5kIGluIHRoZVEBICBhcHByb3ZhbCBxdWV1ZSwgaS5lLiwgdGhlIHByb3Bvc2FsIGhhcyBub3QgYmVlbiBhcHByb3ZlZC4gVGhpcyBjb3VsZCBhbHNvIG1lYW4gdGhlWQEgIHByb3Bvc2FsIGRvZXMgbm90IGV4aXN0IGFsdG9nZXRoZXIsIHRodXMgdGhlcmUgaXMgbm8gd2F5IGl0IHdvdWxkIGhhdmUgYmVlbiBhcHByb3ZlZFQgIGluIHRoZSBmaXJzdCBwbGFjZS4Uc3BlbmQQAShhc3NldF9raW5kzQQBREJveDxUOjpBc3NldEtpbmQ+AAEYYW1vdW50UQEBUEFzc2V0QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnnRBAF4Qm94PEJlbmVmaWNpYXJ5TG9va3VwT2Y8VCwgST4+AAEodmFsaWRfZnJvbeABcE9wdGlvbjxCbG9ja051bWJlckZvcjxULCBJPj4ABWi4UHJvcG9zZSBhbmQgYXBwcm92ZSBhIHNwZW5kIG9mIHRyZWFzdXJ5IGZ1bmRzLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAB0BTXVzdCBiZSBbYENvbmZpZzo6U3BlbmRPcmlnaW5gXSB3aXRoIHRoZSBgU3VjY2Vzc2AgdmFsdWUgYmVpbmcgYXQgbGVhc3RVAWBhbW91bnRgIG9mIGBhc3NldF9raW5kYCBpbiB0aGUgbmF0aXZlIGFzc2V0LiBUaGUgYW1vdW50IG9mIGBhc3NldF9raW5kYCBpcyBjb252ZXJ0ZWTUZm9yIGFzc2VydGlvbiB1c2luZyB0aGUgW2BDb25maWc6OkJhbGFuY2VDb252ZXJ0ZXJgXS4AKCMjIERldGFpbHMASQFDcmVhdGUgYW4gYXBwcm92ZWQgc3BlbmQgZm9yIHRyYW5zZmVycmluZyBhIHNwZWNpZmljIGBhbW91bnRgIG9mIGBhc3NldF9raW5kYCB0byBhYQFkZXNpZ25hdGVkIGJlbmVmaWNpYXJ5LiBUaGUgc3BlbmQgbXVzdCBiZSBjbGFpbWVkIHVzaW5nIHRoZSBgcGF5b3V0YCBkaXNwYXRjaGFibGUgd2l0aGludHRoZSBbYENvbmZpZzo6UGF5b3V0UGVyaW9kYF0uADgjIyMgUGFyYW1ldGVycxUBLSBgYXNzZXRfa2luZGA6IEFuIGluZGljYXRvciBvZiB0aGUgc3BlY2lmaWMgYXNzZXQgY2xhc3MgdG8gYmUgc3BlbnQuQQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IHRvIGJlIHRyYW5zZmVycmVkIGZyb20gdGhlIHRyZWFzdXJ5IHRvIHRoZSBgYmVuZWZpY2lhcnlgLrgtIGBiZW5lZmljaWFyeWA6IFRoZSBiZW5lZmljaWFyeSBvZiB0aGUgc3BlbmQuVQEtIGB2YWxpZF9mcm9tYDogVGhlIGJsb2NrIG51bWJlciBmcm9tIHdoaWNoIHRoZSBzcGVuZCBjYW4gYmUgY2xhaW1lZC4gSXQgY2FuIHJlZmVyIHRvGQEgIHRoZSBwYXN0IGlmIHRoZSByZXN1bHRpbmcgc3BlbmQgaGFzIG5vdCB5ZXQgZXhwaXJlZCBhY2NvcmRpbmcgdG8gdGhlRQEgIFtgQ29uZmlnOjpQYXlvdXRQZXJpb2RgXS4gSWYgYE5vbmVgLCB0aGUgc3BlbmQgY2FuIGJlIGNsYWltZWQgaW1tZWRpYXRlbHkgYWZ0ZXIsICBhcHByb3ZhbC4AJCMjIEV2ZW50cwDIRW1pdHMgW2BFdmVudDo6QXNzZXRTcGVuZEFwcHJvdmVkYF0gaWYgc3VjY2Vzc2Z1bC4YcGF5b3V0BAEUaW5kZXg4AShTcGVuZEluZGV4AAZMOENsYWltIGEgc3BlbmQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AOE11c3QgYmUgc2lnbmVkACgjIyBEZXRhaWxzAFUBU3BlbmRzIG11c3QgYmUgY2xhaW1lZCB3aXRoaW4gc29tZSB0ZW1wb3JhbCBib3VuZHMuIEEgc3BlbmQgbWF5IGJlIGNsYWltZWQgd2l0aGluIG9uZdRbYENvbmZpZzo6UGF5b3V0UGVyaW9kYF0gZnJvbSB0aGUgYHZhbGlkX2Zyb21gIGJsb2NrLlUBSW4gY2FzZSBvZiBhIHBheW91dCBmYWlsdXJlLCB0aGUgc3BlbmQgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZSBgY2hlY2tfc3RhdHVzYNxkaXNwYXRjaGFibGUgYmVmb3JlIHJldHJ5aW5nIHdpdGggdGhlIGN1cnJlbnQgZnVuY3Rpb24uADgjIyMgUGFyYW1ldGVyc2wtIGBpbmRleGA6IFRoZSBzcGVuZCBpbmRleC4AJCMjIEV2ZW50cwCQRW1pdHMgW2BFdmVudDo6UGFpZGBdIGlmIHN1Y2Nlc3NmdWwuMGNoZWNrX3N0YXR1cwQBFGluZGV4OAEoU3BlbmRJbmRleAAHTCkBQ2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgc3BlbmQgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBzdG9yYWdlIGlmIHByb2Nlc3NlZC4ASCMjIERpc3BhdGNoIE9yaWdpbgA8TXVzdCBiZSBzaWduZWQuACgjIyBEZXRhaWxzAAEBVGhlIHN0YXR1cyBjaGVjayBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgcmV0cnlpbmcgYSBmYWlsZWQgcGF5b3V0LkkBSWYgYSBzcGVuZCBoYXMgZWl0aGVyIHN1Y2NlZWRlZCBvciBleHBpcmVkLCBpdCBpcyByZW1vdmVkIGZyb20gdGhlIHN0b3JhZ2UgYnkgdGhpc+xmdW5jdGlvbi4gSW4gc3VjaCBpbnN0YW5jZXMsIHRyYW5zYWN0aW9uIGZlZXMgYXJlIHJlZnVuZGVkLgA4IyMjIFBhcmFtZXRlcnNsLSBgaW5kZXhgOiBUaGUgc3BlbmQgaW5kZXguACQjIyBFdmVudHMA+EVtaXRzIFtgRXZlbnQ6OlBheW1lbnRGYWlsZWRgXSBpZiB0aGUgc3BlbmQgcGF5b3V0IGhhcyBmYWlsZWQuAQFFbWl0cyBbYEV2ZW50OjpTcGVuZFByb2Nlc3NlZGBdIGlmIHRoZSBzcGVuZCBwYXlvdXQgaGFzIHN1Y2NlZWQuKHZvaWRfc3BlbmQEARRpbmRleDgBKFNwZW5kSW5kZXgACEB8Vm9pZCBwcmV2aW91c2x5IGFwcHJvdmVkIHNwZW5kLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAIRNdXN0IGJlIFtgQ29uZmlnOjpSZWplY3RPcmlnaW5gXS4AKCMjIERldGFpbHMAHQFBIHNwZW5kIHZvaWQgaXMgb25seSBwb3NzaWJsZSBpZiB0aGUgcGF5b3V0IGhhcyBub3QgYmVlbiBhdHRlbXB0ZWQgeWV0LgA4IyMjIFBhcmFtZXRlcnNsLSBgaW5kZXhgOiBUaGUgc3BlbmQgaW5kZXguACQjIyBFdmVudHMAwEVtaXRzIFtgRXZlbnQ6OkFzc2V0U3BlbmRWb2lkZWRgXSBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7NBAxccG9sa2Fkb3RfcnVudGltZV9jb21tb24UaW1wbHNcVmVyc2lvbmVkTG9jYXRhYmxlQXNzZXQAAQwIVjMIASBsb2NhdGlvbq0BAUR4Y206OnYzOjpMb2NhdGlvbgABIGFzc2V0X2lkTQIBQHhjbTo6djM6OkFzc2V0SWQAAwAIVjQIASBsb2NhdGlvbskBAUR4Y206OnY0OjpMb2NhdGlvbgABIGFzc2V0X2lkwQIBQHhjbTo6djQ6OkFzc2V0SWQABAAIVjUIASBsb2NhdGlvbv0BAUR4Y206OnY1OjpMb2NhdGlvbgABIGFzc2V0X2lkDQMBQHhjbTo6djU6OkFzc2V0SWQABQAA0QQMRHBhcmFjaGFpbnNfY29tbW9uDHBheWRWZXJzaW9uZWRMb2NhdGFibGVBY2NvdW50AAEICFY0CAEgbG9jYXRpb27JAQFEeGNtOjp2NDo6TG9jYXRpb24AAShhY2NvdW50X2lkyQEBRHhjbTo6djQ6OkxvY2F0aW9uAAQACFY1CAEgbG9jYXRpb279AQFEeGNtOjp2NTo6TG9jYXRpb24AAShhY2NvdW50X2lk/QEBRHhjbTo6djU6OkxvY2F0aW9uAAUAANUEDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcYcGFsbGV0EENhbGwIBFQABEkAARgQdm90ZQgBKHBvbGxfaW5kZXhgAURQb2xsSW5kZXhPZjxULCBJPgABEHZvdGXZBAFwQWNjb3VudFZvdGU8QmFsYW5jZU9mPFQsIEk+PgAAJBkBVm90ZSBpbiBhIHBvbGwuIElmIGB2b3RlLmlzX2F5ZSgpYCwgdGhlIHZvdGUgaXMgdG8gZW5hY3QgdGhlIHByb3Bvc2FsO7hvdGhlcndpc2UgaXQgaXMgYSB2b3RlIHRvIGtlZXAgdGhlIHN0YXR1cyBxdW8uAMhUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgDILSBgcG9sbF9pbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgcG9sbCB0byB2b3RlIGZvci6ELSBgdm90ZWA6IFRoZSB2b3RlIGNvbmZpZ3VyYXRpb24uABUBV2VpZ2h0OiBgTyhSKWAgd2hlcmUgUiBpcyB0aGUgbnVtYmVyIG9mIHBvbGxzIHRoZSB2b3RlciBoYXMgdm90ZWQgb24uIGRlbGVnYXRlEAEUY2xhc3PRAwE0Q2xhc3NPZjxULCBJPgABCHRvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShjb252aWN0aW9u4QQBKENvbnZpY3Rpb24AARxiYWxhbmNlVQEBPEJhbGFuY2VPZjxULCBJPgABXE0BRGVsZWdhdGUgdGhlIHZvdGluZyBwb3dlciAod2l0aCBzb21lIGdpdmVuIGNvbnZpY3Rpb24pIG9mIHRoZSBzZW5kaW5nIGFjY291bnQgZm9yIGFocGFydGljdWxhciBjbGFzcyBvZiBwb2xscy4AVQFUaGUgYmFsYW5jZSBkZWxlZ2F0ZWQgaXMgbG9ja2VkIGZvciBhcyBsb25nIGFzIGl0J3MgZGVsZWdhdGVkLCBhbmQgdGhlcmVhZnRlciBmb3IgdGhlyHRpbWUgYXBwcm9wcmlhdGUgZm9yIHRoZSBjb252aWN0aW9uJ3MgbG9jayBwZXJpb2QuAF0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXywgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBlaXRoZXI6dCAgLSBiZSBkZWxlZ2F0aW5nIGFscmVhZHk7IG9yRQEgIC0gaGF2ZSBubyB2b3RpbmcgYWN0aXZpdHkgKGlmIHRoZXJlIGlzLCB0aGVuIGl0IHdpbGwgbmVlZCB0byBiZSByZW1vdmVkIHRocm91Z2hMICAgIGByZW1vdmVfdm90ZWApLgBFAS0gYHRvYDogVGhlIGFjY291bnQgd2hvc2Ugdm90aW5nIHRoZSBgdGFyZ2V0YCBhY2NvdW50J3Mgdm90aW5nIHBvd2VyIHdpbGwgZm9sbG93Ll0BLSBgY2xhc3NgOiBUaGUgY2xhc3Mgb2YgcG9sbHMgdG8gZGVsZWdhdGUuIFRvIGRlbGVnYXRlIG11bHRpcGxlIGNsYXNzZXMsIG11bHRpcGxlIGNhbGxzgCAgdG8gdGhpcyBmdW5jdGlvbiBhcmUgcmVxdWlyZWQuVQEtIGBjb252aWN0aW9uYDogVGhlIGNvbnZpY3Rpb24gdGhhdCB3aWxsIGJlIGF0dGFjaGVkIHRvIHRoZSBkZWxlZ2F0ZWQgdm90ZXMuIFdoZW4gdGhlQQEgIGFjY291bnQgaXMgdW5kZWxlZ2F0ZWQsIHRoZSBmdW5kcyB3aWxsIGJlIGxvY2tlZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgcGVyaW9kLmEBLSBgYmFsYW5jZWA6IFRoZSBhbW91bnQgb2YgdGhlIGFjY291bnQncyBiYWxhbmNlIHRvIGJlIHVzZWQgaW4gZGVsZWdhdGluZy4gVGhpcyBtdXN0IG5vdLQgIGJlIG1vcmUgdGhhbiB0aGUgYWNjb3VudCdzIGN1cnJlbnQgYmFsYW5jZS4ASEVtaXRzIGBEZWxlZ2F0ZWRgLgAlAVdlaWdodDogYE8oUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGUgdm90ZXIgZGVsZWdhdGluZyB0byBoYXNNASAgdm90ZWQgb24uIFdlaWdodCBpcyBpbml0aWFsbHkgY2hhcmdlZCBhcyBpZiBtYXhpbXVtIHZvdGVzLCBidXQgaXMgcmVmdW5kZWQgbGF0ZXIuKHVuZGVsZWdhdGUEARRjbGFzc9EDATRDbGFzc09mPFQsIEk+AAI4TQFVbmRlbGVnYXRlIHRoZSB2b3RpbmcgcG93ZXIgb2YgdGhlIHNlbmRpbmcgYWNjb3VudCBmb3IgYSBwYXJ0aWN1bGFyIGNsYXNzIG9mIHBvbGxzLgBdAVRva2VucyBtYXkgYmUgdW5sb2NrZWQgZm9sbG93aW5nIG9uY2UgYW4gYW1vdW50IG9mIHRpbWUgY29uc2lzdGVudCB3aXRoIHRoZSBsb2NrIHBlcmlvZAkBb2YgdGhlIGNvbnZpY3Rpb24gd2l0aCB3aGljaCB0aGUgZGVsZWdhdGlvbiB3YXMgaXNzdWVkIGhhcyBwYXNzZWQuAEUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlVGN1cnJlbnRseSBkZWxlZ2F0aW5nLgDwLSBgY2xhc3NgOiBUaGUgY2xhc3Mgb2YgcG9sbHMgdG8gcmVtb3ZlIHRoZSBkZWxlZ2F0aW9uIGZyb20uAFBFbWl0cyBgVW5kZWxlZ2F0ZWRgLgAlAVdlaWdodDogYE8oUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGUgdm90ZXIgZGVsZWdhdGluZyB0byBoYXNNASAgdm90ZWQgb24uIFdlaWdodCBpcyBpbml0aWFsbHkgY2hhcmdlZCBhcyBpZiBtYXhpbXVtIHZvdGVzLCBidXQgaXMgcmVmdW5kZWQgbGF0ZXIuGHVubG9jawgBFGNsYXNz0QMBNENsYXNzT2Y8VCwgST4AARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADJF0BUmVtb3ZlIHRoZSBsb2NrIGNhdXNlZCBieSBwcmlvciB2b3RpbmcvZGVsZWdhdGluZyB3aGljaCBoYXMgZXhwaXJlZCB3aXRoaW4gYSBwYXJ0aWN1bGFyGGNsYXNzLgDIVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AoC0gYGNsYXNzYDogVGhlIGNsYXNzIG9mIHBvbGxzIHRvIHVubG9jay64LSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gcmVtb3ZlIHRoZSBsb2NrIG9uLgC8V2VpZ2h0OiBgTyhSKWAgd2l0aCBSIG51bWJlciBvZiB2b3RlIG9mIHRhcmdldC4scmVtb3ZlX3ZvdGUIARRjbGFzc+UEAVRPcHRpb248Q2xhc3NPZjxULCBJPj4AARRpbmRleDgBRFBvbGxJbmRleE9mPFQsIEk+AAR0ZFJlbW92ZSBhIHZvdGUgZm9yIGEgcG9sbC4ADElmOnAtIHRoZSBwb2xsIHdhcyBjYW5jZWxsZWQsIG9yZC0gdGhlIHBvbGwgaXMgb25nb2luZywgb3J4LSB0aGUgcG9sbCBoYXMgZW5kZWQgc3VjaCB0aGF0/CAgLSB0aGUgdm90ZSBvZiB0aGUgYWNjb3VudCB3YXMgaW4gb3Bwb3NpdGlvbiB0byB0aGUgcmVzdWx0OyBvctQgIC0gdGhlcmUgd2FzIG5vIGNvbnZpY3Rpb24gdG8gdGhlIGFjY291bnQncyB2b3RlOyBvcoQgIC0gdGhlIGFjY291bnQgbWFkZSBhIHNwbGl0IHZvdGVdAS4uLnRoZW4gdGhlIHZvdGUgaXMgcmVtb3ZlZCBjbGVhbmx5IGFuZCBhIGZvbGxvd2luZyBjYWxsIHRvIGB1bmxvY2tgIG1heSByZXN1bHQgaW4gbW9yZVhmdW5kcyBiZWluZyBhdmFpbGFibGUuAJBJZiwgaG93ZXZlciwgdGhlIHBvbGwgaGFzIGVuZGVkIGFuZDrsLSBpdCBmaW5pc2hlZCBjb3JyZXNwb25kaW5nIHRvIHRoZSB2b3RlIG9mIHRoZSBhY2NvdW50LCBhbmTcLSB0aGUgYWNjb3VudCBtYWRlIGEgc3RhbmRhcmQgdm90ZSB3aXRoIGNvbnZpY3Rpb24sIGFuZLwtIHRoZSBsb2NrIHBlcmlvZCBvZiB0aGUgY29udmljdGlvbiBpcyBub3Qgb3ZlclkBLi4udGhlbiB0aGUgbG9jayB3aWxsIGJlIGFnZ3JlZ2F0ZWQgaW50byB0aGUgb3ZlcmFsbCBhY2NvdW50J3MgbG9jaywgd2hpY2ggbWF5IGludm9sdmVZASpvdmVybG9ja2luZyogKHdoZXJlIHRoZSB0d28gbG9ja3MgYXJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgbG9jayB0aGF0IGlzIHRoZSBtYXhpbXVt5G9mIGJvdGggdGhlIGFtb3VudCBsb2NrZWQgYW5kIHRoZSB0aW1lIGlzIGl0IGxvY2tlZCBmb3IpLgBJAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8sIGFuZCB0aGUgc2lnbmVyIG11c3QgaGF2ZSBhIHZvdGVwcmVnaXN0ZXJlZCBmb3IgcG9sbCBgaW5kZXhgLgDcLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgcG9sbCBvZiB0aGUgdm90ZSB0byBiZSByZW1vdmVkLlUBLSBgY2xhc3NgOiBPcHRpb25hbCBwYXJhbWV0ZXIsIGlmIGdpdmVuIGl0IGluZGljYXRlcyB0aGUgY2xhc3Mgb2YgdGhlIHBvbGwuIEZvciBwb2xsc/AgIHdoaWNoIGhhdmUgZmluaXNoZWQgb3IgYXJlIGNhbmNlbGxlZCwgdGhpcyBtdXN0IGJlIGBTb21lYC4ARQFXZWlnaHQ6IGBPKFIgKyBsb2cgUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGF0IGB0YXJnZXRgIGhhcyB2b3RlZCBvbi7YICBXZWlnaHQgaXMgY2FsY3VsYXRlZCBmb3IgdGhlIG1heGltdW0gbnVtYmVyIG9mIHZvdGUuRHJlbW92ZV9vdGhlcl92b3RlDAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRjbGFzc9EDATRDbGFzc09mPFQsIEk+AAEUaW5kZXg4AURQb2xsSW5kZXhPZjxULCBJPgAFQGRSZW1vdmUgYSB2b3RlIGZvciBhIHBvbGwuAE0BSWYgdGhlIGB0YXJnZXRgIGlzIGVxdWFsIHRvIHRoZSBzaWduZXIsIHRoZW4gdGhpcyBmdW5jdGlvbiBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8tAWByZW1vdmVfdm90ZWAuIElmIG5vdCBlcXVhbCB0byB0aGUgc2lnbmVyLCB0aGVuIHRoZSB2b3RlIG11c3QgaGF2ZSBleHBpcmVkLCUBZWl0aGVyIGJlY2F1c2UgdGhlIHBvbGwgd2FzIGNhbmNlbGxlZCwgYmVjYXVzZSB0aGUgdm90ZXIgbG9zdCB0aGUgcG9sbCBvcphiZWNhdXNlIHRoZSBjb252aWN0aW9uIHBlcmlvZCBpcyBvdmVyLgDIVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AYQEtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCBvZiB0aGUgdm90ZSB0byBiZSByZW1vdmVkOyB0aGlzIGFjY291bnQgbXVzdCBoYXZlIHZvdGVkIGZvciBwb2xsKCAgYGluZGV4YC7cLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgcG9sbCBvZiB0aGUgdm90ZSB0byBiZSByZW1vdmVkLoQtIGBjbGFzc2A6IFRoZSBjbGFzcyBvZiB0aGUgcG9sbC4ARQFXZWlnaHQ6IGBPKFIgKyBsb2cgUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGF0IGB0YXJnZXRgIGhhcyB2b3RlZCBvbi7YICBXZWlnaHQgaXMgY2FsY3VsYXRlZCBmb3IgdGhlIG1heGltdW0gbnVtYmVyIG9mIHZvdGUuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLtkEDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZSxBY2NvdW50Vm90ZQQcQmFsYW5jZQFVAQEMIFN0YW5kYXJkCAEQdm90Zd0EARBWb3RlAAEcYmFsYW5jZVUBARxCYWxhbmNlAAAAFFNwbGl0CAEMYXllVQEBHEJhbGFuY2UAAQxuYXlVAQEcQmFsYW5jZQABADBTcGxpdEFic3RhaW4MAQxheWVVAQEcQmFsYW5jZQABDG5heVUBARxCYWxhbmNlAAEcYWJzdGFpblUBARxCYWxhbmNlAAIAAN0EDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZRBWb3RlAAAEAAwAAADhBAxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nKGNvbnZpY3Rpb24oQ29udmljdGlvbgABHBBOb25lAAAAIExvY2tlZDF4AAEAIExvY2tlZDJ4AAIAIExvY2tlZDN4AAMAIExvY2tlZDR4AAQAIExvY2tlZDV4AAUAIExvY2tlZDZ4AAYAAOUEBBhPcHRpb24EBFQB0QMBCBBOb25lAAAAEFNvbWUEANEDAAABAADpBAxAcGFsbGV0X3JlZmVyZW5kYRhwYWxsZXQQQ2FsbAgEVAAESQABJBhzdWJtaXQMATxwcm9wb3NhbF9vcmlnaW7VAwFcQm94PFBhbGxldHNPcmlnaW5PZjxUPj4AASBwcm9wb3NhbO0EAUxCb3VuZGVkQ2FsbE9mPFQsIEk+AAFAZW5hY3RtZW50X21vbWVudPUEAYhEaXNwYXRjaFRpbWU8QmxvY2tOdW1iZXJGb3I8VCwgST4+AAAksFByb3Bvc2UgYSByZWZlcmVuZHVtIG9uIGEgcHJpdmlsZWdlZCBhY3Rpb24uAFkBLSBgb3JpZ2luYDogbXVzdCBiZSBgU3VibWl0T3JpZ2luYCBhbmQgdGhlIGFjY291bnQgbXVzdCBoYXZlIGBTdWJtaXNzaW9uRGVwb3NpdGAgZnVuZHMwICBhdmFpbGFibGUuLQEtIGBwcm9wb3NhbF9vcmlnaW5gOiBUaGUgb3JpZ2luIGZyb20gd2hpY2ggdGhlIHByb3Bvc2FsIHNob3VsZCBiZSBleGVjdXRlZC5sLSBgcHJvcG9zYWxgOiBUaGUgcHJvcG9zYWwuFQEtIGBlbmFjdG1lbnRfbW9tZW50YDogVGhlIG1vbWVudCB0aGF0IHRoZSBwcm9wb3NhbCBzaG91bGQgYmUgZW5hY3RlZC4ASEVtaXRzIGBTdWJtaXR0ZWRgLlhwbGFjZV9kZWNpc2lvbl9kZXBvc2l0BAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgAASCsUG9zdCB0aGUgRGVjaXNpb24gRGVwb3NpdCBmb3IgYSByZWZlcmVuZHVtLgA5AS0gYG9yaWdpbmA6IG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBhY2NvdW50IG11c3QgaGF2ZSBmdW5kcyBhdmFpbGFibGUgZm9yIHRoZaAgIHJlZmVyZW5kdW0ncyB0cmFjaydzIERlY2lzaW9uIERlcG9zaXQuUQEtIGBpbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgc3VibWl0dGVkIHJlZmVyZW5kdW0gd2hvc2UgRGVjaXNpb24gRGVwb3NpdCBpcyB5ZXQgdG8gYmUkICBwb3N0ZWQuAHhFbWl0cyBgRGVjaXNpb25EZXBvc2l0UGxhY2VkYC5ccmVmdW5kX2RlY2lzaW9uX2RlcG9zaXQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAACHCkBUmVmdW5kIHRoZSBEZWNpc2lvbiBEZXBvc2l0IGZvciBhIGNsb3NlZCByZWZlcmVuZHVtIGJhY2sgdG8gdGhlIGRlcG9zaXRvci4AnC0gYG9yaWdpbmA6IG11c3QgYmUgYFNpZ25lZGAgb3IgYFJvb3RgLk0BLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgYSBjbG9zZWQgcmVmZXJlbmR1bSB3aG9zZSBEZWNpc2lvbiBEZXBvc2l0IGhhcyBub3QgeWV0IGJlZW4sICByZWZ1bmRlZC4AgEVtaXRzIGBEZWNpc2lvbkRlcG9zaXRSZWZ1bmRlZGAuGGNhbmNlbAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAMYdENhbmNlbCBhbiBvbmdvaW5nIHJlZmVyZW5kdW0uAJwtIGBvcmlnaW5gOiBtdXN0IGJlIHRoZSBgQ2FuY2VsT3JpZ2luYC7cLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIHJlZmVyZW5kdW0gdG8gYmUgY2FuY2VsbGVkLgBIRW1pdHMgYENhbmNlbGxlZGAuEGtpbGwEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAAEGNBDYW5jZWwgYW4gb25nb2luZyByZWZlcmVuZHVtIGFuZCBzbGFzaCB0aGUgZGVwb3NpdHMuAJQtIGBvcmlnaW5gOiBtdXN0IGJlIHRoZSBgS2lsbE9yaWdpbmAu3C0gYGluZGV4YDogVGhlIGluZGV4IG9mIHRoZSByZWZlcmVuZHVtIHRvIGJlIGNhbmNlbGxlZC4AkEVtaXRzIGBLaWxsZWRgIGFuZCBgRGVwb3NpdFNsYXNoZWRgLkBudWRnZV9yZWZlcmVuZHVtBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgABRAdAUFkdmFuY2UgYSByZWZlcmVuZHVtIG9udG8gaXRzIG5leHQgbG9naWNhbCBzdGF0ZS4gT25seSB1c2VkIGludGVybmFsbHkuAGwtIGBvcmlnaW5gOiBtdXN0IGJlIGBSb290YC6kLSBgaW5kZXhgOiB0aGUgcmVmZXJlbmR1bSB0byBiZSBhZHZhbmNlZC5Ib25lX2Zld2VyX2RlY2lkaW5nBAEUdHJhY2vRAwE8VHJhY2tJZE9mPFQsIEk+AAYkCQFBZHZhbmNlIGEgdHJhY2sgb250byBpdHMgbmV4dCBsb2dpY2FsIHN0YXRlLiBPbmx5IHVzZWQgaW50ZXJuYWxseS4AbC0gYG9yaWdpbmA6IG11c3QgYmUgYFJvb3RgLpAtIGB0cmFja2A6IHRoZSB0cmFjayB0byBiZSBhZHZhbmNlZC4AUQFBY3Rpb24gaXRlbSBmb3Igd2hlbiB0aGVyZSBpcyBub3cgb25lIGZld2VyIHJlZmVyZW5kdW0gaW4gdGhlIGRlY2lkaW5nIHBoYXNlIGFuZCB0aGUVAWBEZWNpZGluZ0NvdW50YCBpcyBub3QgeWV0IHVwZGF0ZWQuIFRoaXMgbWVhbnMgdGhhdCB3ZSBzaG91bGQgZWl0aGVyOiUBLSBiZWdpbiBkZWNpZGluZyBhbm90aGVyIHJlZmVyZW5kdW0gKGFuZCBsZWF2ZSBgRGVjaWRpbmdDb3VudGAgYWxvbmUpOyBvcnAtIGRlY3JlbWVudCBgRGVjaWRpbmdDb3VudGAuZHJlZnVuZF9zdWJtaXNzaW9uX2RlcG9zaXQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAAHHDEBUmVmdW5kIHRoZSBTdWJtaXNzaW9uIERlcG9zaXQgZm9yIGEgY2xvc2VkIHJlZmVyZW5kdW0gYmFjayB0byB0aGUgZGVwb3NpdG9yLgCcLSBgb3JpZ2luYDogbXVzdCBiZSBgU2lnbmVkYCBvciBgUm9vdGAuVQEtIGBpbmRleGA6IFRoZSBpbmRleCBvZiBhIGNsb3NlZCByZWZlcmVuZHVtIHdob3NlIFN1Ym1pc3Npb24gRGVwb3NpdCBoYXMgbm90IHlldCBiZWVuLCAgcmVmdW5kZWQuAIhFbWl0cyBgU3VibWlzc2lvbkRlcG9zaXRSZWZ1bmRlZGAuMHNldF9tZXRhZGF0YQgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAEobWF5YmVfaGFzaPkEATxPcHRpb248VDo6SGFzaD4ACByYU2V0IG9yIGNsZWFyIG1ldGFkYXRhIG9mIGEgcmVmZXJlbmR1bS4ALFBhcmFtZXRlcnM6RQEtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgIGJ5IGEgY3JlYXRvciBvZiBhIHJlZmVyZW5kdW0gb3IgYnkgYW55b25lIHRvIGNsZWFyIGGQICBtZXRhZGF0YSBvZiBhIGZpbmlzaGVkIHJlZmVyZW5kdW0uDQEtIGBpbmRleGA6ICBUaGUgaW5kZXggb2YgYSByZWZlcmVuZHVtIHRvIHNldCBvciBjbGVhciBtZXRhZGF0YSBmb3IuUQEtIGBtYXliZV9oYXNoYDogVGhlIGhhc2ggb2YgYW4gb24tY2hhaW4gc3RvcmVkIHByZWltYWdlLiBgTm9uZWAgdG8gY2xlYXIgYSBtZXRhZGF0YS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu7QQQNGZyYW1lX3N1cHBvcnQYdHJhaXRzJHByZWltYWdlcxxCb3VuZGVkCARUASAESAHxBAEMGExlZ2FjeQQBEGhhc2g8ASRIOjpPdXRwdXQAAAAYSW5saW5lBABFBAE0Qm91bmRlZElubGluZQABABhMb29rdXAIARBoYXNoPAEkSDo6T3V0cHV0AAEMbGVuOAEMdTMyAAIAAPEEDChzcF9ydW50aW1lGHRyYWl0cyxCbGFrZVR3bzI1NgAAAAD1BBA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMgc2NoZWR1bGUwRGlzcGF0Y2hUaW1lBCxCbG9ja051bWJlcgE4AQgIQXQEADgBLEJsb2NrTnVtYmVyAAAAFEFmdGVyBAA4ASxCbG9ja051bWJlcgABAAD5BAQYT3B0aW9uBARUATwBCBBOb25lAAAAEFNvbWUEADwAAAEAAP0EDEBwYWxsZXRfd2hpdGVsaXN0GHBhbGxldBBDYWxsBARUAAEQOHdoaXRlbGlzdF9jYWxsBAEkY2FsbF9oYXNoPAEcVDo6SGFzaAAAAFxyZW1vdmVfd2hpdGVsaXN0ZWRfY2FsbAQBJGNhbGxfaGFzaDwBHFQ6Okhhc2gAAQBkZGlzcGF0Y2hfd2hpdGVsaXN0ZWRfY2FsbAwBJGNhbGxfaGFzaDwBHFQ6Okhhc2gAAUBjYWxsX2VuY29kZWRfbGVuOAEMdTMyAAFMY2FsbF93ZWlnaHRfd2l0bmVzcxEBARhXZWlnaHQAAgCcZGlzcGF0Y2hfd2hpdGVsaXN0ZWRfY2FsbF93aXRoX3ByZWltYWdlBAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAwAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuAQUMPHBhbGxldF9ib3VudGllcxhwYWxsZXQQQ2FsbAgEVAAESQABLDhwcm9wb3NlX2JvdW50eQgBFHZhbHVlUQEBPEJhbGFuY2VPZjxULCBJPgABLGRlc2NyaXB0aW9uGAEcVmVjPHU4PgAAMFRQcm9wb3NlIGEgbmV3IGJvdW50eS4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBRAVBheW1lbnQ6IGBUaXBSZXBvcnREZXBvc2l0QmFzZWAgd2lsbCBiZSByZXNlcnZlZCBmcm9tIHRoZSBvcmlnaW4gYWNjb3VudCwgYXMgd2VsbCBhc1EBYERhdGFEZXBvc2l0UGVyQnl0ZWAgZm9yIGVhY2ggYnl0ZSBpbiBgcmVhc29uYC4gSXQgd2lsbCBiZSB1bnJlc2VydmVkIHVwb24gYXBwcm92YWwsZG9yIHNsYXNoZWQgd2hlbiByZWplY3RlZC4A+C0gYGN1cmF0b3JgOiBUaGUgY3VyYXRvciBhY2NvdW50IHdob20gd2lsbCBtYW5hZ2UgdGhpcyBib3VudHkuZC0gYGZlZWA6IFRoZSBjdXJhdG9yIGZlZS4lAS0gYHZhbHVlYDogVGhlIHRvdGFsIHBheW1lbnQgYW1vdW50IG9mIHRoaXMgYm91bnR5LCBjdXJhdG9yIGZlZSBpbmNsdWRlZC7ALSBgZGVzY3JpcHRpb25gOiBUaGUgZGVzY3JpcHRpb24gb2YgdGhpcyBib3VudHkuOGFwcHJvdmVfYm91bnR5BAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARxdAUFwcHJvdmUgYSBib3VudHkgcHJvcG9zYWwuIEF0IGEgbGF0ZXIgdGltZSwgdGhlIGJvdW50eSB3aWxsIGJlIGZ1bmRlZCBhbmQgYmVjb21lIGFjdGl2ZahhbmQgdGhlIG9yaWdpbmFsIGRlcG9zaXQgd2lsbCBiZSByZXR1cm5lZC4ApE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIGBUOjpTcGVuZE9yaWdpbmAuADQjIyBDb21wbGV4aXR5HC0gTygxKS48cHJvcG9zZV9jdXJhdG9yDAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWVRAQE8QmFsYW5jZU9mPFQsIEk+AAIYlFByb3Bvc2UgYSBjdXJhdG9yIHRvIGEgZnVuZGVkIGJvdW50eS4ApE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIGBUOjpTcGVuZE9yaWdpbmAuADQjIyBDb21wbGV4aXR5HC0gTygxKS5AdW5hc3NpZ25fY3VyYXRvcgQBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AANEfFVuYXNzaWduIGN1cmF0b3IgZnJvbSBhIGJvdW50eS4AHQFUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgYSBzaWduZWQgb3JpZ2luLgA9AUlmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBgUmVqZWN0T3JpZ2luYCwgd2UgYXNzdW1lIHRoYXQgdGhlIGN1cmF0b3IgaXMxAW1hbGljaW91cyBvciBpbmFjdGl2ZS4gQXMgYSByZXN1bHQsIHdlIHdpbGwgc2xhc2ggdGhlIGN1cmF0b3Igd2hlbiBwb3NzaWJsZS4AYQFJZiB0aGUgb3JpZ2luIGlzIHRoZSBjdXJhdG9yLCB3ZSB0YWtlIHRoaXMgYXMgYSBzaWduIHRoZXkgYXJlIHVuYWJsZSB0byBkbyB0aGVpciBqb2IgYW5kXQF0aGV5IHdpbGxpbmdseSBnaXZlIHVwLiBXZSBjb3VsZCBzbGFzaCB0aGVtLCBidXQgZm9yIG5vdyB3ZSBhbGxvdyB0aGVtIHRvIHJlY292ZXIgdGhlaXI1AWRlcG9zaXQgYW5kIGV4aXQgd2l0aG91dCBpc3N1ZS4gKFdlIG1heSB3YW50IHRvIGNoYW5nZSB0aGlzIGlmIGl0IGlzIGFidXNlZC4pAF0BRmluYWxseSwgdGhlIG9yaWdpbiBjYW4gYmUgYW55b25lIGlmIGFuZCBvbmx5IGlmIHRoZSBjdXJhdG9yIGlzICJpbmFjdGl2ZSIuIFRoaXMgYWxsb3dzYQFhbnlvbmUgaW4gdGhlIGNvbW11bml0eSB0byBjYWxsIG91dCB0aGF0IGEgY3VyYXRvciBpcyBub3QgZG9pbmcgdGhlaXIgZHVlIGRpbGlnZW5jZSwgYW5kOQF3ZSBzaG91bGQgcGljayBhIG5ldyBjdXJhdG9yLiBJbiB0aGlzIGNhc2UgdGhlIGN1cmF0b3Igc2hvdWxkIGFsc28gYmUgc2xhc2hlZC4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjhhY2NlcHRfY3VyYXRvcgQBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AAQclEFjY2VwdCB0aGUgY3VyYXRvciByb2xlIGZvciBhIGJvdW50eS4pAUEgZGVwb3NpdCB3aWxsIGJlIHJlc2VydmVkIGZyb20gY3VyYXRvciBhbmQgcmVmdW5kIHVwb24gc3VjY2Vzc2Z1bCBwYXlvdXQuAJBNYXkgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgY3VyYXRvci4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjBhd2FyZF9ib3VudHkIASRib3VudHlfaWRgASxCb3VudHlJbmRleAABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABShZAUF3YXJkIGJvdW50eSB0byBhIGJlbmVmaWNpYXJ5IGFjY291bnQuIFRoZSBiZW5lZmljaWFyeSB3aWxsIGJlIGFibGUgdG8gY2xhaW0gdGhlIGZ1bmRzOGFmdGVyIGEgZGVsYXkuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGN1cmF0b3Igb2YgdGhpcyBib3VudHkuAIgtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gYXdhcmQuGQEtIGBiZW5lZmljaWFyeWA6IFRoZSBiZW5lZmljaWFyeSBhY2NvdW50IHdob20gd2lsbCByZWNlaXZlIHRoZSBwYXlvdXQuADQjIyBDb21wbGV4aXR5HC0gTygxKS4wY2xhaW1fYm91bnR5BAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgABiDsQ2xhaW0gdGhlIHBheW91dCBmcm9tIGFuIGF3YXJkZWQgYm91bnR5IGFmdGVyIHBheW91dCBkZWxheS4AJQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYmVuZWZpY2lhcnkgb2YgdGhpcyBib3VudHkuAIgtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gY2xhaW0uADQjIyBDb21wbGV4aXR5HC0gTygxKS4wY2xvc2VfYm91bnR5BAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAByQ5AUNhbmNlbCBhIHByb3Bvc2VkIG9yIGFjdGl2ZSBib3VudHkuIEFsbCB0aGUgZnVuZHMgd2lsbCBiZSBzZW50IHRvIHRyZWFzdXJ5IGFuZMx0aGUgY3VyYXRvciBkZXBvc2l0IHdpbGwgYmUgdW5yZXNlcnZlZCBpZiBwb3NzaWJsZS4AyE9ubHkgYFQ6OlJlamVjdE9yaWdpbmAgaXMgYWJsZSB0byBjYW5jZWwgYSBib3VudHkuAIwtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gY2FuY2VsLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuUGV4dGVuZF9ib3VudHlfZXhwaXJ5CAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARhyZW1hcmsYARxWZWM8dTg+AAgkrEV4dGVuZCB0aGUgZXhwaXJ5IHRpbWUgb2YgYW4gYWN0aXZlIGJvdW50eS4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgY3VyYXRvciBvZiB0aGlzIGJvdW50eS4AjC0gYGJvdW50eV9pZGA6IEJvdW50eSBJRCB0byBleHRlbmQujC0gYHJlbWFya2A6IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uADQjIyBDb21wbGV4aXR5HC0gTygxKS5sYXBwcm92ZV9ib3VudHlfd2l0aF9jdXJhdG9yDAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWVRAQE8QmFsYW5jZU9mPFQsIEk+AAks1EFwcHJvdmUgYm91bnRyeSBhbmQgcHJvcG9zZSBhIGN1cmF0b3Igc2ltdWx0YW5lb3VzbHkuVQFUaGlzIGNhbGwgaXMgYSBzaG9ydGN1dCB0byBjYWxsaW5nIGBhcHByb3ZlX2JvdW50eWAgYW5kIGBwcm9wb3NlX2N1cmF0b3JgIHNlcGFyYXRlbHkuAKRNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgVDo6U3BlbmRPcmlnaW5gLgCQLSBgYm91bnR5X2lkYDogQm91bnR5IElEIHRvIGFwcHJvdmUu+C0gYGN1cmF0b3JgOiBUaGUgY3VyYXRvciBhY2NvdW50IHdob20gd2lsbCBtYW5hZ2UgdGhpcyBib3VudHkuZC0gYGZlZWA6IFRoZSBjdXJhdG9yIGZlZS4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjBwb2tlX2RlcG9zaXQEASRib3VudHlfaWRgASxCb3VudHlJbmRleAAKPORQb2tlIHRoZSBkZXBvc2l0IHJlc2VydmVkIGZvciBjcmVhdGluZyBhIGJvdW50eSBwcm9wb3NhbC4A9FRoaXMgY2FuIGJlIHVzZWQgYnkgYWNjb3VudHMgdG8gdXBkYXRlIHRoZWlyIHJlc2VydmVkIGFtb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczr0LSBgYm91bnR5X2lkYDogVGhlIGJvdW50eSBpZCBmb3Igd2hpY2ggdG8gYWRqdXN0IHRoZSBkZXBvc2l0LgA5AUlmIHRoZSBkZXBvc2l0IGlzIHVwZGF0ZWQsIHRoZSBkaWZmZXJlbmNlIHdpbGwgYmUgcmVzZXJ2ZWQvdW5yZXNlcnZlZCBmcm9tIHRoZUxwcm9wb3NlcidzIGFjY291bnQuACkBVGhlIHRyYW5zYWN0aW9uIGlzIG1hZGUgZnJlZSBpZiB0aGUgZGVwb3NpdCBpcyB1cGRhdGVkIGFuZCBwYWlkIG90aGVyd2lzZS4AvEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHRoZSBkZXBvc2l0IGlzIHVwZGF0ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLgUFDFRwYWxsZXRfY2hpbGRfYm91bnRpZXMYcGFsbGV0EENhbGwEBFQAARxAYWRkX2NoaWxkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABFHZhbHVlUQEBMEJhbGFuY2VPZjxUPgABLGRlc2NyaXB0aW9uGAEcVmVjPHU4PgAATFxBZGQgYSBuZXcgY2hpbGQtYm91bnR5LgD8VGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGN1cmF0b3Igb2YgcGFyZW503GJvdW50eSBhbmQgdGhlIHBhcmVudCBib3VudHkgbXVzdCBiZSBpbiAiYWN0aXZlIiBzdGF0ZS4ABQFDaGlsZC1ib3VudHkgZ2V0cyBhZGRlZCBzdWNjZXNzZnVsbHkgJiBmdW5kIGdldHMgdHJhbnNmZXJyZWQgZnJvbQkBcGFyZW50IGJvdW50eSB0byBjaGlsZC1ib3VudHkgYWNjb3VudCwgaWYgcGFyZW50IGJvdW50eSBoYXMgZW5vdWdobGZ1bmRzLCBlbHNlIHRoZSBjYWxsIGZhaWxzLgANAVVwcGVyIGJvdW5kIHRvIG1heGltdW0gbnVtYmVyIG9mIGFjdGl2ZSAgY2hpbGQgYm91bnRpZXMgdGhhdCBjYW4gYmWoYWRkZWQgYXJlIG1hbmFnZWQgdmlhIHJ1bnRpbWUgdHJhaXQgY29uZmlnmFtgQ29uZmlnOjpNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50YF0uAAEBSWYgdGhlIGNhbGwgaXMgc3VjY2VzcywgdGhlIHN0YXR1cyBvZiBjaGlsZC1ib3VudHkgaXMgdXBkYXRlZCB0byAiQWRkZWQiLgBNAS0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5IGZvciB3aGljaCBjaGlsZC1ib3VudHkgaXMgYmVpbmcgYWRkZWQusC0gYHZhbHVlYDogVmFsdWUgZm9yIGV4ZWN1dGluZyB0aGUgcHJvcG9zYWwu3C0gYGRlc2NyaXB0aW9uYDogVGV4dCBkZXNjcmlwdGlvbiBmb3IgdGhlIGNoaWxkLWJvdW50eS48cHJvcG9zZV9jdXJhdG9yEAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWVRAQEwQmFsYW5jZU9mPFQ+AAE8oFByb3Bvc2UgY3VyYXRvciBmb3IgZnVuZGVkIGNoaWxkLWJvdW50eS4ADQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBjdXJhdG9yIG9mIHBhcmVudCBib3VudHkuABEBUGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2hpbGQtYm91bnR5IGNhbGwgdG8Ud29yay4ADQFDaGlsZC1ib3VudHkgbXVzdCBiZSBpbiAiQWRkZWQiIHN0YXRlLCBmb3IgcHJvY2Vzc2luZyB0aGUgY2FsbC4gQW5kBQFzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gIkN1cmF0b3JQcm9wb3NlZCIgb24gc3VjY2Vzc2Z1bEBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LrQtIGBjdXJhdG9yYDogQWRkcmVzcyBvZiBjaGlsZC1ib3VudHkgY3VyYXRvci7sLSBgZmVlYDogcGF5bWVudCBmZWUgdG8gY2hpbGQtYm91bnR5IGN1cmF0b3IgZm9yIGV4ZWN1dGlvbi44YWNjZXB0X2N1cmF0b3IIAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWRgASxCb3VudHlJbmRleAACTLRBY2NlcHQgdGhlIGN1cmF0b3Igcm9sZSBmb3IgdGhlIGNoaWxkLWJvdW50eS4A9FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBjdXJhdG9yIG9mIHRoaXM0Y2hpbGQtYm91bnR5LgDsQSBkZXBvc2l0IHdpbGwgYmUgcmVzZXJ2ZWQgZnJvbSB0aGUgY3VyYXRvciBhbmQgcmVmdW5kIHVwb26Ic3VjY2Vzc2Z1bCBwYXlvdXQgb3IgY2FuY2VsbGF0aW9uLgD4RmVlIGZvciBjdXJhdG9yIGlzIGRlZHVjdGVkIGZyb20gY3VyYXRvciBmZWUgb2YgcGFyZW50IGJvdW50eS4AEQFQYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0bxR3b3JrLgANAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluICJDdXJhdG9yUHJvcG9zZWQiIHN0YXRlLCBmb3IgcHJvY2Vzc2luZyB0aGUJAWNhbGwuIEFuZCBzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gIkFjdGl2ZSIgb24gc3VjY2Vzc2Z1bEBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LkB1bmFzc2lnbl9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAA4iUVW5hc3NpZ24gY3VyYXRvciBmcm9tIGEgY2hpbGQtYm91bnR5LgAJAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBjYW4gYmUgZWl0aGVyIGBSZWplY3RPcmlnaW5gLCBvctx0aGUgY3VyYXRvciBvZiB0aGUgcGFyZW50IGJvdW50eSwgb3IgYW55IHNpZ25lZCBvcmlnaW4uAPhGb3IgdGhlIG9yaWdpbiBvdGhlciB0aGFuIFQ6OlJlamVjdE9yaWdpbiBhbmQgdGhlIGNoaWxkLWJvdW50eQEBY3VyYXRvciwgcGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2FsbCB0bwkBd29yay4gV2UgYWxsb3cgY2hpbGQtYm91bnR5IGN1cmF0b3IgYW5kIFQ6OlJlamVjdE9yaWdpbiB0byBleGVjdXRlyHRoaXMgY2FsbCBpcnJlc3BlY3RpdmUgb2YgdGhlIHBhcmVudCBib3VudHkgc3RhdGUuANxJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgb3IgdGhlBQFwYXJlbnQgYm91bnR5IGN1cmF0b3IsIHdlIGFzc3VtZSB0aGF0IHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciBpcw0BbWFsaWNpb3VzIG9yIGluYWN0aXZlLiBBcyBhIHJlc3VsdCwgY2hpbGQtYm91bnR5IGN1cmF0b3IgZGVwb3NpdCBpcyBzbGFzaGVkLgAFAUlmIHRoZSBvcmlnaW4gaXMgdGhlIGNoaWxkLWJvdW50eSBjdXJhdG9yLCB3ZSB0YWtlIHRoaXMgYXMgYSBzaWduCQF0aGF0IHRoZXkgYXJlIHVuYWJsZSB0byBkbyB0aGVpciBqb2IsIGFuZCBhcmUgd2lsbGluZ2x5IGdpdmluZyB1cC4JAVdlIGNvdWxkIHNsYXNoIHRoZSBkZXBvc2l0LCBidXQgZm9yIG5vdyB3ZSBhbGxvdyB0aGVtIHRvIHVucmVzZXJ2ZREBdGhlaXIgZGVwb3NpdCBhbmQgZXhpdCB3aXRob3V0IGlzc3VlLiAoV2UgbWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMgaWY4aXQgaXMgYWJ1c2VkLikABQFGaW5hbGx5LCB0aGUgb3JpZ2luIGNhbiBiZSBhbnlvbmUgaWZmIHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciBpcwkBImluYWN0aXZlIi4gRXhwaXJ5IHVwZGF0ZSBkdWUgb2YgcGFyZW50IGJvdW50eSBpcyB1c2VkIHRvIGVzdGltYXRlnGluYWN0aXZlIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBjdXJhdG9yLgANAVRoaXMgYWxsb3dzIGFueW9uZSBpbiB0aGUgY29tbXVuaXR5IHRvIGNhbGwgb3V0IHRoYXQgYSBjaGlsZC1ib3VudHkJAWN1cmF0b3IgaXMgbm90IGRvaW5nIHRoZWlyIGR1ZSBkaWxpZ2VuY2UsIGFuZCB3ZSBzaG91bGQgcGljayBhIG5ld/hvbmUuIEluIHRoaXMgY2FzZSB0aGUgY2hpbGQtYm91bnR5IGN1cmF0b3IgZGVwb3NpdCBpcyBzbGFzaGVkLgABAVN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBtb3ZlZCB0byBBZGRlZCBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNhbGwsY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuSGF3YXJkX2NoaWxkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGABLEJvdW50eUluZGV4AAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAERJBBd2FyZCBjaGlsZC1ib3VudHkgdG8gYSBiZW5lZmljaWFyeS4A+FRoZSBiZW5lZmljaWFyeSB3aWxsIGJlIGFibGUgdG8gY2xhaW0gdGhlIGZ1bmRzIGFmdGVyIGEgZGVsYXkuAPxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgcGFyZW50IGN1cmF0b3Igb3J0Y3VyYXRvciBvZiB0aGlzIGNoaWxkLWJvdW50eS4AEQFQYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0bxR3b3JrLgAJAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhlIGNhbGwuIEFuZBEBc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIG1vdmVkIHRvICJQZW5kaW5nUGF5b3V0IiBvbiBzdWNjZXNzZnVsIGNhbGwsY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkulC0gYGJlbmVmaWNpYXJ5YDogQmVuZWZpY2lhcnkgYWNjb3VudC5IY2xhaW1fY2hpbGRfYm91bnR5CAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgABUAFAUNsYWltIHRoZSBwYXlvdXQgZnJvbSBhbiBhd2FyZGVkIGNoaWxkLWJvdW50eSBhZnRlciBwYXlvdXQgZGVsYXkuAOxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbWF5IGJlIGFueSBzaWduZWQgb3JpZ2luLgAFAUNhbGwgd29ya3MgaW5kZXBlbmRlbnQgb2YgcGFyZW50IGJvdW50eSBzdGF0ZSwgTm8gbmVlZCBmb3IgcGFyZW50dGJvdW50eSB0byBiZSBpbiBhY3RpdmUgc3RhdGUuABEBVGhlIEJlbmVmaWNpYXJ5IGlzIHBhaWQgb3V0IHdpdGggYWdyZWVkIGJvdW50eSB2YWx1ZS4gQ3VyYXRvciBmZWUgaXOUcGFpZCAmIGN1cmF0b3IgZGVwb3NpdCBpcyB1bnJlc2VydmVkLgAFAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluICJQZW5kaW5nUGF5b3V0IiBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhl/GNhbGwuIEFuZCBpbnN0YW5jZSBvZiBjaGlsZC1ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGF0ZSBvbmxzdWNjZXNzZnVsIGNhbGwgY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuSGNsb3NlX2NoaWxkX2JvdW50eQgBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGABLEJvdW50eUluZGV4AAZYEQFDYW5jZWwgYSBwcm9wb3NlZCBvciBhY3RpdmUgY2hpbGQtYm91bnR5LiBDaGlsZC1ib3VudHkgYWNjb3VudCBmdW5kcwkBYXJlIHRyYW5zZmVycmVkIHRvIHBhcmVudCBib3VudHkgYWNjb3VudC4gVGhlIGNoaWxkLWJvdW50eSBjdXJhdG9ymGRlcG9zaXQgbWF5IGJlIHVucmVzZXJ2ZWQgaWYgcG9zc2libGUuAAkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgZWl0aGVyIHBhcmVudCBjdXJhdG9yIG9ySGBUOjpSZWplY3RPcmlnaW5gLgDwSWYgdGhlIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBgQWN0aXZlYCwgY3VyYXRvciBkZXBvc2l0IGlzLHVucmVzZXJ2ZWQuAPRJZiB0aGUgc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIGBQZW5kaW5nUGF5b3V0YCwgY2FsbCBmYWlscyAmeHJldHVybnMgYFBlbmRpbmdQYXlvdXRgIGVycm9yLgANAUZvciB0aGUgb3JpZ2luIG90aGVyIHRoYW4gVDo6UmVqZWN0T3JpZ2luLCBwYXJlbnQgYm91bnR5IG11c3QgYmUgaW7wYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0byB3b3JrLiBGb3Igb3JpZ2lukFQ6OlJlamVjdE9yaWdpbiBleGVjdXRpb24gaXMgZm9yY2VkLgABAUluc3RhbmNlIG9mIGNoaWxkLWJvdW50eSBpcyByZW1vdmVkIGZyb20gdGhlIHN0YXRlIG9uIHN1Y2Nlc3NmdWxAY2FsbCBjb21wbGV0aW9uLgC0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkIGJvdW50eS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuCQUMRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBBDYWxsBARUAAEMGGNyZWF0ZQgBKGFzc2V0X2tpbmTNBAFEQm94PFQ6OkFzc2V0S2luZD4AARByYXRlDQUBJEZpeGVkVTEyOAAAEA0BSW5pdGlhbGl6ZSBhIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYdXBkYXRlCAEoYXNzZXRfa2luZM0EAURCb3g8VDo6QXNzZXRLaW5kPgABEHJhdGUNBQEkRml4ZWRVMTI4AAEQBQFVcGRhdGUgdGhlIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYcmVtb3ZlBAEoYXNzZXRfa2luZM0EAURCb3g8VDo6QXNzZXRLaW5kPgACECUBUmVtb3ZlIGFuIGV4aXN0aW5nIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuDQUMNHNwX2FyaXRobWV0aWMsZml4ZWRfcG9pbnQkRml4ZWRVMTI4AAAEAFUBARB1MTI4AAARBQxscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGHBhbGxldBBDYWxsCARUAARJAAEkLGZ1bmRfYm91bnR5EAEoYXNzZXRfa2luZM0EAURCb3g8VDo6QXNzZXRLaW5kPgABFHZhbHVlUQEBKFQ6OkJhbGFuY2UAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBtZXRhZGF0YTwBHFQ6Okhhc2gAAGgpAUZ1bmQgYSBuZXcgYm91bnR5IHdpdGggYSBwcm9wb3NlZCBjdXJhdG9yLCBpbml0aWF0aW5nIHRoZSBwYXltZW50IGZyb20gdGhluGZ1bmRpbmcgc291cmNlIHRvIHRoZSBib3VudHkgYWNjb3VudC9sb2NhdGlvbi4ASCMjIERpc3BhdGNoIE9yaWdpbgAdAU11c3QgYmUgW2BDb25maWc6OlNwZW5kT3JpZ2luYF0gd2l0aCB0aGUgYFN1Y2Nlc3NgIHZhbHVlIGJlaW5nIGF0IGxlYXN0QQF0aGUgYm91bnR5IHZhbHVlIGNvbnZlcnRlZCB0byBuYXRpdmUgYmFsYW5jZSB1c2luZyBbYENvbmZpZzo6QmFsYW5jZUNvbnZlcnRlcmBdLjUBVGhlIGNvbnZlcnRlZCBuYXRpdmUgYW1vdW50IGlzIHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBtYXhpbXVtIHNwZW5kYWJsZSBhbW91bnSQcmV0dXJuZWQgYnkgW2BDb25maWc6OlNwZW5kT3JpZ2luYF0uACgjIyBEZXRhaWxzACEBLSBUaGUgYFNwZW5kT3JpZ2luYCBtdXN0IGhhdmUgc3VmZmljaWVudCBwZXJtaXNzaW9ucyB0byBmdW5kIHRoZSBib3VudHkuWQEtIFRoZSBib3VudHkgYHZhbHVlYCAoaW4gYXNzZXQgYmFsYW5jZSkgaXMgY29udmVydGVkIHRvIG5hdGl2ZSBiYWxhbmNlIGZvciB2YWxpZGF0aW9uLikBLSBJbiBjYXNlIG9mIGEgZnVuZGluZyBmYWlsdXJlLCB0aGUgYm91bnR5IHN0YXR1cyBtdXN0IGJlIHVwZGF0ZWQgd2l0aCB0aGUBASAgYGNoZWNrX3N0YXR1c2AgY2FsbCBiZWZvcmUgcmV0cnlpbmcgd2l0aCBgcmV0cnlfcGF5bWVudGAgY2FsbC4AOCMjIyBQYXJhbWV0ZXJzGQEtIGBhc3NldF9raW5kYDogQW4gaW5kaWNhdG9yIG9mIHRoZSBzcGVjaWZpYyBhc3NldCBjbGFzcyB0byBiZSBmdW5kZWQuzC0gYHZhbHVlYDogVGhlIHRvdGFsIHBheW1lbnQgYW1vdW50IG9mIHRoaXMgYm91bnR5LpwtIGBjdXJhdG9yYDogQWRkcmVzcyBvZiBib3VudHkgY3VyYXRvci4tAS0gYG1ldGFkYXRhYDogVGhlIGhhc2ggb2YgYW4gb24tY2hhaW4gc3RvcmVkIHByZWltYWdlIHdpdGggYm91bnR5IG1ldGFkYXRhLgAkIyMgRXZlbnRzAAUBRW1pdHMgW2BFdmVudDo6Qm91bnR5Q3JlYXRlZGBdIGFuZCBbYEV2ZW50OjpQYWlkYF0gaWYgc3VjY2Vzc2Z1bC5EZnVuZF9jaGlsZF9ib3VudHkQAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARR2YWx1ZVEBAShUOjpCYWxhbmNlAAEgbWV0YWRhdGE8ARxUOjpIYXNoAAEcY3VyYXRvcj0EAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AAFgXQFGdW5kIGEgbmV3IGNoaWxkLWJvdW50eSB3aXRoIGEgcHJvcG9zZWQgY3VyYXRvciwgaW5pdGlhdGluZyB0aGUgcGF5bWVudCBmcm9tIHRoZSBwYXJlbnSwYm91bnR5IHRvIHRoZSBjaGlsZC1ib3VudHkgYWNjb3VudC9sb2NhdGlvbi4ASCMjIERpc3BhdGNoIE9yaWdpbgCUTXVzdCBiZSBzaWduZWQgYnkgdGhlIHBhcmVudCBjdXJhdG9yLgAoIyMgRGV0YWlscwBFAS0gSWYgYGN1cmF0b3JgIGlzIG5vdCBwcm92aWRlZCwgdGhlIGNoaWxkLWJvdW50eSB3aWxsIGRlZmF1bHQgdG8gdXNpbmcgdGhlIHBhcmVudDUBICBjdXJhdG9yLCBhbGxvd2luZyB0aGUgcGFyZW50IGN1cmF0b3IgdG8gaW1tZWRpYXRlbHkgY2FsbCBgY2hlY2tfc3RhdHVzYCBhbmSwICBgYXdhcmRfYm91bnR5YCB0byBwYXlvdXQgdGhlIGNoaWxkLWJvdW50eS5FAS0gSW4gY2FzZSBvZiBhIGZ1bmRpbmcgZmFpbHVyZSwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZQEBICBgY2hlY2tfc3RhdHVzYCBjYWxsIGJlZm9yZSByZXRyeWluZyB3aXRoIGByZXRyeV9wYXltZW50YCBjYWxsLgA4IyMjIFBhcmFtZXRlcnNNAS0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5IGZvciB3aGljaCBjaGlsZC1ib3VudHkgaXMgYmVpbmcgYWRkZWQuzC0gYHZhbHVlYDogVGhlIHBheW1lbnQgYW1vdW50IG9mIHRoaXMgY2hpbGQtYm91bnR5LkUBLSBgbWV0YWRhdGFgOiBUaGUgaGFzaCBvZiBhbiBvbi1jaGFpbiBzdG9yZWQgcHJlaW1hZ2Ugd2l0aCBjaGlsZC1ib3VudHkgbWV0YWRhdGEutC0gYGN1cmF0b3JgOiBBZGRyZXNzIG9mIGNoaWxkLWJvdW50eSBjdXJhdG9yLgAkIyMgRXZlbnRzABkBRW1pdHMgW2BFdmVudDo6Q2hpbGRCb3VudHlDcmVhdGVkYF0gYW5kIFtgRXZlbnQ6OlBhaWRgXSBpZiBzdWNjZXNzZnVsLjxwcm9wb3NlX2N1cmF0b3IMAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTgAUxPcHRpb248Qm91bnR5SW5kZXg+AAEcY3VyYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAJUMQFQcm9wb3NlIGEgbmV3IGN1cmF0b3IgZm9yIGEgY2hpbGQtL2JvdW50eSBhZnRlciB0aGUgcHJldmlvdXMgd2FzIHVuYXNzaWduZWQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AQQFNdXN0IGJlIHNpZ25lZCBieSBgVDo6U3BlbmRPcmlnaW5gIGZvciBhIGJvdW50eSwgb3IgYnkgdGhlIHBhcmVudCBib3VudHkgY3VyYXRvckxmb3IgYSBjaGlsZC1ib3VudHkuACgjIyBEZXRhaWxzAPQtIFRoZSBjaGlsZC0vYm91bnR5IG11c3QgYmUgaW4gdGhlIGBDdXJhdG9yVW5hc3NpZ25lZGAgc3RhdGUuRQEtIEZvciBhIGJvdW50eSwgdGhlIGBTcGVuZE9yaWdpbmAgbXVzdCBoYXZlIHN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gcHJvcG9zZSB0aGUoICBjdXJhdG9yLgA4IyMjIFBhcmFtZXRlcnOYLSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LswtIGBjdXJhdG9yYDogQWNjb3VudCB0byBiZSBwcm9wb3NlZCBhcyB0aGUgY3VyYXRvci4AJCMjIEV2ZW50cwC8RW1pdHMgW2BFdmVudDo6Q3VyYXRvclByb3Bvc2VkYF0gaWYgc3VjY2Vzc2Z1bC44YWNjZXB0X2N1cmF0b3IIAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTgAUxPcHRpb248Qm91bnR5SW5kZXg+AANMsEFjY2VwdCB0aGUgY3VyYXRvciByb2xlIGZvciBhIGNoaWxkLS9ib3VudHkuAEgjIyBEaXNwYXRjaCBPcmlnaW4AnE11c3QgYmUgc2lnbmVkIGJ5IHRoZSBwcm9wb3NlZCBjdXJhdG9yLgAoIyMgRGV0YWlscwDILSBUaGUgY2hpbGQtL2JvdW50eSBtdXN0IGJlIGluIHRoZSBgRnVuZGVkYCBzdGF0ZS7wLSBUaGUgY3VyYXRvciBtdXN0IGFjY2VwdCB0aGUgcm9sZSBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uSQEtIEEgZGVwb3NpdCB3aWxsIGJlIHJlc2VydmVkIGZyb20gdGhlIGN1cmF0b3IgYW5kIHJlZnVuZGVkIHVwb24gc3VjY2Vzc2Z1bCBwYXlvdXQuADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzAMhFbWl0cyBbYEV2ZW50OjpCb3VudHlCZWNhbWVBY3RpdmVgXSBpZiBzdWNjZXNzZnVsLkB1bmFzc2lnbl9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lk4AFMT3B0aW9uPEJvdW50eUluZGV4PgAEZJhVbmFzc2lnbiBjdXJhdG9yIGZyb20gYSBjaGlsZC0vYm91bnR5LgBIIyMgRGlzcGF0Y2ggT3JpZ2luAFEBVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIG9yIHRoZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IuACgjIyBEZXRhaWxzAGEBLSBJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAsIG9yIGJ5IHRoZSBwYXJlbnQgY3VyYXRvciBpbiB0aGUgY2FzZVkBICBvZiBhIGNoaWxkIGJvdW50eSwgd2UgYXNzdW1lIHRoYXQgdGhlIGN1cmF0b3IgaXMgbWFsaWNpb3VzIG9yIGluYWN0aXZlLiBBcyBhIHJlc3VsdCyoICB3ZSB3aWxsIHNsYXNoIHRoZSBjdXJhdG9yIHdoZW4gcG9zc2libGUuXQEtIElmIHRoZSBvcmlnaW4gaXMgdGhlIGNoaWxkLS9ib3VudHkgY3VyYXRvciwgd2UgdGFrZSB0aGlzIGFzIGEgc2lnbiB0aGV5IGFyZSB1bmFibGUgdG9RASAgZG8gdGhlaXIgam9iIGFuZCB0aGV5IHdpbGxpbmdseSBnaXZlIHVwLiBXZSBjb3VsZCBzbGFzaCB0aGVtLCBidXQgZm9yIG5vdyB3ZSBhbGxvd1kBICB0aGVtIHRvIHJlY292ZXIgdGhlaXIgZGVwb3NpdCBhbmQgZXhpdCB3aXRob3V0IGlzc3VlLiAoV2UgbWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMgaWZAICBpdCBpcyBhYnVzZWQpLj0BLSBJZiBzdWNjZXNzZnVsLCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgdXBkYXRlZCB0byBgQ3VyYXRvclVuYXNzaWduZWRgLiBUb0UBICByZWFjdGl2YXRlIHRoZSBib3VudHksIGEgbmV3IGN1cmF0b3IgbXVzdCBiZSBwcm9wb3NlZCBhbmQgbXVzdCBhY2NlcHQgdGhlIHJvbGUuADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzAMRFbWl0cyBbYEV2ZW50OjpDdXJhdG9yVW5hc3NpZ25lZGBdIGlmIHN1Y2Nlc3NmdWwuMGF3YXJkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOABTE9wdGlvbjxCb3VudHlJbmRleD4AASxiZW5lZmljaWFyedEEAWRCZW5lZmljaWFyeUxvb2t1cE9mPFQsIEk+AAVg7EF3YXJkcyB0aGUgY2hpbGQtL2JvdW50eSB0byBhIGJlbmVmaWNpYXJ5IGFjY291bnQvbG9jYXRpb24sHQFpbml0aWF0aW5nIHRoZSBwYXlvdXQgcGF5bWVudHMgdG8gYm90aCB0aGUgYmVuZWZpY2lhcnkgYW5kIHRoZSBjdXJhdG9yLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAFEBVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIG9yIHRoZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IuACgjIyBEZXRhaWxzAMgtIFRoZSBjaGlsZC0vYm91bnR5IG11c3QgYmUgaW4gdGhlIGBBY3RpdmVgIHN0YXRlLj0BLSBpZiBhd2FyZGluZyBhIHBhcmVudCBib3VudHkgaXQgbXVzdCBub3QgaGF2ZSBhY3RpdmUgb3IgZnVuZGVkIGNoaWxkIGJvdW50aWVzLlkBLSBJbml0aWF0ZXMgcGF5b3V0IHBheW1lbnQgZnJvbSB0aGUgY2hpbGQtL2JvdW50eSB0byB0aGUgYmVuZWZpY2lhcnkgYWNjb3VudC9sb2NhdGlvbi4lAS0gSWYgc3VjY2Vzc2Z1bCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgdXBkYXRlZCB0byBgUGF5b3V0QXR0ZW1wdGVkYC4xAS0gSW4gY2FzZSBvZiBhIHBheW91dCBmYWlsdXJlLCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgbXVzdCBiZSB1cGRhdGVkIHdpdGj4YGNoZWNrX3N0YXR1c2AgY2FsbCBiZWZvcmUgcmV0cnlpbmcgd2l0aCBgcmV0cnlfcGF5bWVudGAgY2FsbC4AOCMjIyBQYXJhbWV0ZXJztC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZC1ib3VudHkuCQEtIGBiZW5lZmljaWFyeWA6IEFjY291bnQvbG9jYXRpb24gdG8gYmUgYXdhcmRlZCB0aGUgY2hpbGQtL2JvdW50eS4AJCMjIEV2ZW50cwAFAUVtaXRzIFtgRXZlbnQ6OkJvdW50eUF3YXJkZWRgXSBhbmQgW2BFdmVudDo6UGFpZGBdIGlmIHN1Y2Nlc3NmdWwuMGNsb3NlX2JvdW50eQgBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOABTE9wdGlvbjxCb3VudHlJbmRleD4ABlxhAUNhbmNlbCBhbiBhY3RpdmUgY2hpbGQtL2JvdW50eS4gQSBwYXltZW50IHRvIHNlbmQgYWxsIHRoZSBmdW5kcyB0byB0aGUgZnVuZGluZyBzb3VyY2UgaXMwaW5pdGlhbGl6ZWQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AUQFUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgb3IgdGhlIHBhcmVudCBib3VudHkgY3VyYXRvci4AKCMjIERldGFpbHMAPQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IGlzIGluIHRoZSBgRnVuZGVkYCBzdGF0ZSwgYSByZWZ1bmQgcGF5bWVudCBpcyBpbml0aWF0ZWQuWQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IGlzIGluIHRoZSBgQWN0aXZlYCBzdGF0ZSwgYSByZWZ1bmQgcGF5bWVudCBpcyBpbml0aWF0ZWQgYW5kIHRoZREBICBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyB1cGRhdGVkIHdpdGggdGhlIGN1cmF0b3IgYWNjb3VudC9sb2NhdGlvbi5BAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgaXMgaW4gdGhlIGZ1bmRpbmcgb3IgcGF5b3V0IHBoYXNlLCBpdCBjYW5ub3QgYmUgY2FuY2VsZWQuQQEtIEluIGNhc2Ugb2YgYSByZWZ1bmQgZmFpbHVyZSwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZfhgY2hlY2tfc3RhdHVzYCBjYWxsIGJlZm9yZSByZXRyeWluZyB3aXRoIGByZXRyeV9wYXltZW50YCBjYWxsLgA4IyMjIFBhcmFtZXRlcnO0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkLWJvdW50eS4AJCMjIEV2ZW50cwAJAUVtaXRzIFtgRXZlbnQ6OkJvdW50eUNhbmNlbGVkYF0gYW5kIFtgRXZlbnQ6OlBhaWRgXSBpZiBzdWNjZXNzZnVsLjBjaGVja19zdGF0dXMIAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTgAUxPcHRpb248Qm91bnR5SW5kZXg+AAdk3ENoZWNrIGFuZCB1cGRhdGUgdGhlIHBheW1lbnQgc3RhdHVzIG9mIGEgY2hpbGQtL2JvdW50eS4ASCMjIERpc3BhdGNoIE9yaWdpbgA8TXVzdCBiZSBzaWduZWQuACgjIyBEZXRhaWxzAFUBLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYEZ1bmRpbmdBdHRlbXB0ZWRgLCBpdCBjaGVja3MgaWYgdGhlIGZ1bmRpbmcgcGF5bWVudA0BICBoYXMgc3VjY2VlZGVkLiBJZiBzdWNjZXNzZnVsLCB0aGUgYm91bnR5IHN0YXR1cyBiZWNvbWVzIGBGdW5kZWRgLl0BLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYFJlZnVuZEF0dGVtcHRlZGAsIGl0IGNoZWNrcyBpZiB0aGUgcmVmdW5kIHBheW1lbnQgaGFzGQEgIHN1Y2NlZWRlZC4gSWYgc3VjY2Vzc2Z1bCwgdGhlIGNoaWxkLS9ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHN0b3JhZ2UuXQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyBgUGF5b3V0QXR0ZW1wdGVkYCwgaXQgY2hlY2tzIGlmIHRoZSBwYXlvdXQgcGF5bWVudCBoYXMZASAgc3VjY2VlZGVkLiBJZiBzdWNjZXNzZnVsLCB0aGUgY2hpbGQtL2JvdW50eSBpcyByZW1vdmVkIGZyb20gc3RvcmFnZS4AOCMjIyBQYXJhbWV0ZXJztC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZC1ib3VudHkuACQjIyBFdmVudHMAXQFFbWl0cyBbYEV2ZW50OjpCb3VudHlCZWNhbWVBY3RpdmVgXSBpZiB0aGUgY2hpbGQvYm91bnR5IHN0YXR1cyB0cmFuc2l0aW9ucyB0byBgQWN0aXZlYC4lAUVtaXRzIFtgRXZlbnQ6OkJvdW50eVJlZnVuZFByb2Nlc3NlZGBdIGlmIHRoZSByZWZ1bmQgcGF5bWVudCBoYXMgc3VjY2VlZC4lAUVtaXRzIFtgRXZlbnQ6OkJvdW50eVBheW91dFByb2Nlc3NlZGBdIGlmIHRoZSBwYXlvdXQgcGF5bWVudCBoYXMgc3VjY2VlZC5VAUVtaXRzIFtgRXZlbnQ6OlBheW1lbnRGYWlsZWRgXSBpZiB0aGUgZnVuZGluZywgcmVmdW5kIG91ciBwYXltZW50IHBheW1lbnQgaGFzIGZhaWxlZC40cmV0cnlfcGF5bWVudAgBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOABTE9wdGlvbjxCb3VudHlJbmRleD4ACFi0UmV0cnkgdGhlIGZ1bmRpbmcsIHJlZnVuZCBvciBwYXlvdXQgcGF5bWVudHMuAEgjIyBEaXNwYXRjaCBPcmlnaW4APE11c3QgYmUgc2lnbmVkLgAoIyMgRGV0YWlscwBhAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBGdW5kaW5nQXR0ZW1wdGVkYCwgaXQgcmV0cmllcyB0aGUgZnVuZGluZyBwYXltZW50IGZyb23QICBmdW5kaW5nIHNvdXJjZSB0aGUgY2hpbGQtL2JvdW50eSBhY2NvdW50L2xvY2F0aW9uLlkBLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYFJlZnVuZEF0dGVtcHRlZGAsIGl0IHJldHJpZXMgdGhlIHJlZnVuZCBwYXltZW50IGZyb23sICB0aGUgY2hpbGQtL2JvdW50eSBhY2NvdW50L2xvY2F0aW9uIHRvIHRoZSBmdW5kaW5nIHNvdXJjZS5ZAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBQYXlvdXRBdHRlbXB0ZWRgLCBpdCByZXRyaWVzIHRoZSBwYXlvdXQgcGF5bWVudCBmcm9tJQEgIHRoZSBjaGlsZC0vYm91bnR5IGFjY291bnQvbG9jYXRpb24gdG8gdGhlIGJlbmVmaWNpYXJ5IGFjY291bnQvbG9jYXRpb24uADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzADUBRW1pdHMgW2BFdmVudDo6UGFpZGBdIGlmIHRoZSBmdW5kaW5nLCByZWZ1bmQgb3IgcGF5b3V0IHBheW1lbnQgaGFzIGluaXRpYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuFQUMKHBhbGxldF9kYXAYcGFsbGV0EENhbGwEBFQAAQRUc2V0X2J1ZGdldF9hbGxvY2F0aW9uBAE8bmV3X2FsbG9jYXRpb25zGQUBTEJ1ZGdldEFsbG9jYXRpb25NYXAAABB4U2V0IHRoZSBidWRnZXQgYWxsb2NhdGlvbiBtYXAuADkBRWFjaCBrZXkgbXVzdCBtYXRjaCBhIHJlZ2lzdGVyZWQgYEJ1ZGdldFJlY2lwaWVudGAuIFRoZSBzdW0gb2YgYWxsIHBlcmNlbnRhZ2VzJQFtdXN0IGJlIGV4YWN0bHkgMTAwJS4gUmVjaXBpZW50cyBub3QgaW5jbHVkZWQgaW4gdGhlIG1hcCByZWNlaXZlIG5vdGhpbmcuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLhkFDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfbWFwPEJvdW5kZWRCVHJlZU1hcAwESwHBAwRWAR0FBFMAAAQAIQUBOEJUcmVlTWFwPEssIFY+AAAdBQw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcmJpbGwAAAQAOAEMdTMyAAAhBQQgQlRyZWVNYXAIBEsBwQMEVgEdBQAEACUFAAAAJQUAAAIpBQApBQAABAjBAx0FAC0FDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0EENhbGwEBFQAARhYY29udHJvbF9hdXRvX21pZ3JhdGlvbgQBMG1heWJlX2NvbmZpZzEFAVxPcHRpb248TWlncmF0aW9uTGltaXRzPgAADIBDb250cm9sIHRoZSBhdXRvbWF0aWMgbWlncmF0aW9uLgANAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgW2BDb25maWc6OkNvbnRyb2xPcmlnaW5gXS5AY29udGludWVfbWlncmF0ZQwBGGxpbWl0czUFATxNaWdyYXRpb25MaW1pdHMAATxyZWFsX3NpemVfdXBwZXI4AQx1MzIAATB3aXRuZXNzX3Rhc2s5BQFATWlncmF0aW9uVGFzazxUPgABVLhDb250aW51ZSB0aGUgbWlncmF0aW9uIGZvciB0aGUgZ2l2ZW4gYGxpbWl0c2AuAOxUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBjYW4gYmUgYW55IHNpZ25lZCBhY2NvdW50LgBdAVRoaXMgdHJhbnNhY3Rpb24gaGFzIE5PIE1PTkVUQVJZIElOQ0VOVElWRVMuIGNhbGxpbmcgaXQgd2lsbCBub3QgcmV3YXJkIGFueW9uZS4gQWxiZWl0LOxVcG9uIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uLCB0aGUgdHJhbnNhY3Rpb24gZmVlIGlzIHJldHVybmVkLgBBAVRoZSAocG90ZW50aWFsbHkgb3Zlci1lc3RpbWF0ZWQpIG9mIHRoZSBieXRlIGxlbmd0aCBvZiBhbGwgdGhlIGRhdGEgcmVhZCBtdXN0IGJlWQFwcm92aWRlZCBmb3IgdXAtZnJvbnQgZmVlLXBheW1lbnQgYW5kIHdlaWdoaW5nLiBJbiBlc3NlbmNlLCB0aGUgY2FsbGVyIGlzIGd1YXJhbnRlZWluZ0kBdGhhdCBleGVjdXRpbmcgdGhlIGN1cnJlbnQgYE1pZ3JhdGlvblRhc2tgIHdpdGggdGhlIGdpdmVuIGBsaW1pdHNgIHdpbGwgbm90IGV4Y2VlZJRgcmVhbF9zaXplX3VwcGVyYCBieXRlcyBvZiByZWFkIGRhdGEuAEUBVGhlIGB3aXRuZXNzX3Rhc2tgIGlzIG1lcmVseSBhIGhlbHBlciB0byBwcmV2ZW50IHRoZSBjYWxsZXIgZnJvbSBiZWluZyBzbGFzaGVkIG9yXQFnZW5lcmFsbHkgdHJpZ2dlciBhIG1pZ3JhdGlvbiB0aGF0IHRoZXkgZG8gbm90IGludGVuZC4gVGhpcyBwYXJhbWV0ZXIgaXMganVzdCBhIG1lc3NhZ2U9AWZyb20gY2FsbGVyLCBzYXlpbmcgdGhhdCB0aGV5IGJlbGlldmVkIGB3aXRuZXNzX3Rhc2tgIHdhcyB0aGUgbGFzdCBzdGF0ZSBvZiB0aGVZAW1pZ3JhdGlvbiwgYW5kIHRoZXkgb25seSB3aXNoIGZvciB0aGVpciB0cmFuc2FjdGlvbiB0byBkbyBhbnl0aGluZywgaWYgdGhpcyBhc3N1bXB0aW9uEQFob2xkcy4gSW4gY2FzZSBgd2l0bmVzc190YXNrYCBkb2VzIG5vdCBtYXRjaCwgdGhlIHRyYW5zYWN0aW9uIGZhaWxzLgA5AUJhc2VkIG9uIHRoZSBkb2N1bWVudGF0aW9uIG9mIFtgTWlncmF0aW9uVGFzazo6bWlncmF0ZV91bnRpbF9leGhhdXN0aW9uYF0sIHRoZU0BcmVjb21tZW5kZWQgd2F5IG9mIGRvaW5nIHRoaXMgaXMgdG8gcGFzcyBhIGBsaW1pdGAgdGhhdCBvbmx5IGJvdW5kcyBgY291bnRgLCBhcyB0aGWcYHNpemVgIGxpbWl0IGNhbiBhbHdheXMgYmUgb3ZlcndyaXR0ZW4uSG1pZ3JhdGVfY3VzdG9tX3RvcAgBEGtleXM0ATBWZWM8VmVjPHU4Pj4AATB3aXRuZXNzX3NpemU4AQx1MzIAAhAJAU1pZ3JhdGUgdGhlIGxpc3Qgb2YgdG9wIGtleXMgYnkgaXRlcmF0aW5nIGVhY2ggb2YgdGhlbSBvbmUgYnkgb25lLgBVAVRoaXMgZG9lcyBub3QgYWZmZWN0IHRoZSBnbG9iYWwgbWlncmF0aW9uIHByb2Nlc3MgdHJhY2tlciAoW2BNaWdyYXRpb25Qcm9jZXNzYF0pLCBhbmT8c2hvdWxkIG9ubHkgYmUgdXNlZCBpbiBjYXNlIGFueSBrZXlzIGFyZSBsZWZ0b3ZlciBkdWUgdG8gYSBidWcuUG1pZ3JhdGVfY3VzdG9tX2NoaWxkDAEQcm9vdBgBHFZlYzx1OD4AAShjaGlsZF9rZXlzNAEwVmVjPFZlYzx1OD4+AAEodG90YWxfc2l6ZTgBDHUzMgADGBEBTWlncmF0ZSB0aGUgbGlzdCBvZiBjaGlsZCBrZXlzIGJ5IGl0ZXJhdGluZyBlYWNoIG9mIHRoZW0gb25lIGJ5IG9uZS4ADQFBbGwgb2YgdGhlIGdpdmVuIGNoaWxkIGtleXMgbXVzdCBiZSBwcmVzZW50IHVuZGVyIG9uZSBgY2hpbGRfcm9vdGAuAFUBVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGdsb2JhbCBtaWdyYXRpb24gcHJvY2VzcyB0cmFja2VyIChbYE1pZ3JhdGlvblByb2Nlc3NgXSksIGFuZPxzaG91bGQgb25seSBiZSB1c2VkIGluIGNhc2UgYW55IGtleXMgYXJlIGxlZnRvdmVyIGR1ZSB0byBhIGJ1Zy5Uc2V0X3NpZ25lZF9tYXhfbGltaXRzBAEYbGltaXRzNQUBPE1pZ3JhdGlvbkxpbWl0cwAEBLhTZXQgdGhlIG1heGltdW0gbGltaXQgb2YgdGhlIHNpZ25lZCBtaWdyYXRpb24uSGZvcmNlX3NldF9wcm9ncmVzcwgBMHByb2dyZXNzX3RvcD0FATRQcm9ncmVzc09mPFQ+AAE4cHJvZ3Jlc3NfY2hpbGQ9BQE0UHJvZ3Jlc3NPZjxUPgAFJMhGb3JjZWZ1bGx5IHNldCB0aGUgcHJvZ3Jlc3MgdGhlIHJ1bm5pbmcgbWlncmF0aW9uLgBdAVRoaXMgaXMgb25seSB1c2VmdWwgaW4gb25lIGNhc2U6IHRoZSBuZXh0IGtleSB0byBtaWdyYXRlIGlzIHRvbyBiaWcgdG8gYmUgbWlncmF0ZWQgd2l0aFUBYSBzaWduZWQgYWNjb3VudCwgaW4gYSBwYXJhY2hhaW4gY29udGV4dCwgYW5kIHdlIHNpbXBseSB3YW50IHRvIHNraXAgaXQuIEEgcmVhc29uYWJsZWEBZXhhbXBsZSBvZiB0aGlzIHdvdWxkIGJlIGA6Y29kZTpgLCB3aGljaCBpcyBib3RoIHZlcnkgZXhwZW5zaXZlIHRvIG1pZ3JhdGUsIGFuZCBjb21tb25seaR1c2VkLCBzbyBwcm9iYWJseSBpdCBpcyBhbHJlYWR5IG1pZ3JhdGVkLgBdAUluIGNhc2UgeW91IG1lc3MgdGhpbmdzIHVwLCB5b3UgY2FuIGFsc28sIGluIHByaW5jaXBsZSwgdXNlIHRoaXMgdG8gcmVzZXQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4xBQQYT3B0aW9uBARUATUFAQgQTm9uZQAAABBTb21lBAA1BQAAAQAANQUMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQ8TWlncmF0aW9uTGltaXRzAAAIARBzaXplOAEMdTMyAAEQaXRlbTgBDHUzMgAAOQUMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQ0TWlncmF0aW9uVGFzawQEVAAAFAEwcHJvZ3Jlc3NfdG9wPQUBNFByb2dyZXNzT2Y8VD4AAThwcm9ncmVzc19jaGlsZD0FATRQcm9ncmVzc09mPFQ+AAEQc2l6ZTgBDHUzMgABJHRvcF9pdGVtczgBDHUzMgABLGNoaWxkX2l0ZW1zOAEMdTMyAAA9BQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldCBQcm9ncmVzcwQkTWF4S2V5TGVuAAEMHFRvU3RhcnQAAAAcTGFzdEtleQQAQQUBZEJvdW5kZWRWZWM8dTgsIE1heEtleUxlbj4AAQAgQ29tcGxldGUAAgAAQQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABFBQxccGFsbGV0X25vbWluYXRpb25fcG9vbHMYcGFsbGV0EENhbGwEBFQAAWgQam9pbggBGGFtb3VudFEBATBCYWxhbmNlT2Y8VD4AARxwb29sX2lkOAEYUG9vbElkAABARQFTdGFrZSBmdW5kcyB3aXRoIGEgcG9vbC4gVGhlIGFtb3VudCB0byBib25kIGlzIGRlbGVnYXRlZCAob3IgdHJhbnNmZXJyZWQgYmFzZWQgb25NAVtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGVgXSkgZnJvbSB0aGUgbWVtYmVyIHRvIHRoZSBwb29sIGFjY291bnQgYW5kIGltbWVkaWF0ZWx5aGluY3JlYXNlcyB0aGUgcG9vbCdzIGJvbmQuACkBVGhlIG1ldGhvZCBvZiB0cmFuc2ZlcnJpbmcgdGhlIGFtb3VudCB0byB0aGUgcG9vbCBhY2NvdW50IGlzIGRldGVybWluZWQgYnkBAVtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGVgXS4gSWYgdGhlIHBvb2wgaXMgY29uZmlndXJlZCB0byB1c2UxAVtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OkRlbGVnYXRlYF0sIHRoZSBmdW5kcyByZW1haW4gaW4gdGhlIGFjY291bnQgb2YxAXRoZSBgb3JpZ2luYCwgd2hpbGUgdGhlIHBvb2wgZ2FpbnMgdGhlIHJpZ2h0IHRvIHVzZSB0aGVzZSBmdW5kcyBmb3Igc3Rha2luZy4AGCMgTm90ZQDMKiBBbiBhY2NvdW50IGNhbiBvbmx5IGJlIGEgbWVtYmVyIG9mIGEgc2luZ2xlIHBvb2wu2CogQW4gYWNjb3VudCBjYW5ub3Qgam9pbiB0aGUgc2FtZSBwb29sIG11bHRpcGxlIHRpbWVzLkEBKiBUaGlzIGNhbGwgd2lsbCAqbm90KiBkdXN0IHRoZSBtZW1iZXIgYWNjb3VudCwgc28gdGhlIG1lbWJlciBtdXN0IGhhdmUgYXQgbGVhc3TIICBgZXhpc3RlbnRpYWwgZGVwb3NpdCArIGFtb3VudGAgaW4gdGhlaXIgYWNjb3VudC7QKiBPbmx5IGEgcG9vbCB3aXRoIFtgUG9vbFN0YXRlOjpPcGVuYF0gY2FuIGJlIGpvaW5lZChib25kX2V4dHJhBAEUZXh0cmFJBQFcQm9uZEV4dHJhPEJhbGFuY2VPZjxUPj4AARxFAUJvbmQgYGV4dHJhYCBtb3JlIGZ1bmRzIGZyb20gYG9yaWdpbmAgaW50byB0aGUgcG9vbCB0byB3aGljaCB0aGV5IGFscmVhZHkgYmVsb25nLgBJAUFkZGl0aW9uYWwgZnVuZHMgY2FuIGNvbWUgZnJvbSBlaXRoZXIgdGhlIGZyZWUgYmFsYW5jZSBvZiB0aGUgYWNjb3VudCwgb2YgZnJvbSB0aGWcYWNjdW11bGF0ZWQgcmV3YXJkcywgc2VlIFtgQm9uZEV4dHJhYF0uAD0BQm9uZGluZyBleHRyYSBmdW5kcyBpbXBsaWVzIGFuIGF1dG9tYXRpYyBwYXlvdXQgb2YgYWxsIHBlbmRpbmcgcmV3YXJkcyBhcyB3ZWxsLgkBU2VlIGBib25kX2V4dHJhX290aGVyYCB0byBib25kIHBlbmRpbmcgcmV3YXJkcyBvZiBgb3RoZXJgIG1lbWJlcnMuMGNsYWltX3BheW91dAACIFUBQSBib25kZWQgbWVtYmVyIGNhbiB1c2UgdGhpcyB0byBjbGFpbSB0aGVpciBwYXlvdXQgYmFzZWQgb24gdGhlIHJld2FyZHMgdGhhdCB0aGUgcG9vbGEBaGFzIGFjY3VtdWxhdGVkIHNpbmNlIHRoZWlyIGxhc3QgY2xhaW1lZCBwYXlvdXQgKE9SIHNpbmNlIGpvaW5pbmcgaWYgdGhpcyBpcyB0aGVpciBmaXJzdD0BdGltZSBjbGFpbWluZyByZXdhcmRzKS4gVGhlIHBheW91dCB3aWxsIGJlIHRyYW5zZmVycmVkIHRvIHRoZSBtZW1iZXIncyBhY2NvdW50LgBJAVRoZSBtZW1iZXIgd2lsbCBlYXJuIHJld2FyZHMgcHJvIHJhdGEgYmFzZWQgb24gdGhlIG1lbWJlcnMgc3Rha2UgdnMgdGhlIHN1bSBvZiB0aGXQbWVtYmVycyBpbiB0aGUgcG9vbHMgc3Rha2UuIFJld2FyZHMgZG8gbm90ICJleHBpcmUiLgBBAVNlZSBgY2xhaW1fcGF5b3V0X290aGVyYCB0byBjbGFpbSByZXdhcmRzIG9uIGJlaGFsZiBvZiBzb21lIGBvdGhlcmAgcG9vbCBtZW1iZXIuGHVuYm9uZAgBOG1lbWJlcl9hY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUB1bmJvbmRpbmdfcG9pbnRzUQEBMEJhbGFuY2VPZjxUPgADfEUBVW5ib25kIHVwIHRvIGB1bmJvbmRpbmdfcG9pbnRzYCBvZiB0aGUgYG1lbWJlcl9hY2NvdW50YCdzIGZ1bmRzIGZyb20gdGhlIHBvb2wuIEl0RQFpbXBsaWNpdGx5IGNvbGxlY3RzIHRoZSByZXdhcmRzIG9uZSBsYXN0IHRpbWUsIHNpbmNlIG5vdCBkb2luZyBzbyB3b3VsZCBtZWFuIHNvbWVscmV3YXJkcyB3b3VsZCBiZSBmb3JmZWl0ZWQuAE0BVW5kZXIgY2VydGFpbiBjb25kaXRpb25zLCB0aGlzIGNhbGwgY2FuIGJlIGRpc3BhdGNoZWQgcGVybWlzc2lvbmxlc3NseSAoaS5lLiBieSBhbnkkYWNjb3VudCkuAKwjIENvbmRpdGlvbnMgZm9yIGEgcGVybWlzc2lvbmxlc3MgZGlzcGF0Y2guAF0BKiBUaGUgcG9vbCBpcyBibG9ja2VkIGFuZCB0aGUgY2FsbGVyIGlzIGVpdGhlciB0aGUgcm9vdCBvciBib3VuY2VyLiBUaGlzIGlzIHJlZmVyZWVkIHRvMCAgYXMgYSBraWNrLvQqIFRoZSBwb29sIGlzIGRlc3Ryb3lpbmcgYW5kIHRoZSBtZW1iZXIgaXMgbm90IHRoZSBkZXBvc2l0b3IuVQEqIFRoZSBwb29sIGlzIGRlc3Ryb3lpbmcsIHRoZSBtZW1iZXIgaXMgdGhlIGRlcG9zaXRvciBhbmQgbm8gb3RoZXIgbWVtYmVycyBhcmUgaW4gdGhlHCAgcG9vbC4AEQEjIyBDb25kaXRpb25zIGZvciBwZXJtaXNzaW9uZWQgZGlzcGF0Y2ggKGkuZS4gdGhlIGNhbGxlciBpcyBhbHNvIHRoZUhgbWVtYmVyX2FjY291bnRgKToAiCogVGhlIGNhbGxlciBpcyBub3QgdGhlIGRlcG9zaXRvci5VASogVGhlIGNhbGxlciBpcyB0aGUgZGVwb3NpdG9yLCB0aGUgcG9vbCBpcyBkZXN0cm95aW5nIGFuZCBubyBvdGhlciBtZW1iZXJzIGFyZSBpbiB0aGUcICBwb29sLgAYIyBOb3RlAB0BSWYgdGhlcmUgYXJlIHRvbyBtYW55IHVubG9ja2luZyBjaHVua3MgdG8gdW5ib25kIHdpdGggdGhlIHBvb2wgYWNjb3VudCxRAVtgQ2FsbDo6cG9vbF93aXRoZHJhd191bmJvbmRlZGBdIGNhbiBiZSBjYWxsZWQgdG8gdHJ5IGFuZCBtaW5pbWl6ZSB1bmxvY2tpbmcgY2h1bmtzLlkBVGhlIFtgU3Rha2luZ0ludGVyZmFjZTo6dW5ib25kYF0gd2lsbCBpbXBsaWNpdGx5IGNhbGwgW2BDYWxsOjpwb29sX3dpdGhkcmF3X3VuYm9uZGVkYF1VAXRvIHRyeSB0byBmcmVlIGNodW5rcyBpZiBuZWNlc3NhcnkgKGllLiBpZiB1bmJvdW5kIHdhcyBjYWxsZWQgYW5kIG5vIHVubG9ja2luZyBjaHVua3NhAWFyZSBhdmFpbGFibGUpLiBIb3dldmVyLCBpdCBtYXkgbm90IGJlIHBvc3NpYmxlIHRvIHJlbGVhc2UgdGhlIGN1cnJlbnQgdW5sb2NraW5nIGNodW5rcyxdAWluIHdoaWNoIGNhc2UsIHRoZSByZXN1bHQgb2YgdGhpcyBjYWxsIHdpbGwgbGlrZWx5IGJlIHRoZSBgTm9Nb3JlQ2h1bmtzYCBlcnJvciBmcm9tIHRoZTxzdGFraW5nIHN5c3RlbS5YcG9vbF93aXRoZHJhd191bmJvbmRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAAUhudW1fc2xhc2hpbmdfc3BhbnM4AQx1MzIABBhVAUNhbGwgYHdpdGhkcmF3X3VuYm9uZGVkYCBmb3IgdGhlIHBvb2xzIGFjY291bnQuIFRoaXMgY2FsbCBjYW4gYmUgbWFkZSBieSBhbnkgYWNjb3VudC4AQQFUaGlzIGlzIHVzZWZ1bCBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgdW5sb2NraW5nIGNodW5rcyB0byBjYWxsIGB1bmJvbmRgLCBhbmQgc29tZWEBY2FuIGJlIGNsZWFyZWQgYnkgd2l0aGRyYXdpbmcuIEluIHRoZSBjYXNlIHRoZXJlIGFyZSB0b28gbWFueSB1bmxvY2tpbmcgY2h1bmtzLCB0aGUgdXNlclEBd291bGQgcHJvYmFibHkgc2VlIGFuIGVycm9yIGxpa2UgYE5vTW9yZUNodW5rc2AgZW1pdHRlZCBmcm9tIHRoZSBzdGFraW5nIHN5c3RlbSB3aGVuXHRoZXkgYXR0ZW1wdCB0byB1bmJvbmQuRHdpdGhkcmF3X3VuYm9uZGVkCAE4bWVtYmVyX2FjY291bnQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABSG51bV9zbGFzaGluZ19zcGFuczgBDHUzMgAFWFUBV2l0aGRyYXcgdW5ib25kZWQgZnVuZHMgZnJvbSBgbWVtYmVyX2FjY291bnRgLiBJZiBubyBib25kZWQgZnVuZHMgY2FuIGJlIHVuYm9uZGVkLCBhbkhlcnJvciBpcyByZXR1cm5lZC4ATQFVbmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSRhY2NvdW50KS4AqCMgQ29uZGl0aW9ucyBmb3IgYSBwZXJtaXNzaW9ubGVzcyBkaXNwYXRjaAAJASogVGhlIHBvb2wgaXMgaW4gZGVzdHJveSBtb2RlIGFuZCB0aGUgdGFyZ2V0IGlzIG5vdCB0aGUgZGVwb3NpdG9yLjEBKiBUaGUgdGFyZ2V0IGlzIHRoZSBkZXBvc2l0b3IgYW5kIHRoZXkgYXJlIHRoZSBvbmx5IG1lbWJlciBpbiB0aGUgc3ViIHBvb2xzLg0BKiBUaGUgcG9vbCBpcyBibG9ja2VkIGFuZCB0aGUgY2FsbGVyIGlzIGVpdGhlciB0aGUgcm9vdCBvciBib3VuY2VyLgCYIyBDb25kaXRpb25zIGZvciBwZXJtaXNzaW9uZWQgZGlzcGF0Y2gA6CogVGhlIGNhbGxlciBpcyB0aGUgdGFyZ2V0IGFuZCB0aGV5IGFyZSBub3QgdGhlIGRlcG9zaXRvci4AGCMgTm90ZQD0LSBJZiB0aGUgdGFyZ2V0IGlzIHRoZSBkZXBvc2l0b3IsIHRoZSBwb29sIHdpbGwgYmUgZGVzdHJveWVkLmEBLSBJZiB0aGUgcG9vbCBoYXMgYW55IHBlbmRpbmcgc2xhc2gsIHdlIGFsc28gdHJ5IHRvIHNsYXNoIHRoZSBtZW1iZXIgYmVmb3JlIGxldHRpbmcgdGhlbV0Bd2l0aGRyYXcuIFRoaXMgY2FsY3VsYXRpb24gYWRkcyBzb21lIHdlaWdodCBvdmVyaGVhZCBhbmQgaXMgb25seSBkZWZlbnNpdmUuIEluIHJlYWxpdHksVQFwb29sIHNsYXNoZXMgbXVzdCBoYXZlIGJlZW4gYWxyZWFkeSBhcHBsaWVkIHZpYSBwZXJtaXNzaW9ubGVzcyBbYENhbGw6OmFwcGx5X3NsYXNoYF0uGGNyZWF0ZRABGGFtb3VudFEBATBCYWxhbmNlT2Y8VD4AARByb290AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRub21pbmF0b3IAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGJvdW5jZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAGRHRDcmVhdGUgYSBuZXcgZGVsZWdhdGlvbiBwb29sLgAsIyBBcmd1bWVudHMAVQEqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiBmdW5kcyB0byBkZWxlZ2F0ZSB0byB0aGUgcG9vbC4gVGhpcyBhbHNvIGFjdHMgb2YgYSBzb3J0IG9mTQEgIGRlcG9zaXQgc2luY2UgdGhlIHBvb2xzIGNyZWF0b3IgY2Fubm90IGZ1bGx5IHVuYm9uZCBmdW5kcyB1bnRpbCB0aGUgcG9vbCBpcyBiZWluZzAgIGRlc3Ryb3llZC5RASogYGluZGV4YCAtIEEgZGlzYW1iaWd1YXRpb24gaW5kZXggZm9yIGNyZWF0aW5nIHRoZSBhY2NvdW50LiBMaWtlbHkgb25seSB1c2VmdWwgd2hlbsAgIGNyZWF0aW5nIG11bHRpcGxlIHBvb2xzIGluIHRoZSBzYW1lIGV4dHJpbnNpYy7UKiBgcm9vdGAgLSBUaGUgYWNjb3VudCB0byBzZXQgYXMgW2BQb29sUm9sZXM6OnJvb3RgXS4NASogYG5vbWluYXRvcmAgLSBUaGUgYWNjb3VudCB0byBzZXQgYXMgdGhlIFtgUG9vbFJvbGVzOjpub21pbmF0b3JgXS78KiBgYm91bmNlcmAgLSBUaGUgYWNjb3VudCB0byBzZXQgYXMgdGhlIFtgUG9vbFJvbGVzOjpib3VuY2VyYF0uABgjIE5vdGUAYQFJbiBhZGRpdGlvbiB0byBgYW1vdW50YCwgdGhlIGNhbGxlciB3aWxsIHRyYW5zZmVyIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0OyBzbyB0aGUgY2FsbGVyDQFuZWVkcyBhdCBoYXZlIGF0IGxlYXN0IGBhbW91bnQgKyBleGlzdGVudGlhbF9kZXBvc2l0YCB0cmFuc2ZlcmFibGUuTGNyZWF0ZV93aXRoX3Bvb2xfaWQUARhhbW91bnRRAQEwQmFsYW5jZU9mPFQ+AAEQcm9vdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkbm9taW5hdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxib3VuY2VyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxwb29sX2lkOAEYUG9vbElkAAcY7ENyZWF0ZSBhIG5ldyBkZWxlZ2F0aW9uIHBvb2wgd2l0aCBhIHByZXZpb3VzbHkgdXNlZCBwb29sIGlkACwjIEFyZ3VtZW50cwCYc2FtZSBhcyBgY3JlYXRlYCB3aXRoIHRoZSBpbmNsdXNpb24gb2Z4KiBgcG9vbF9pZGAgLSBgQSB2YWxpZCBQb29sSWQuIG5vbWluYXRlCAEccG9vbF9pZDgBGFBvb2xJZAABKHZhbGlkYXRvcnNdAQFEVmVjPFQ6OkFjY291bnRJZD4ACDB8Tm9taW5hdGUgb24gYmVoYWxmIG9mIHRoZSBwb29sLgBFAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgc2lnbmVkIGJ5IHRoZSBwb29sIG5vbWluYXRvciBvciB0aGUgcG9vbChyb290IHJvbGUuAEUBVGhpcyBkaXJlY3RseSBmb3J3YXJkcyB0aGUgY2FsbCB0byBhbiBpbXBsZW1lbnRhdGlvbiBvZiBgU3Rha2luZ0ludGVyZmFjZWAgKGUuZy4sRQFgcGFsbGV0LXN0YWtpbmdgKSB0aHJvdWdoIFtgQ29uZmlnOjpTdGFrZUFkYXB0ZXJgXSwgb24gYmVoYWxmIG9mIHRoZSBib25kZWQgcG9vbC4AGCMgTm90ZQBZAUluIGFkZGl0aW9uIHRvIGEgYHJvb3RgIG9yIGBub21pbmF0b3JgIHJvbGUgb2YgYG9yaWdpbmAsIHRoZSBwb29sJ3MgZGVwb3NpdG9yIG5lZWRzIHRvDQFoYXZlIGF0IGxlYXN0IGBkZXBvc2l0b3JfbWluX2JvbmRgIGluIHRoZSBwb29sIHRvIHN0YXJ0IG5vbWluYXRpbmcuJHNldF9zdGF0ZQgBHHBvb2xfaWQ4ARhQb29sSWQAARRzdGF0ZU0FASRQb29sU3RhdGUACSh0U2V0IGEgbmV3IHN0YXRlIGZvciB0aGUgcG9vbC4AVQFJZiBhIHBvb2wgaXMgYWxyZWFkeSBpbiB0aGUgYERlc3Ryb3lpbmdgIHN0YXRlLCB0aGVuIHVuZGVyIG5vIGNvbmRpdGlvbiBjYW4gaXRzIHN0YXRlNGNoYW5nZSBhZ2Fpbi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgZWl0aGVyOgDcMS4gc2lnbmVkIGJ5IHRoZSBib3VuY2VyLCBvciB0aGUgcm9vdCByb2xlIG9mIHRoZSBwb29sLF0BMi4gaWYgdGhlIHBvb2wgY29uZGl0aW9ucyB0byBiZSBvcGVuIGFyZSBOT1QgbWV0IChhcyBkZXNjcmliZWQgYnkgYG9rX3RvX2JlX29wZW5gKSwgYW5kOQEgICB0aGVuIHRoZSBzdGF0ZSBvZiB0aGUgcG9vbCBjYW4gYmUgcGVybWlzc2lvbmxlc3NseSBjaGFuZ2VkIHRvIGBEZXN0cm95aW5nYC4wc2V0X21ldGFkYXRhCAEccG9vbF9pZDgBGFBvb2xJZAABIG1ldGFkYXRhGAEcVmVjPHU4PgAKEIBTZXQgYSBuZXcgbWV0YWRhdGEgZm9yIHRoZSBwb29sLgBdAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgc2lnbmVkIGJ5IHRoZSBib3VuY2VyLCBvciB0aGUgcm9vdCByb2xlIG9mIHRoZRRwb29sLixzZXRfY29uZmlncxgBNG1pbl9qb2luX2JvbmRRBQFYQ29uZmlnT3A8QmFsYW5jZU9mPFQ+PgABPG1pbl9jcmVhdGVfYm9uZFEFAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAEkbWF4X3Bvb2xzVQUBNENvbmZpZ09wPHUzMj4AASxtYXhfbWVtYmVyc1UFATRDb25maWdPcDx1MzI+AAFQbWF4X21lbWJlcnNfcGVyX3Bvb2xVBQE0Q29uZmlnT3A8dTMyPgABVGdsb2JhbF9tYXhfY29tbWlzc2lvblkFAURDb25maWdPcDxQZXJiaWxsPgALLEEBVXBkYXRlIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgbm9taW5hdGlvbiBwb29scy4gVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmVgW2BDb25maWc6OkFkbWluT3JpZ2luYF0uACwjIEFyZ3VtZW50cwCgKiBgbWluX2pvaW5fYm9uZGAgLSBTZXQgW2BNaW5Kb2luQm9uZGBdLrAqIGBtaW5fY3JlYXRlX2JvbmRgIC0gU2V0IFtgTWluQ3JlYXRlQm9uZGBdLoQqIGBtYXhfcG9vbHNgIC0gU2V0IFtgTWF4UG9vbHNgXS6kKiBgbWF4X21lbWJlcnNgIC0gU2V0IFtgTWF4UG9vbE1lbWJlcnNgXS7kKiBgbWF4X21lbWJlcnNfcGVyX3Bvb2xgIC0gU2V0IFtgTWF4UG9vbE1lbWJlcnNQZXJQb29sYF0u4CogYGdsb2JhbF9tYXhfY29tbWlzc2lvbmAgLSBTZXQgW2BHbG9iYWxNYXhDb21taXNzaW9uYF0uMHVwZGF0ZV9yb2xlcxABHHBvb2xfaWQ4ARhQb29sSWQAASBuZXdfcm9vdF0FAVhDb25maWdPcDxUOjpBY2NvdW50SWQ+AAE0bmV3X25vbWluYXRvcl0FAVhDb25maWdPcDxUOjpBY2NvdW50SWQ+AAEsbmV3X2JvdW5jZXJdBQFYQ29uZmlnT3A8VDo6QWNjb3VudElkPgAMHHRVcGRhdGUgdGhlIHJvbGVzIG9mIHRoZSBwb29sLgA9AVRoZSByb290IGlzIHRoZSBvbmx5IGVudGl0eSB0aGF0IGNhbiBjaGFuZ2UgYW55IG9mIHRoZSByb2xlcywgaW5jbHVkaW5nIGl0c2VsZiy4ZXhjbHVkaW5nIHRoZSBkZXBvc2l0b3IsIHdobyBjYW4gbmV2ZXIgY2hhbmdlLgBRAUl0IGVtaXRzIGFuIGV2ZW50LCBub3RpZnlpbmcgVUlzIG9mIHRoZSByb2xlIGNoYW5nZS4gVGhpcyBldmVudCBpcyBxdWl0ZSByZWxldmFudCB0bx0BbW9zdCBwb29sIG1lbWJlcnMgYW5kIHRoZXkgc2hvdWxkIGJlIGluZm9ybWVkIG9mIGNoYW5nZXMgdG8gcG9vbCByb2xlcy4UY2hpbGwEARxwb29sX2lkOAEYUG9vbElkAA1EcENoaWxsIG9uIGJlaGFsZiBvZiB0aGUgcG9vbC4AQQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBjYW4gYmUgc2lnbmVkIGJ5IHRoZSBwb29sIG5vbWluYXRvciBvciB0aGUgcG9vbKByb290IHJvbGUsIHNhbWUgYXMgW2BQYWxsZXQ6Om5vbWluYXRlYF0uAEUBVGhpcyBkaXJlY3RseSBmb3J3YXJkcyB0aGUgY2FsbCB0byBhbiBpbXBsZW1lbnRhdGlvbiBvZiBgU3Rha2luZ0ludGVyZmFjZWAgKGUuZy4sRQFgcGFsbGV0LXN0YWtpbmdgKSB0aHJvdWdoIFtgQ29uZmlnOjpTdGFrZUFkYXB0ZXJgXSwgb24gYmVoYWxmIG9mIHRoZSBib25kZWQgcG9vbC4ATQFVbmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSRhY2NvdW50KS4ArCMgQ29uZGl0aW9ucyBmb3IgYSBwZXJtaXNzaW9ubGVzcyBkaXNwYXRjaDpVASogV2hlbiBwb29sIGRlcG9zaXRvciBoYXMgbGVzcyB0aGFuIGBNaW5Ob21pbmF0b3JCb25kYCBzdGFrZWQsIG90aGVyd2lzZSBwb29sIG1lbWJlcnNcICBhcmUgdW5hYmxlIHRvIHVuYm9uZC4AnCMgQ29uZGl0aW9ucyBmb3IgcGVybWlzc2lvbmVkIGRpc3BhdGNoOrQqIFRoZSBjYWxsZXIgaXMgdGhlIHBvb2wncyBub21pbmF0b3Igb3Igcm9vdC5AYm9uZF9leHRyYV9vdGhlcggBGG1lbWJlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUZXh0cmFJBQFcQm9uZEV4dHJhPEJhbGFuY2VPZjxUPj4ADiRVAWBvcmlnaW5gIGJvbmRzIGZ1bmRzIGZyb20gYGV4dHJhYCBmb3Igc29tZSBwb29sIG1lbWJlciBgbWVtYmVyYCBpbnRvIHRoZWlyIHJlc3BlY3RpdmUYcG9vbHMuAEkBYG9yaWdpbmAgY2FuIGJvbmQgZXh0cmEgZnVuZHMgZnJvbSBmcmVlIGJhbGFuY2Ugb3IgcGVuZGluZyByZXdhcmRzIHdoZW4gYG9yaWdpbiA9PRxvdGhlcmAuAEUBSW4gdGhlIGNhc2Ugb2YgYG9yaWdpbiAhPSBvdGhlcmAsIGBvcmlnaW5gIGNhbiBvbmx5IGJvbmQgZXh0cmEgcGVuZGluZyByZXdhcmRzIG9mFQFgb3RoZXJgIG1lbWJlcnMgYXNzdW1pbmcgc2V0X2NsYWltX3Blcm1pc3Npb24gZm9yIHRoZSBnaXZlbiBtZW1iZXIgaXPAYFBlcm1pc3Npb25sZXNzQ29tcG91bmRgIG9yIGBQZXJtaXNzaW9ubGVzc0FsbGAuUHNldF9jbGFpbV9wZXJtaXNzaW9uBAEocGVybWlzc2lvbmEFATxDbGFpbVBlcm1pc3Npb24ADxxJAUFsbG93cyBhIHBvb2wgbWVtYmVyIHRvIHNldCBhIGNsYWltIHBlcm1pc3Npb24gdG8gYWxsb3cgb3IgZGlzYWxsb3cgcGVybWlzc2lvbmxlc3NgYm9uZGluZyBhbmQgd2l0aGRyYXdpbmcuACwjIEFyZ3VtZW50cwB4KiBgb3JpZ2luYCAtIE1lbWJlciBvZiBhIHBvb2wuuCogYHBlcm1pc3Npb25gIC0gVGhlIHBlcm1pc3Npb24gdG8gYmUgYXBwbGllZC5IY2xhaW1fcGF5b3V0X290aGVyBAEUb3RoZXIEATBUOjpBY2NvdW50SWQAEBABAWBvcmlnaW5gIGNhbiBjbGFpbSBwYXlvdXRzIG9uIHNvbWUgcG9vbCBtZW1iZXIgYG90aGVyYCdzIGJlaGFsZi4AVQFQb29sIG1lbWJlciBgb3RoZXJgIG11c3QgaGF2ZSBhIGBQZXJtaXNzaW9ubGVzc1dpdGhkcmF3YCBvciBgUGVybWlzc2lvbmxlc3NBbGxgIGNsYWltqHBlcm1pc3Npb24gZm9yIHRoaXMgY2FsbCB0byBiZSBzdWNjZXNzZnVsLjhzZXRfY29tbWlzc2lvbggBHHBvb2xfaWQ4ARhQb29sSWQAAThuZXdfY29tbWlzc2lvbmUFAXxPcHRpb248KFBlcmJpbGwsIFQ6OkFjY291bnRJZCk+ABEUdFNldCB0aGUgY29tbWlzc2lvbiBvZiBhIHBvb2wuVQFCb3RoIGEgY29tbWlzc2lvbiBwZXJjZW50YWdlIGFuZCBhIGNvbW1pc3Npb24gcGF5ZWUgbXVzdCBiZSBwcm92aWRlZCBpbiB0aGUgYGN1cnJlbnRgXQF0dXBsZS4gV2hlcmUgYSBgY3VycmVudGAgb2YgYE5vbmVgIGlzIHByb3ZpZGVkLCBhbnkgY3VycmVudCBjb21taXNzaW9uIHdpbGwgYmUgcmVtb3ZlZC4ATQEtIElmIGEgYE5vbmVgIGlzIHN1cHBsaWVkIHRvIGBuZXdfY29tbWlzc2lvbmAsIGV4aXN0aW5nIGNvbW1pc3Npb24gd2lsbCBiZSByZW1vdmVkLkhzZXRfY29tbWlzc2lvbl9tYXgIARxwb29sX2lkOAEYUG9vbElkAAE4bWF4X2NvbW1pc3Npb24dBQEcUGVyYmlsbAASFJRTZXQgdGhlIG1heGltdW0gY29tbWlzc2lvbiBvZiBhIHBvb2wuADkBLSBJbml0aWFsIG1heCBjYW4gYmUgc2V0IHRvIGFueSBgUGVyYmlsbGAsIGFuZCBvbmx5IHNtYWxsZXIgdmFsdWVzIHRoZXJlYWZ0ZXIuNQEtIEN1cnJlbnQgY29tbWlzc2lvbiB3aWxsIGJlIGxvd2VyZWQgaW4gdGhlIGV2ZW50IGl0IGlzIGhpZ2hlciB0aGFuIGEgbmV3IG1heDQgIGNvbW1pc3Npb24uaHNldF9jb21taXNzaW9uX2NoYW5nZV9yYXRlCAEccG9vbF9pZDgBGFBvb2xJZAABLGNoYW5nZV9yYXRlbQUBnENvbW1pc3Npb25DaGFuZ2VSYXRlPEJsb2NrTnVtYmVyRm9yPFQ+PgATEKhTZXQgdGhlIGNvbW1pc3Npb24gY2hhbmdlIHJhdGUgZm9yIGEgcG9vbC4APQFJbml0aWFsIGNoYW5nZSByYXRlIGlzIG5vdCBib3VuZGVkLCB3aGVyZWFzIHN1YnNlcXVlbnQgdXBkYXRlcyBjYW4gb25seSBiZSBtb3JldHJlc3RyaWN0aXZlIHRoYW4gdGhlIGN1cnJlbnQuQGNsYWltX2NvbW1pc3Npb24EARxwb29sX2lkOAEYUG9vbElkABRAZENsYWltIHBlbmRpbmcgY29tbWlzc2lvbi4APQFUaGUgYHJvb3RgIHJvbGUgb2YgdGhlIHBvb2wgaXMgX2Fsd2F5c18gYWxsb3dlZCB0byBjbGFpbSB0aGUgcG9vbCdzIGNvbW1pc3Npb24uAFUBSWYgdGhlIHBvb2wgaGFzIHNldCBgQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvbjo6UGVybWlzc2lvbmxlc3NgLCB0aGVuIGFueSBhY2NvdW50IGNhbth0cmlnZ2VyIHRoZSBwcm9jZXNzIG9mIGNsYWltaW5nIHRoZSBwb29sJ3MgY29tbWlzc2lvbi4AQQFJZiB0aGUgcG9vbCBoYXMgc2V0IGl0cyBgQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvbmAgdG8gYEFjY291bnQoYWNjKWAsIHRoZW4gb25seSBhY2NvdW50czAqIGBhY2NgLCBhbmRkKiB0aGUgcG9vbCdzIHJvb3QgYWNjb3VudAC4bWF5IGNhbGwgdGhpcyBleHRyaW5zaWMgb24gYmVoYWxmIG9mIHRoZSBwb29sLgAtAVBlbmRpbmcgY29tbWlzc2lvbnMgYXJlIHBhaWQgb3V0IGFuZCBhZGRlZCB0byB0aGUgdG90YWwgY2xhaW1lZCBjb21taXNzaW9uLrhUaGUgdG90YWwgcGVuZGluZyBjb21taXNzaW9uIGlzIHJlc2V0IHRvIHplcm8uTGFkanVzdF9wb29sX2RlcG9zaXQEARxwb29sX2lkOAEYUG9vbElkABUc7FRvcCB1cCB0aGUgZGVmaWNpdCBvciB3aXRoZHJhdyB0aGUgZXhjZXNzIEVEIGZyb20gdGhlIHBvb2wuAFEBV2hlbiBhIHBvb2wgaXMgY3JlYXRlZCwgdGhlIHBvb2wgZGVwb3NpdG9yIHRyYW5zZmVycyBFRCB0byB0aGUgcmV3YXJkIGFjY291bnQgb2YgdGhlVQFwb29sLiBFRCBpcyBzdWJqZWN0IHRvIGNoYW5nZSBhbmQgb3ZlciB0aW1lLCB0aGUgZGVwb3NpdCBpbiB0aGUgcmV3YXJkIGFjY291bnQgbWF5IGJlUQFpbnN1ZmZpY2llbnQgdG8gY292ZXIgdGhlIEVEIGRlZmljaXQgb2YgdGhlIHBvb2wgb3IgdmljZS12ZXJzYSB3aGVyZSB0aGVyZSBpcyBleGNlc3MxAWRlcG9zaXQgdG8gdGhlIHBvb2wuIFRoaXMgY2FsbCBhbGxvd3MgYW55b25lIHRvIGFkanVzdCB0aGUgRUQgZGVwb3NpdCBvZiB0aGX0cG9vbCBieSBlaXRoZXIgdG9wcGluZyB1cCB0aGUgZGVmaWNpdCBvciBjbGFpbWluZyB0aGUgZXhjZXNzLnxzZXRfY29tbWlzc2lvbl9jbGFpbV9wZXJtaXNzaW9uCAEccG9vbF9pZDgBGFBvb2xJZAABKHBlcm1pc3Npb25xBQG8T3B0aW9uPENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb248VDo6QWNjb3VudElkPj4AFhDMU2V0IG9yIHJlbW92ZSBhIHBvb2wncyBjb21taXNzaW9uIGNsYWltIHBlcm1pc3Npb24uAGEBRGV0ZXJtaW5lcyB3aG8gY2FuIGNsYWltIHRoZSBwb29sJ3MgcGVuZGluZyBjb21taXNzaW9uLiBPbmx5IHRoZSBgUm9vdGAgcm9sZSBvZiB0aGUgcG9vbMhpcyBhYmxlIHRvIGNvbmZpZ3VyZSBjb21taXNzaW9uIGNsYWltIHBlcm1pc3Npb25zLixhcHBseV9zbGFzaAQBOG1lbWJlcl9hY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFySIQXBwbHkgYSBwZW5kaW5nIHNsYXNoIG9uIGEgbWVtYmVyLgAlAUZhaWxzIHVubGVzcyBbYGNyYXRlOjpwYWxsZXQ6OkNvbmZpZzo6U3Rha2VBZGFwdGVyYF0gaXMgb2Ygc3RyYXRlZ3kgdHlwZTqkW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXS4AXQFUaGUgcGVuZGluZyBzbGFzaCBhbW91bnQgb2YgdGhlIG1lbWJlciBtdXN0IGJlIGVxdWFsIG9yIG1vcmUgdGhhbiBgRXhpc3RlbnRpYWxEZXBvc2l0YC5RAVRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSBhY2NvdW50KS4gSWYgdGhlIGV4ZWN1dGlvbkkBaXMgc3VjY2Vzc2Z1bCwgZmVlIGlzIHJlZnVuZGVkIGFuZCBjYWxsZXIgbWF5IGJlIHJld2FyZGVkIHdpdGggYSBwYXJ0IG9mIHRoZSBzbGFzaA0BYmFzZWQgb24gdGhlIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBjb25maWd1cmF0aW9uLkhtaWdyYXRlX2RlbGVnYXRpb24EAThtZW1iZXJfYWNjb3VudAABUEFjY291bnRJZExvb2t1cE9mPFQ+ABgkHQFNaWdyYXRlcyBkZWxlZ2F0ZWQgZnVuZHMgZnJvbSB0aGUgcG9vbCBhY2NvdW50IHRvIHRoZSBgbWVtYmVyX2FjY291bnRgLgAlAUZhaWxzIHVubGVzcyBbYGNyYXRlOjpwYWxsZXQ6OkNvbmZpZzo6U3Rha2VBZGFwdGVyYF0gaXMgb2Ygc3RyYXRlZ3kgdHlwZTqkW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXS4AKQFUaGlzIGlzIGEgcGVybWlzc2lvbi1sZXNzIGNhbGwgYW5kIHJlZnVuZHMgYW55IGZlZSBpZiBjbGFpbSBpcyBzdWNjZXNzZnVsLgBdAUlmIHRoZSBwb29sIGhhcyBtaWdyYXRlZCB0byBkZWxlZ2F0aW9uIGJhc2VkIHN0YWtpbmcsIHRoZSBzdGFrZWQgdG9rZW5zIG9mIHBvb2wgbWVtYmVycykBY2FuIGJlIG1vdmVkIGFuZCBoZWxkIGluIHRoZWlyIG93biBhY2NvdW50LiBTZWUgW2BhZGFwdGVyOjpEZWxlZ2F0ZVN0YWtlYF14bWlncmF0ZV9wb29sX3RvX2RlbGVnYXRlX3N0YWtlBAEccG9vbF9pZDgBGFBvb2xJZAAZJPRNaWdyYXRlIHBvb2wgZnJvbSBbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpUcmFuc2ZlcmBdIHRvpFtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OkRlbGVnYXRlYF0uACUBRmFpbHMgdW5sZXNzIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBpcyBvZiBzdHJhdGVneSB0eXBlOqRbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpEZWxlZ2F0ZWBdLgBBAVRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5LCBhbmQgcmVmdW5kcyBhbnkgZmVlIGlmIHN1Y2Nlc3NmdWwuAEkBSWYgdGhlIHBvb2wgaGFzIGFscmVhZHkgbWlncmF0ZWQgdG8gZGVsZWdhdGlvbiBiYXNlZCBzdGFraW5nLCB0aGlzIGNhbGwgd2lsbCBmYWlsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5JBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMkQm9uZEV4dHJhBBxCYWxhbmNlAVUBAQgsRnJlZUJhbGFuY2UEAFUBARxCYWxhbmNlAAAAHFJld2FyZHMAAQAATQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzJFBvb2xTdGF0ZQABDBBPcGVuAAAAHEJsb2NrZWQAAQAoRGVzdHJveWluZwACAABRBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMgQ29uZmlnT3AEBFQBVQEBDBBOb29wAAAADFNldAQAVQEBBFQAAQAYUmVtb3ZlAAIAAFUFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBDb25maWdPcAQEVAE4AQwQTm9vcAAAAAxTZXQEADgBBFQAAQAYUmVtb3ZlAAIAAFkFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBDb25maWdPcAQEVAEdBQEMEE5vb3AAAAAMU2V0BAAdBQEEVAABABhSZW1vdmUAAgAAXQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIENvbmZpZ09wBARUAQQBDBBOb29wAAAADFNldAQABAEEVAABABhSZW1vdmUAAgAAYQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzPENsYWltUGVybWlzc2lvbgABEDBQZXJtaXNzaW9uZWQAAABYUGVybWlzc2lvbmxlc3NDb21wb3VuZAABAFhQZXJtaXNzaW9ubGVzc1dpdGhkcmF3AAIARFBlcm1pc3Npb25sZXNzQWxsAAMAAGUFBBhPcHRpb24EBFQBaQUBCBBOb25lAAAAEFNvbWUEAGkFAAABAABpBQAABAgdBQQAbQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzUENvbW1pc3Npb25DaGFuZ2VSYXRlBCxCbG9ja051bWJlcgE4AAgBMG1heF9pbmNyZWFzZR0FARxQZXJiaWxsAAEkbWluX2RlbGF5OAEsQmxvY2tOdW1iZXIAAHEFBBhPcHRpb24EBFQBdQUBCBBOb25lAAAAEFNvbWUEAHUFAAABAAB1BQhccGFsbGV0X25vbWluYXRpb25fcG9vbHNkQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvbgQkQWNjb3VudElkAQQBCDhQZXJtaXNzaW9ubGVzcwAAABxBY2NvdW50BAAEASRBY2NvdW50SWQAAQAAeQUMQHBhbGxldF9iYWdzX2xpc3QYcGFsbGV0EENhbGwIBFQABEkAAQwUcmViYWcEAShkaXNsb2NhdGVkAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAChZAURlY2xhcmUgdGhhdCBzb21lIGBkaXNsb2NhdGVkYCBhY2NvdW50IGhhcywgdGhyb3VnaCByZXdhcmRzIG9yIHBlbmFsdGllcywgc3VmZmljaWVudGx5UQFjaGFuZ2VkIGl0cyBzY29yZSB0aGF0IGl0IHNob3VsZCBwcm9wZXJseSBmYWxsIGludG8gYSBkaWZmZXJlbnQgYmFnIHRoYW4gaXRzIGN1cnJlbnQQb25lLgAdAUFueW9uZSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uIGFib3V0IGFueSBwb3RlbnRpYWxseSBkaXNsb2NhdGVkIGFjY291bnQuAEkBV2lsbCBhbHdheXMgdXBkYXRlIHRoZSBzdG9yZWQgc2NvcmUgb2YgYGRpc2xvY2F0ZWRgIHRvIHRoZSBjb3JyZWN0IHNjb3JlLCBiYXNlZCBvbkBgU2NvcmVQcm92aWRlcmAuANRJZiBgZGlzbG9jYXRlZGAgZG9lcyBub3QgZXhpc3RzLCBpdCByZXR1cm5zIGFuIGVycm9yLjxwdXRfaW5fZnJvbnRfb2YEARxsaWdodGVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASjQTW92ZSB0aGUgY2FsbGVyJ3MgSWQgZGlyZWN0bHkgaW4gZnJvbnQgb2YgYGxpZ2h0ZXJgLgBZAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIElkIG9mNQF0aGUgYWNjb3VudCBnb2luZyBpbiBmcm9udCBvZiBgbGlnaHRlcmAuIEZlZSBpcyBwYXllZCBieSB0aGUgb3JpZ2luIHVuZGVyIGFsbDhjaXJjdW1zdGFuY2VzLgA4T25seSB3b3JrcyBpZjoAlC0gYm90aCBub2RlcyBhcmUgd2l0aGluIHRoZSBzYW1lIGJhZyzQLSBhbmQgYG9yaWdpbmAgaGFzIGEgZ3JlYXRlciBgU2NvcmVgIHRoYW4gYGxpZ2h0ZXJgLlRwdXRfaW5fZnJvbnRfb2Zfb3RoZXIIARxoZWF2aWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxsaWdodGVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAgwRAVNhbWUgYXMgW2BQYWxsZXQ6OnB1dF9pbl9mcm9udF9vZmBdLCBidXQgaXQgY2FuIGJlIGNhbGxlZCBieSBhbnlvbmUuAMhGZWUgaXMgcGFpZCBieSB0aGUgb3JpZ2luIHVuZGVyIGFsbCBjaXJjdW1zdGFuY2VzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy59BQx4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50GHBhbGxldBBDYWxsBARUAAEQUHJlbGF5X3Nlc3Npb25fcmVwb3J0BAEYcmVwb3J0gQUBbFNlc3Npb25SZXBvcnQ8VDo6QWNjb3VudElkPgAABAUBQ2FsbGVkIHRvIGluZGljYXRlIHRoZSBzdGFydCBvZiBhIG5ldyBzZXNzaW9uIG9uIHRoZSByZWxheSBjaGFpbi5ccmVsYXlfbmV3X29mZmVuY2VfcGFnZWQEASBvZmZlbmNlc5UFAahWZWM8KFNlc3Npb25JbmRleCwgT2ZmZW5jZTxUOjpBY2NvdW50SWQ+KT4AAQAgc2V0X2tleXMMARBrZXlzGAEcVmVjPHU4PgABFHByb29mGAEcVmVjPHU4PgABlG1heF9kZWxpdmVyeV9hbmRfcmVtb3RlX2V4ZWN1dGlvbl9mZWVJBAFQT3B0aW9uPEJhbGFuY2VPZjxUPj4ACnxVAVNldCBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yLiBLZXlzIGFyZSB2YWxpZGF0ZWQgb24gQXNzZXRIdWIgYW5kIGZvcndhcmRlZCB0byBSQy4AVQFPbiB0aGUgZmlyc3QgY2FsbCwgYSBkZXBvc2l0IG9mIGBLZXlEZXBvc2l0YCBpcyBoZWxkIGZyb20gdGhlIHN0YXNoLiBTdWJzZXF1ZW50IGNhbGxz9GRvIG5vdCBjaGFyZ2UgYWdhaW4uIFRoZSBkZXBvc2l0IGlzIHJlbGVhc2VkIG9uIGBwdXJnZV9rZXlzYC4AbCoqVmFsaWRhdGlvbiBvbiBBc3NldEh1YjoqKk0BLSBLZXlzIGFyZSBkZWNvZGVkIGFzIGBUOjpSZWxheUNoYWluU2Vzc2lvbktleXNgIHRvIGVuc3VyZSB0aGV5IG1hdGNoIFJDJ3MgZXhwZWN0ZWQkICBmb3JtYXQuMQEtIE93bmVyc2hpcCBwcm9vZiBpcyB2YWxpZGF0ZWQgdXNpbmcgYE9wYXF1ZUtleXM6Om93bmVyc2hpcF9wcm9vZl9pc192YWxpZGAuAEEBSWYgdmFsaWRhdGlvbiBwYXNzZXMsIG9ubHkgdGhlIHZhbGlkYXRlZCBrZXlzIGFyZSBzZW50IHRvIFJDICh3aXRoIGVtcHR5IHByb29mKSyAc2luY2UgUkMgdHJ1c3RzIEFIJ3MgdmFsaWRhdGlvbi4AJCoqRmVlczoqKlUBVGhlIGFjdHVhbCBjb3N0IG9mIHRoaXMgY2FsbCBpcyBoaWdoZXIgdGhhbiB3aGF0IHRoZSB3ZWlnaHQtYmFzZWQgZmVlIGVzdGltYXRlIHNob3dzLlEBSW4gYWRkaXRpb24gdG8gdGhlIGxvY2FsIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUsIHRoZSBzdGFzaCBhY2NvdW50IGlzIGNoYXJnZWQgYW4gWENNSQFmZWUgKGRlbGl2ZXJ5ICsgUkMgZXhlY3V0aW9uIGNvc3QpIHZpYSBgWGNtRXhlY3V0b3I6OmNoYXJnZV9mZWVzYC4gVGhlIHJlbGF5IGNoYWluPQF1c2VzIGBVbnBhaWRFeGVjdXRpb25gLCBzbyB0aGUgZnVsbCByZW1vdGUgY29zdCBpcyBjaGFyZ2VkIHVwZnJvbnQgb24gQXNzZXRIdWIuAC0BV2hlbiBjYWxsZWQgdmlhIGEgc3Rha2luZyBwcm94eSwgdGhlIHByb3h5IHBheXMgdGhlIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUs2HdoaWxlIHRoZSBzdGFzaCAoZGVsZWdhdGluZyBhY2NvdW50KSBwYXlzIHRoZSBYQ00gZmVlLgBIKipNYXggRmVlIExpbWl0OioqRQFVc2VycyBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGBtYXhfZGVsaXZlcnlfYW5kX3JlbW90ZV9leGVjdXRpb25fZmVlYCB0byBsaW1pdCB0aGVdAWRlbGl2ZXJ5ICsgUkMgZXhlY3V0aW9uIGZlZS4gVGhpcyBkb2VzIG5vdCBpbmNsdWRlIHRoZSBsb2NhbCB0cmFuc2FjdGlvbiB3ZWlnaHQgZmVlLiBJZl0BdGhlIGZlZSBleGNlZWRzIHRoaXMgbGltaXQsIHRoZSBvcGVyYXRpb24gZmFpbHMgd2l0aCBgRmVlc0V4Y2VlZGVkTWF4YC4gUGFzcyBgTm9uZWAgZm9yTHVubGltaXRlZCAobm8gY2FwKS4AWQFOT1RFOiB1bmxpa2UgdGhlIGN1cnJlbnQgZmxvdyBmb3IgbmV3IHZhbGlkYXRvcnMgb24gUkMgKGJvbmQgLT4gc2V0X2tleXMgLT4gdmFsaWRhdGUpLFUBdXNlcnMgb24gQXNzZXQgSHViIE1VU1QgY2FsbCBib25kIGFuZCB2YWxpZGF0ZSBCRUZPUkUgY2FsbGluZyBzZXRfa2V5cy4gQXR0ZW1wdGluZyB0byUBc2V0IGtleXMgYmVmb3JlIGRlY2xhcmluZyBpbnRlbnQgdG8gdmFsaWRhdGUgd2lsbCBmYWlsIHdpdGggTm90VmFsaWRhdG9yLihwdXJnZV9rZXlzBAGUbWF4X2RlbGl2ZXJ5X2FuZF9yZW1vdGVfZXhlY3V0aW9uX2ZlZUkEAVBPcHRpb248QmFsYW5jZU9mPFQ+PgALaAEBUmVtb3ZlIHNlc3Npb24ga2V5cyBmb3IgYSB2YWxpZGF0b3IgYW5kIHJlbGVhc2UgdGhlIGtleSBkZXBvc2l0LgCoVGhpcyBwdXJnZXMgdGhlIGtleXMgZnJvbSB0aGUgUmVsYXkgQ2hhaW4uAEUBVW5saWtlIGBzZXRfa2V5c2AsIHRoaXMgZG9lcyBub3QgcmVxdWlyZSB0aGUgY2FsbGVyIHRvIGJlIGEgcmVnaXN0ZXJlZCB2YWxpZGF0b3IuSQFUaGlzIGlzIGludGVudGlvbmFsOiBhIHZhbGlkYXRvciB3aG8gaGFzIGNoaWxsZWQgKHN0b3BwZWQgdmFsaWRhdGluZykgc2hvdWxkIHN0aWxsOQFiZSBhYmxlIHRvIHB1cmdlIHRoZWlyIHNlc3Npb24ga2V5cy4gVGhpcyBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgb3JpZ2luYWzwYHBhbGxldC1zZXNzaW9uOjpwdXJnZV9rZXlzYCB3aGljaCBhbGxvd3MgYW55b25lIHRvIGNhbGwgaXQuADkBVGhlIFJlbGF5IENoYWluIHdpbGwgcmVqZWN0IHRoZSBjYWxsIHdpdGggYE5vS2V5c2AgZXJyb3IgaWYgdGhlIGFjY291bnQgaGFzIG5vJGtleXMgc2V0LgAkKipGZWVzOioqVQFUaGUgYWN0dWFsIGNvc3Qgb2YgdGhpcyBjYWxsIGlzIGhpZ2hlciB0aGFuIHdoYXQgdGhlIHdlaWdodC1iYXNlZCBmZWUgZXN0aW1hdGUgc2hvd3MuRQFJbiBhZGRpdGlvbiB0byB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gd2VpZ2h0IGZlZSwgdGhlIGNhbGxlciBpcyBjaGFyZ2VkIGFuIFhDTSBmZWVNAShkZWxpdmVyeSArIFJDIGV4ZWN1dGlvbiBjb3N0KSB2aWEgYFhjbUV4ZWN1dG9yOjpjaGFyZ2VfZmVlc2AuIFRoZSByZWxheSBjaGFpbiB1c2VzKQFgVW5wYWlkRXhlY3V0aW9uYCwgc28gdGhlIGZ1bGwgcmVtb3RlIGNvc3QgaXMgY2hhcmdlZCB1cGZyb250IG9uIEFzc2V0SHViLgAtAVdoZW4gY2FsbGVkIHZpYSBhIHN0YWtpbmcgcHJveHksIHRoZSBwcm94eSBwYXlzIHRoZSB0cmFuc2FjdGlvbiB3ZWlnaHQgZmVlLLh3aGlsZSB0aGUgZGVsZWdhdGluZyBhY2NvdW50IHBheXMgdGhlIFhDTSBmZWUuAEgqKk1heCBGZWUgTGltaXQ6KipFAVVzZXJzIGNhbiBvcHRpb25hbGx5IHNwZWNpZnkgYG1heF9kZWxpdmVyeV9hbmRfcmVtb3RlX2V4ZWN1dGlvbl9mZWVgIHRvIGxpbWl0IHRoZV0BZGVsaXZlcnkgKyBSQyBleGVjdXRpb24gZmVlLiBUaGlzIGRvZXMgbm90IGluY2x1ZGUgdGhlIGxvY2FsIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUuIElmXQF0aGUgZmVlIGV4Y2VlZHMgdGhpcyBsaW1pdCwgdGhlIG9wZXJhdGlvbiBmYWlscyB3aXRoIGBGZWVzRXhjZWVkZWRNYXhgLiBQYXNzIGBOb25lYCBmb3JMdW5saW1pdGVkIChubyBjYXApLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6BBQh4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50NFNlc3Npb25SZXBvcnQEJEFjY291bnRJZAEEABABJGVuZF9pbmRleDgBMFNlc3Npb25JbmRleAABQHZhbGlkYXRvcl9wb2ludHOFBQFUVmVjPChBY2NvdW50SWQsIHUzMik+AAFQYWN0aXZhdGlvbl90aW1lc3RhbXCNBQFIT3B0aW9uPCh1NjQsIHUzMik+AAEgbGVmdG92ZXJZAQEQYm9vbAAAhQUAAAKJBQCJBQAABAgEOACNBQQYT3B0aW9uBARUAZEFAQgQTm9uZQAAABBTb21lBACRBQAAAQAAkQUAAAQIKDgAlQUAAAKZBQCZBQAABAg4nQUAnQUIeHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudBxPZmZlbmNlBCRBY2NvdW50SWQBBAAMASBvZmZlbmRlcgQBJEFjY291bnRJZAABJHJlcG9ydGVyc10BAThWZWM8QWNjb3VudElkPgABOHNsYXNoX2ZyYWN0aW9uHQUBHFBlcmJpbGwAAKEFDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYcGFsbGV0EENhbGwEBFQAAQgYbWFuYWdlBAEIb3ClBQFMTWFuYWdlck9wZXJhdGlvbjxUPgAAFExNYW5hZ2UgdGhpcyBwYWxsZXQuAOhUaGUgb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFtgQ29uZmlnOjpNYW5hZ2VyT3JpZ2luYF0uAAkBU2VlIFtgTWFuYWdlck9wZXJhdGlvbmBdIGZvciB2YXJpb3VzIG9wZXJhdGlvbnMgdGhhdCBhcmUgcG9zc2libGUuFGFkbWluBAEIb3CtBQFEQWRtaW5PcGVyYXRpb248VD4AAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMupQUIkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9ja0BNYW5hZ2VyT3BlcmF0aW9uBARUAAEMQEZvcmNlUm90YXRlUm91bmQAAAA0Rm9yY2VTZXRQaGFzZQQAqQUBIFBoYXNlPFQ+AAEAREVtZXJnZW5jeUZhbGxiYWNrAAIAAKkFDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sUdHlwZXMUUGhhc2UEBFQAASAMT2ZmAAAAGFNpZ25lZAQAOAFEQmxvY2tOdW1iZXJGb3I8VD4AAQBAU2lnbmVkVmFsaWRhdGlvbgQAOAFEQmxvY2tOdW1iZXJGb3I8VD4AAgAgVW5zaWduZWQEADgBREJsb2NrTnVtYmVyRm9yPFQ+AAMAIFNuYXBzaG90BAA4ASRQYWdlSW5kZXgABAAQRG9uZQAFABhFeHBvcnQEADgBJFBhZ2VJbmRleAAGACRFbWVyZ2VuY3kABwAArQUIkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jazhBZG1pbk9wZXJhdGlvbgQEVAABCFBFbWVyZ2VuY3lTZXRTb2x1dGlvbggAsQUBhEJveDxCb3VuZGVkU3VwcG9ydHNPZjxQYWxsZXQ8VD4+PgAA0QUBNEVsZWN0aW9uU2NvcmUAAABQU2V0TWluVW50cnVzdGVkU2NvcmUEANEFATRFbGVjdGlvblNjb3JlAAEAALEFCHxmcmFtZV9lbGVjdGlvbl9wcm92aWRlcl9zdXBwb3J0PEJvdW5kZWRTdXBwb3J0cwwkQWNjb3VudElkAQQYQk91dGVyABhCSW5uZXIAAAQAtQUBCQFCb3VuZGVkVmVjPChBY2NvdW50SWQsIEJvdW5kZWRTdXBwb3J0PEFjY291bnRJZCwgQklubmVyPiksIEJPdXRlcj4AALUFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBuQUEUwAABADNBQEYVmVjPFQ+AAC5BQAABAgEvQUAvQUIfGZyYW1lX2VsZWN0aW9uX3Byb3ZpZGVyX3N1cHBvcnQ4Qm91bmRlZFN1cHBvcnQIJEFjY291bnRJZAEEFEJvdW5kAAAIARR0b3RhbFUBATxFeHRlbmRlZEJhbGFuY2UAARh2b3RlcnPBBQG8Qm91bmRlZFZlYzwoQWNjb3VudElkLCBFeHRlbmRlZEJhbGFuY2UpLCBCb3VuZD4AAMEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBxQUEUwAABADJBQEYVmVjPFQ+AADFBQAABAgEVQEAyQUAAALFBQDNBQAAArkFANEFCERzcF9ucG9zX2VsZWN0aW9uczRFbGVjdGlvblNjb3JlAAAMATRtaW5pbWFsX3N0YWtlVQEBPEV4dGVuZGVkQmFsYW5jZQABJHN1bV9zdGFrZVUBATxFeHRlbmRlZEJhbGFuY2UAAURzdW1fc3Rha2Vfc3F1YXJlZFUBATxFeHRlbmRlZEJhbGFuY2UAANUFFJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sgdmVyaWZpZXIUaW1wbHMYcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu2QUQkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB1bnNpZ25lZBhwYWxsZXQQQ2FsbAQEVAABBDxzdWJtaXRfdW5zaWduZWQEAThwYWdlZF9zb2x1dGlvbt0FAZRCb3g8UGFnZWRSYXdTb2x1dGlvbjxUOjpNaW5lckNvbmZpZz4+AAA8cFN1Ym1pdCBhbiB1bnNpZ25lZCBzb2x1dGlvbi4AVQFUaGlzIHdvcmtzIHZlcnkgbXVjaCBsaWtlIGFuIGluaGVyZW50LCBhcyBvbmx5IHRoZSB2YWxpZGF0b3JzIGFyZSBwZXJtaXR0ZWQgdG8gc3VibWl0WQFhbnl0aGluZy4gQnkgZGVmYXVsdCB2YWxpZGF0b3JzIHdpbGwgY29tcHV0ZSB0aGlzIGNhbGwgaW4gdGhlaXIgYG9mZmNoYWluX3dvcmtlcmAgaG9va2xhbmQgdHJ5IGFuZCBzdWJtaXQgaXQgYmFjay4ARQFUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHNpZ25lZCBwYWdlIHN1Ym1pc3Npb24gbWFpbmx5IGluIHRoYXQgdGhlIHNvbHV0aW9uIHBhZ2UgaXNQdmVyaWZpZWQgb24gdGhlIGZseS4APQFUaGUgYHBhZ2VkX3NvbHV0aW9uYCBtYXkgY29udGFpbiBhdCBtb3N0IFtgQ29uZmlnOjpNaW5lclBhZ2VzYF0gcGFnZXMuIFRoZXkgYXJlDQFpbnRlcnByZXRlZCBhcyBtc3AgLT4gbHNwLCBhcyBwZXIgW2BjcmF0ZTo6UGFsbGV0Ojptc3BfcmFuZ2VfZm9yYF0uAF0BRm9yIGV4YW1wbGUsIGlmIGBQYWdlcyA9IDRgLCBhbmQgYE1pbmVyUGFnZXMgPSAyYCwgb3VyIGZ1bGwgc25hcHNob3QgcmFuZ2Ugd291bGQgYmUgWzAsVQExLCAyLCAzXSwgd2l0aCAzIGJlaW5nIG1zcC4gQnV0LCBpbiB0aGlzIGNhc2UsIHRoZW4gdGhlIGBwYWdlZF9yYXdfc29sdXRpb24ucGFnZXNgIGlz3GV4cGVjdGVkIHRvIGNvcnJlc3BvbmQgdG8gYFtzbmFwc2hvdCgyKSwgc25hcHNob3QoMyldYC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu3QUMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxR0eXBlc0BQYWdlZFJhd1NvbHV0aW9uBARUAAAMAThzb2x1dGlvbl9wYWdlc+EFAUhWZWM8U29sdXRpb25PZjxUPj4AARRzY29yZdEFATRFbGVjdGlvblNjb3JlAAEUcm91bmQ4AQx1MzIAAOEFAAAC5QUA5QUMcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUcc3Rha2luZ1ROcG9zQ29tcGFjdFNvbHV0aW9uMTYAAEABGHZvdGVzMekFAAABGHZvdGVzMvUFAAABGHZvdGVzMwkGAAABGHZvdGVzNBUGAAABGHZvdGVzNSEGAAABGHZvdGVzNi0GAAABGHZvdGVzNzkGAAABGHZvdGVzOEUGAAABGHZvdGVzOVEGAAABHHZvdGVzMTBdBgAAARx2b3RlczExaQYAAAEcdm90ZXMxMnUGAAABHHZvdGVzMTOBBgAAARx2b3RlczE0jQYAAAEcdm90ZXMxNZkGAAABHHZvdGVzMTalBgAAAOkFAAAC7QUA7QUAAAQIYPEFAPEFAAAG0QMA9QUAAAL5BQD5BQAABAxg/QXxBQD9BQAABAjxBQEGAAEGAAAGBQYABQYMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxhQZXJVMTYAAAQA0QMBDHUxNgAACQYAAAINBgANBgAABAxgEQbxBQARBgAAAwIAAAD9BQAVBgAAAhkGABkGAAAEDGAdBvEFAB0GAAADAwAAAP0FACEGAAACJQYAJQYAAAQMYCkG8QUAKQYAAAMEAAAA/QUALQYAAAIxBgAxBgAABAxgNQbxBQA1BgAAAwUAAAD9BQA5BgAAAj0GAD0GAAAEDGBBBvEFAEEGAAADBgAAAP0FAEUGAAACSQYASQYAAAQMYE0G8QUATQYAAAMHAAAA/QUAUQYAAAJVBgBVBgAABAxgWQbxBQBZBgAAAwgAAAD9BQBdBgAAAmEGAGEGAAAEDGBlBvEFAGUGAAADCQAAAP0FAGkGAAACbQYAbQYAAAQMYHEG8QUAcQYAAAMKAAAA/QUAdQYAAAJ5BgB5BgAABAxgfQbxBQB9BgAAAwsAAAD9BQCBBgAAAoUGAIUGAAAEDGCJBvEFAIkGAAADDAAAAP0FAI0GAAACkQYAkQYAAAQMYJUG8QUAlQYAAAMNAAAA/QUAmQYAAAKdBgCdBgAABAxgoQbxBQChBgAAAw4AAAD9BQClBgAAAqkGAKkGAAAEDGCtBvEFAK0GAAADDwAAAP0FALEGEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkGHBhbGxldBBDYWxsBARUAAEUIHJlZ2lzdGVyBAE0Y2xhaW1lZF9zY29yZdEFATRFbGVjdGlvblNjb3JlAAAExFJlZ2lzdGVyIG9uZXNlbGYgZm9yIGFuIHVwY29taW5nIHNpZ25lZCBlbGVjdGlvbi4sc3VibWl0X3BhZ2UIARBwYWdlOAEkUGFnZUluZGV4AAE4bWF5YmVfc29sdXRpb261BgGcT3B0aW9uPEJveDxTb2x1dGlvbk9mPFQ6Ok1pbmVyQ29uZmlnPj4+AAEgjFN1Ym1pdCBhIHNpbmdsZSBwYWdlIG9mIGEgc29sdXRpb24uALBNdXN0IGFsd2F5cyBjb21lIGFmdGVyIFtgUGFsbGV0OjpyZWdpc3RlcmBdLgDgYG1heWJlX3NvbHV0aW9uYCBjYW4gYmUgc2V0IHRvIGBOb25lYCB0byBlcmFzZSB0aGUgcGFnZS4ANQFDb2xsZWN0cyBkZXBvc2l0cyBmcm9tIHRoZSBzaWduZWQgb3JpZ2luIGJhc2VkIG9uIFtgQ29uZmlnOjpEZXBvc2l0QmFzZWBdIGFuZGxbYENvbmZpZzo6RGVwb3NpdFBlclBhZ2VgXS4QYmFpbAACFFRSZXRyYWN0IGEgc3VibWlzc2lvbi4ATQFBIHBvcnRpb24gb2YgdGhlIGRlcG9zaXQgbWF5IGJlIHJldHVybmVkLCBiYXNlZCBvbiB0aGUgW2BDb25maWc6OkVqZWN0R3JhY2VSYXRpb2BdLgDEVGhpcyB3aWxsIGZ1bGx5IHJlbW92ZSB0aGUgc29sdXRpb24gZnJvbSBzdG9yYWdlLlBjbGVhcl9vbGRfcm91bmRfZGF0YQgBFHJvdW5kOAEMdTMyAAE0d2l0bmVzc19wYWdlczgBDHUzMgADGMBDbGVhciB0aGUgZGF0YSBvZiBhIHN1Ym1pdHRlciBmb3JtIGFuIG9sZCByb3VuZC4AMQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIHNpZ25lZCwgYW5kIHRoZSBvcmlnaW5hbCBzdWJtaXR0ZXIuAF0BVGhpcyBjYW4gb25seSBiZSBjYWxsZWQgZm9yIHN1Ym1pc3Npb25zIHRoYXQgZW5kIHVwIGJlaW5nIGRpc2NhcmRlZCwgYXMgaW4gdGhleSBhcmUgbm90xHByb2Nlc3NlZCBhbmQgdGhleSBlbmQgdXAgbGluZ2VyaW5nIGluIHRoZSBxdWV1ZS5Ec2V0X2ludnVsbmVyYWJsZXMEAQxpbnZdAQFEVmVjPFQ6OkFjY291bnRJZD4ABAxoU2V0IHRoZSBpbnZ1bG5lcmFibGUgbGlzdC4AEQFEaXNwYXRjaCBvcmlnaW4gbXVzdCB0aGUgdGhlIHNhbWUgYXMgW2BjcmF0ZTo6Q29uZmlnOjpBZG1pbk9yaWdpbmBdLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy61BgQYT3B0aW9uBARUAeUFAQgQTm9uZQAAABBTb21lBADlBQAAAQAAuQYQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQQQ2FsbAQEVAABiBBib25kCAEUdmFsdWVRAQEwQmFsYW5jZU9mPFQ+AAEUcGF5ZWW9BgF8UmV3YXJkRGVzdGluYXRpb248VDo6QWNjb3VudElkPgAAMGEBVGFrZSB0aGUgb3JpZ2luIGFjY291bnQgYXMgYSBzdGFzaCBhbmQgbG9jayB1cCBgdmFsdWVgIG9mIGl0cyBiYWxhbmNlLiBgY29udHJvbGxlcmAgd2lsbIBiZSB0aGUgYWNjb3VudCB0aGF0IGNvbnRyb2xzIGl0LgAtAWB2YWx1ZWAgbXVzdCBiZSBtb3JlIHRoYW4gdGhlIGBtaW5pbXVtX2JhbGFuY2VgIHNwZWNpZmllZCBieSBgVDo6Q3VycmVuY3lgLgAhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBzdGFzaCBhY2NvdW50LgA8RW1pdHMgYEJvbmRlZGAuAE0BTk9URTogVHdvIG9mIHRoZSBzdG9yYWdlIHdyaXRlcyAoYFNlbGY6OmJvbmRlZGAsIGBTZWxmOjpwYXllZWApIGFyZSBfbmV2ZXJfIGNsZWFuZWRZAXVubGVzcyB0aGUgYG9yaWdpbmAgZmFsbHMgYmVsb3cgX2V4aXN0ZW50aWFsIGRlcG9zaXRfIChvciBlcXVhbCB0byAwKSBhbmQgZ2V0cyByZW1vdmVkIGFzIGR1c3QuKGJvbmRfZXh0cmEEAThtYXhfYWRkaXRpb25hbFEBATBCYWxhbmNlT2Y8VD4AAShhAUFkZCBzb21lIGV4dHJhIGFtb3VudCB0aGF0IGhhdmUgYXBwZWFyZWQgaW4gdGhlIHN0YXNoIGBmcmVlX2JhbGFuY2VgIGludG8gdGhlIGJhbGFuY2UgdXAwZm9yIHN0YWtpbmcuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIHN0YXNoLCBub3QgdGhlIGNvbnRyb2xsZXIuAE0BVXNlIHRoaXMgaWYgdGhlcmUgYXJlIGFkZGl0aW9uYWwgZnVuZHMgaW4geW91ciBzdGFzaCBhY2NvdW50IHRoYXQgeW91IHdpc2ggdG8gYm9uZC5VAVVubGlrZSBbYGJvbmRgXShTZWxmOjpib25kKSBvciBbYHVuYm9uZGBdKFNlbGY6OnVuYm9uZCkgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBpbXBvc2W8YW55IGxpbWl0YXRpb24gb24gdGhlIGFtb3VudCB0aGF0IGNhbiBiZSBhZGRlZC4APEVtaXRzIGBCb25kZWRgLhh1bmJvbmQEARR2YWx1ZVEBATBCYWxhbmNlT2Y8VD4AAkxRAVNjaGVkdWxlIGEgcG9ydGlvbiBvZiB0aGUgc3Rhc2ggdG8gYmUgdW5sb2NrZWQgcmVhZHkgZm9yIHRyYW5zZmVyIG91dCBhZnRlciB0aGUgYm9uZPxwZXJpb2QgZW5kcy4gSWYgdGhpcyBsZWF2ZXMgYW4gYW1vdW50IGFjdGl2ZWx5IGJvbmRlZCBsZXNzIHRoYW4hAVtgYXNzZXQ6OmV4aXN0ZW50aWFsX2RlcG9zaXRgXSwgdGhlbiBpdCBpcyBpbmNyZWFzZWQgdG8gdGhlIGZ1bGwgYW1vdW50LgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgBFAU9uY2UgdGhlIHVubG9jayBwZXJpb2QgaXMgZG9uZSwgeW91IGNhbiBjYWxsIGB3aXRoZHJhd191bmJvbmRlZGAgdG8gYWN0dWFsbHkgbW92Zbx0aGUgZnVuZHMgb3V0IG9mIG1hbmFnZW1lbnQgcmVhZHkgZm9yIHRyYW5zZmVyLgAxAU5vIG1vcmUgdGhhbiBhIGxpbWl0ZWQgbnVtYmVyIG9mIHVubG9ja2luZyBjaHVua3MgKHNlZSBgTWF4VW5sb2NraW5nQ2h1bmtzYClBAWNhbiBjby1leGlzdHMgYXQgdGhlIHNhbWUgdGltZS4gSWYgdGhlcmUgYXJlIG5vIHVubG9ja2luZyBjaHVua3Mgc2xvdHMgYXZhaWxhYmxlRQFbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0gaXMgY2FsbGVkIHRvIHJlbW92ZSBzb21lIG9mIHRoZSBjaHVua3MgKGlmIHBvc3NpYmxlKS4AOQFJZiBhIHVzZXIgZW5jb3VudGVycyB0aGUgYEluc3VmZmljaWVudEJvbmRgIGVycm9yIHdoZW4gY2FsbGluZyB0aGlzIGV4dHJpbnNpYywZAXRoZXkgc2hvdWxkIGNhbGwgYGNoaWxsYCBmaXJzdCBpbiBvcmRlciB0byBmcmVlIHVwIHRoZWlyIGJvbmRlZCBmdW5kcy4AREVtaXRzIGBVbmJvbmRlZGAuAJRTZWUgYWxzbyBbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0uRHdpdGhkcmF3X3VuYm9uZGVkBAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyAANMKQFSZW1vdmUgYW55IHN0YWtlIHRoYXQgaGFzIGJlZW4gZnVsbHkgdW5ib25kZWQgYW5kIGlzIHJlYWR5IGZvciB3aXRoZHJhd2FsLgBVAVN0YWtlIGlzIGNvbnNpZGVyZWQgZnVsbHkgdW5ib25kZWQgb25jZSBbYENvbmZpZzo6Qm9uZGluZ0R1cmF0aW9uYF0gaGFzIGVsYXBzZWQgc2luY2VdAXRoZSB1bmJvbmRpbmcgd2FzIGluaXRpYXRlZC4gSW4gcmFyZSBjYXNlc+KAlHN1Y2ggYXMgd2hlbiBvZmZlbmNlcyBmb3IgdGhlIHVuYm9uZGVkIGVyYVUBaGF2ZSBiZWVuIHJlcG9ydGVkIGJ1dCBub3QgeWV0IHByb2Nlc3NlZOKAlHdpdGhkcmF3YWwgaXMgcmVzdHJpY3RlZCB0byBlcmFzIGZvciB3aGljaIRhbGwgb2ZmZW5jZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZC4AJQFUaGUgdW5sb2NrZWQgc3Rha2Ugd2lsbCBiZSByZXR1cm5lZCBhcyBmcmVlIGJhbGFuY2UgaW4gdGhlIHN0YXNoIGFjY291bnQuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIuAEhFbWl0cyBgV2l0aGRyYXduYC4AaFNlZSBhbHNvIFtgQ2FsbDo6dW5ib25kYF0uADQjIyBQYXJhbWV0ZXJzAFkBLSBgbnVtX3NsYXNoaW5nX3NwYW5zYDogKipEZXByZWNhdGVkKiouIFJldGFpbmVkIG9ubHkgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHk7IHRoaXNoICBwYXJhbWV0ZXIgaGFzIG5vIGVmZmVjdC4gdmFsaWRhdGUEARRwcmVmc8EGAThWYWxpZGF0b3JQcmVmcwAEFOREZWNsYXJlIHRoZSBkZXNpcmUgdG8gdmFsaWRhdGUgZm9yIHRoZSBvcmlnaW4gY29udHJvbGxlci4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLiBub21pbmF0ZQQBHHRhcmdldHPJBgFkVmVjPEFjY291bnRJZExvb2t1cE9mPFQ+PgAFFA0BRGVjbGFyZSB0aGUgZGVzaXJlIHRvIG5vbWluYXRlIGB0YXJnZXRzYCBmb3IgdGhlIG9yaWdpbiBjb250cm9sbGVyLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guFGNoaWxsAAYoxERlY2xhcmUgbm8gZGVzaXJlIHRvIGVpdGhlciB2YWxpZGF0ZSBvciBub21pbmF0ZS4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgA0IyMgQ29tcGxleGl0eeQtIEluZGVwZW5kZW50IG9mIHRoZSBhcmd1bWVudHMuIEluc2lnbmlmaWNhbnQgY29tcGxleGl0eS5QLSBDb250YWlucyBvbmUgcmVhZC7ELSBXcml0ZXMgYXJlIGxpbWl0ZWQgdG8gdGhlIGBvcmlnaW5gIGFjY291bnQga2V5LiRzZXRfcGF5ZWUEARRwYXllZb0GAXxSZXdhcmREZXN0aW5hdGlvbjxUOjpBY2NvdW50SWQ+AAcUtChSZS0pc2V0IHRoZSBwYXltZW50IHRhcmdldCBmb3IgYSBjb250cm9sbGVyLgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLjhzZXRfY29udHJvbGxlcgAIIEUBKFJlLSlzZXRzIHRoZSBjb250cm9sbGVyIG9mIGEgc3Rhc2ggdG8gdGhlIHN0YXNoIGl0c2VsZi4gVGhpcyBmdW5jdGlvbiBwcmV2aW91c2x5TQFhY2NlcHRlZCBhIGBjb250cm9sbGVyYCBhcmd1bWVudCB0byBzZXQgdGhlIGNvbnRyb2xsZXIgdG8gYW4gYWNjb3VudCBvdGhlciB0aGFuIHRoZVkBc3Rhc2ggaXRzZWxmLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIG5vdyBiZWVuIHJlbW92ZWQsIG5vdyBvbmx5IHNldHRpbmcgdGhlIGNvbnRyb2xsZXKMdG8gdGhlIHN0YXNoLCBpZiBpdCBpcyBub3QgYWxyZWFkeS4AUQFFZmZlY3RzIHdpbGwgYmUgZmVsdCBpbnN0YW50bHkgKGFzIHNvb24gYXMgdGhpcyBmdW5jdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5KS4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgc3Rhc2gsIG5vdCB0aGUgY29udHJvbGxlci5Mc2V0X3ZhbGlkYXRvcl9jb3VudAQBDG5ld2ABDHUzMgAJDJBTZXRzIHRoZSBpZGVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycy4AhFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBSb290LmBpbmNyZWFzZV92YWxpZGF0b3JfY291bnQEAShhZGRpdGlvbmFsYAEMdTMyAAoQ6EluY3JlbWVudHMgdGhlIGlkZWFsIG51bWJlciBvZiB2YWxpZGF0b3JzIHVwIHRvIG1heGltdW0gb2ZUYFQ6Ok1heFZhbGlkYXRvclNldGAuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC5Uc2NhbGVfdmFsaWRhdG9yX2NvdW50BAEYZmFjdG9yzQYBHFBlcmNlbnQACxARAVNjYWxlIHVwIHRoZSBpZGVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycyBieSBhIGZhY3RvciB1cCB0byBtYXhpbXVtIG9mVGBUOjpNYXhWYWxpZGF0b3JTZXRgLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuNGZvcmNlX25vX2VyYXMADCSsRm9yY2UgdGhlcmUgdG8gYmUgbm8gbmV3IGVyYXMgaW5kZWZpbml0ZWx5LgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuOQFUaHVzIHRoZSBlbGVjdGlvbiBwcm9jZXNzIG1heSBiZSBvbmdvaW5nIHdoZW4gdGhpcyBpcyBjYWxsZWQuIEluIHRoaXMgY2FzZSB0aGXcZWxlY3Rpb24gd2lsbCBjb250aW51ZSB1bnRpbCB0aGUgbmV4dCBlcmEgaXMgdHJpZ2dlcmVkLjRmb3JjZV9uZXdfZXJhAA0oSQFGb3JjZSB0aGVyZSB0byBiZSBhIG5ldyBlcmEgYXQgdGhlIGVuZCBvZiB0aGUgbmV4dCBzZXNzaW9uLiBBZnRlciB0aGlzLCBpdCB3aWxsIGJlnHJlc2V0IHRvIG5vcm1hbCAobm9uLWZvcmNlZCkgYmVoYXZpb3VyLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuSQFJZiB0aGlzIGlzIGNhbGxlZCBqdXN0IGJlZm9yZSBhIG5ldyBlcmEgaXMgdHJpZ2dlcmVkLCB0aGUgZWxlY3Rpb24gcHJvY2VzcyBtYXkgbm90jGhhdmUgZW5vdWdoIGJsb2NrcyB0byBnZXQgYSByZXN1bHQuNGZvcmNlX3Vuc3Rha2UIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABSG51bV9zbGFzaGluZ19zcGFuczgBDHUzMgAPIAkBRm9yY2UgYSBjdXJyZW50IHN0YWtlciB0byBiZWNvbWUgY29tcGxldGVseSB1bnN0YWtlZCwgaW1tZWRpYXRlbHkuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC40IyMgUGFyYW1ldGVycwCwLSBgc3Rhc2hgOiBUaGUgc3Rhc2ggYWNjb3VudCB0byBiZSB1bnN0YWtlZC49AS0gYG51bV9zbGFzaGluZ19zcGFuc2A6ICoqRGVwcmVjYXRlZCoqLiBUaGlzIHBhcmFtZXRlciBpcyByZXRhaW5lZCBmb3IgYmFja3dhcmSsY29tcGF0aWJpbGl0eS4gSXQgbm8gbG9uZ2VyIGhhcyBhbnkgZWZmZWN0LlBmb3JjZV9uZXdfZXJhX2Fsd2F5cwAQJAEBRm9yY2UgdGhlcmUgdG8gYmUgYSBuZXcgZXJhIGF0IHRoZSBlbmQgb2Ygc2Vzc2lvbnMgaW5kZWZpbml0ZWx5LgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuSQFJZiB0aGlzIGlzIGNhbGxlZCBqdXN0IGJlZm9yZSBhIG5ldyBlcmEgaXMgdHJpZ2dlcmVkLCB0aGUgZWxlY3Rpb24gcHJvY2VzcyBtYXkgbm90jGhhdmUgZW5vdWdoIGJsb2NrcyB0byBnZXQgYSByZXN1bHQuVGNhbmNlbF9kZWZlcnJlZF9zbGFzaAgBDGVyYTgBIEVyYUluZGV4AAFEdmFsaWRhdG9yX3NsYXNoZXPRBgFwVmVjPChUOjpBY2NvdW50SWQsIFBlcmJpbGwpPgARLAkBQ2FuY2VscyBzY2hlZHVsZWQgc2xhc2hlcyBmb3IgYSBnaXZlbiBlcmEgYmVmb3JlIHRoZXkgYXJlIGFwcGxpZWQuAGEBVGhpcyBmdW5jdGlvbiBhbGxvd3MgYFQ6OkFkbWluT3JpZ2luYCB0byBjYW5jZWwgcGVuZGluZyBzbGFzaGVzIGZvciBzcGVjaWZpZWQgdmFsaWRhdG9yc0kBaW4gYSBnaXZlbiBlcmEuIFRoZSBjYW5jZWxsZWQgc2xhc2hlcyBhcmUgc3RvcmVkIGFuZCB3aWxsIGJlIGNoZWNrZWQgd2hlbiBhcHBseWluZyBzbGFzaGVzLgA0IyMgUGFyYW1ldGVyc1UBLSBgZXJhYDogVGhlIHN0YWtpbmcgZXJhIGZvciB3aGljaCBzbGFzaGVzIHNob3VsZCBiZSBjYW5jZWxsZWQuIFRoaXMgaXMgdGhlIGVyYSB3aGVyZTUBICB0aGUgc2xhc2ggd291bGQgYmUgYXBwbGllZCwgbm90IHRoZSBlcmEgaW4gd2hpY2ggdGhlIG9mZmVuY2Ugd2FzIGNvbW1pdHRlZC5ZAS0gYHZhbGlkYXRvcl9zbGFzaGVzYDogQSBsaXN0IG9mIHZhbGlkYXRvciBzdGFzaCBhY2NvdW50cyBhbmQgdGhlaXIgc2xhc2ggZnJhY3Rpb25zIHRvPCAgYmUgY2FuY2VsbGVkLjhwYXlvdXRfc3Rha2VycwgBPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAABDGVyYTgBIEVyYUluZGV4ABI0GQFQYXkgb3V0IG5leHQgcGFnZSBvZiB0aGUgc3Rha2VycyBiZWhpbmQgYSB2YWxpZGF0b3IgZm9yIHRoZSBnaXZlbiBlcmEuAOgtIGB2YWxpZGF0b3Jfc3Rhc2hgIGlzIHRoZSBzdGFzaCBhY2NvdW50IG9mIHRoZSB2YWxpZGF0b3IuMQEtIGBlcmFgIG1heSBiZSBhbnkgZXJhIGJldHdlZW4gYFtjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGg7IGN1cnJlbnRfZXJhXWAuAFUBVGhlIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4gQW55IGFjY291bnQgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiwgZXZlbiBpZnRpdCBpcyBub3Qgb25lIG9mIHRoZSBzdGFrZXJzLgBJAVRoZSByZXdhcmQgcGF5b3V0IGNvdWxkIGJlIHBhZ2VkIGluIGNhc2UgdGhlcmUgYXJlIHRvbyBtYW55IG5vbWluYXRvcnMgYmFja2luZyB0aGVdAWB2YWxpZGF0b3Jfc3Rhc2hgLiBUaGlzIGNhbGwgd2lsbCBwYXlvdXQgdW5wYWlkIHBhZ2VzIGluIGFuIGFzY2VuZGluZyBvcmRlci4gVG8gY2xhaW0gYbRzcGVjaWZpYyBwYWdlLCB1c2UgYHBheW91dF9zdGFrZXJzX2J5X3BhZ2VgLmAA8ElmIGFsbCBwYWdlcyBhcmUgY2xhaW1lZCwgaXQgcmV0dXJucyBhbiBlcnJvciBgSW52YWxpZFBhZ2VgLhhyZWJvbmQEARR2YWx1ZVEBATBCYWxhbmNlT2Y8VD4AEwzcUmVib25kIGEgcG9ydGlvbiBvZiB0aGUgc3Rhc2ggc2NoZWR1bGVkIHRvIGJlIHVubG9ja2VkLgDUVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSB0aGUgY29udHJvbGxlci4ocmVhcF9zdGFzaAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyABRIXQFSZW1vdmUgYWxsIGRhdGEgc3RydWN0dXJlcyBjb25jZXJuaW5nIGEgc3Rha2VyL3N0YXNoIG9uY2UgaXQgaXMgYXQgYSBzdGF0ZSB3aGVyZSBpdCBjYW4FAWJlIGNvbnNpZGVyZWQgYGR1c3RgIGluIHRoZSBzdGFraW5nIHN5c3RlbS4gVGhlIHJlcXVpcmVtZW50cyBhcmU6AC0BMS4gdGhlIGB0b3RhbF9iYWxhbmNlYCBvZiB0aGUgc3Rhc2ggaXMgYmVsb3cgYG1pbl9jaGlsbGVkX2JvbmRgIG9yIGlzIHplcm8uOQEyLiBvciwgdGhlIGBsZWRnZXIudG90YWxgIG9mIHRoZSBzdGFzaCBpcyBiZWxvdyBgbWluX2NoaWxsZWRfYm9uZGAgb3IgaXMgemVyby4AVQFUaGUgZm9ybWVyIGNhbiBoYXBwZW4gaW4gY2FzZXMgbGlrZSBhIHNsYXNoOyB0aGUgbGF0dGVyIHdoZW4gYSBmdWxseSB1bmJvbmRlZCBhY2NvdW50CQFpcyBzdGlsbCByZWNlaXZpbmcgc3Rha2luZyByZXdhcmRzIGluIGBSZXdhcmREZXN0aW5hdGlvbjo6U3Rha2VkYC4AMQFJdCBjYW4gYmUgY2FsbGVkIGJ5IGFueW9uZSwgYXMgbG9uZyBhcyBgc3Rhc2hgIG1lZXRzIHRoZSBhYm92ZSByZXF1aXJlbWVudHMuANxSZWZ1bmRzIHRoZSB0cmFuc2FjdGlvbiBmZWVzIHVwb24gc3VjY2Vzc2Z1bCBleGVjdXRpb24uADQjIyBQYXJhbWV0ZXJzAKgtIGBzdGFzaGA6IFRoZSBzdGFzaCBhY2NvdW50IHRvIGJlIHJlYXBlZC49AS0gYG51bV9zbGFzaGluZ19zcGFuc2A6ICoqRGVwcmVjYXRlZCoqLiBUaGlzIHBhcmFtZXRlciBpcyByZXRhaW5lZCBmb3IgYmFja3dhcmSsY29tcGF0aWJpbGl0eS4gSXQgbm8gbG9uZ2VyIGhhcyBhbnkgZWZmZWN0LhBraWNrBAEMd2hvyQYBZFZlYzxBY2NvdW50SWRMb29rdXBPZjxUPj4AFSzgUmVtb3ZlIHRoZSBnaXZlbiBub21pbmF0aW9ucyBmcm9tIHRoZSBjYWxsaW5nIHZhbGlkYXRvci4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgBNAS0gYHdob2A6IEEgbGlzdCBvZiBub21pbmF0b3Igc3Rhc2ggYWNjb3VudHMgd2hvIGFyZSBub21pbmF0aW5nIHRoaXMgdmFsaWRhdG9yIHdoaWNowCAgc2hvdWxkIG5vIGxvbmdlciBiZSBub21pbmF0aW5nIHRoaXMgdmFsaWRhdG9yLgBVAU5vdGU6IE1ha2luZyB0aGlzIGNhbGwgb25seSBtYWtlcyBzZW5zZSBpZiB5b3UgZmlyc3Qgc2V0IHRoZSB2YWxpZGF0b3IgcHJlZmVyZW5jZXMgdG94YmxvY2sgYW55IGZ1cnRoZXIgbm9taW5hdGlvbnMuTHNldF9zdGFraW5nX2NvbmZpZ3MgAUhtaW5fbm9taW5hdG9yX2JvbmTZBgFYQ29uZmlnT3A8QmFsYW5jZU9mPFQ+PgABSG1pbl92YWxpZGF0b3JfYm9uZNkGAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFMbWF4X25vbWluYXRvcl9jb3VudN0GATRDb25maWdPcDx1MzI+AAFMbWF4X3ZhbGlkYXRvcl9jb3VudN0GATRDb25maWdPcDx1MzI+AAE8Y2hpbGxfdGhyZXNob2xk4QYBRENvbmZpZ09wPFBlcmNlbnQ+AAE4bWluX2NvbW1pc3Npb27lBgFEQ29uZmlnT3A8UGVyYmlsbD4AAUhtYXhfc3Rha2VkX3Jld2FyZHPhBgFEQ29uZmlnT3A8UGVyY2VudD4AAWBhcmVfbm9taW5hdG9yc19zbGFzaGFibGXpBgE4Q29uZmlnT3A8Ym9vbD4AFkSsVXBkYXRlIHRoZSB2YXJpb3VzIHN0YWtpbmcgY29uZmlndXJhdGlvbnMgLgAlASogYG1pbl9ub21pbmF0b3JfYm9uZGA6IFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIG5lZWRlZCB0byBiZSBhIG5vbWluYXRvci4lASogYG1pbl92YWxpZGF0b3JfYm9uZGA6IFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIG5lZWRlZCB0byBiZSBhIHZhbGlkYXRvci5VASogYG1heF9ub21pbmF0b3JfY291bnRgOiBUaGUgbWF4IG51bWJlciBvZiB1c2VycyB3aG8gY2FuIGJlIGEgbm9taW5hdG9yIGF0IG9uY2UuIFdoZW6YICBzZXQgdG8gYE5vbmVgLCBubyBsaW1pdCBpcyBlbmZvcmNlZC5VASogYG1heF92YWxpZGF0b3JfY291bnRgOiBUaGUgbWF4IG51bWJlciBvZiB1c2VycyB3aG8gY2FuIGJlIGEgdmFsaWRhdG9yIGF0IG9uY2UuIFdoZW6YICBzZXQgdG8gYE5vbmVgLCBubyBsaW1pdCBpcyBlbmZvcmNlZC5ZASogYGNoaWxsX3RocmVzaG9sZGA6IFRoZSByYXRpbyBvZiBgbWF4X25vbWluYXRvcl9jb3VudGAgb3IgYG1heF92YWxpZGF0b3JfY291bnRgIHdoaWNoGQEgIHNob3VsZCBiZSBmaWxsZWQgaW4gb3JkZXIgZm9yIHRoZSBgY2hpbGxfb3RoZXJgIHRyYW5zYWN0aW9uIHRvIHdvcmsuYQEqIGBtaW5fY29tbWlzc2lvbmA6IFRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgZWFjaCB2YWxpZGF0b3JzIG11c3QgbWFpbnRhaW4uVQEgIFRoaXMgaXMgY2hlY2tlZCBvbmx5IHVwb24gY2FsbGluZyBgdmFsaWRhdGVgLiBFeGlzdGluZyB2YWxpZGF0b3JzIGFyZSBub3QgYWZmZWN0ZWQuAMRSdW50aW1lT3JpZ2luIG11c3QgYmUgUm9vdCB0byBjYWxsIHRoaXMgZnVuY3Rpb24uADUBTk9URTogRXhpc3Rpbmcgbm9taW5hdG9ycyBhbmQgdmFsaWRhdG9ycyB3aWxsIG5vdCBiZSBhZmZlY3RlZCBieSB0aGlzIHVwZGF0ZS4RAXRvIGtpY2sgcGVvcGxlIHVuZGVyIHRoZSBuZXcgbGltaXRzLCBgY2hpbGxfb3RoZXJgIHNob3VsZCBiZSBjYWxsZWQuLGNoaWxsX290aGVyBAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAF2hBAURlY2xhcmUgYSBgY29udHJvbGxlcmAgdG8gc3RvcCBwYXJ0aWNpcGF0aW5nIGFzIGVpdGhlciBhIHZhbGlkYXRvciBvciBub21pbmF0b3IuANhFZmZlY3RzIHdpbGwgYmUgZmVsdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGVyYS4AQQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXywgYnV0IGNhbiBiZSBjYWxsZWQgYnkgYW55b25lLgBZAUlmIHRoZSBjYWxsZXIgaXMgdGhlIHNhbWUgYXMgdGhlIGNvbnRyb2xsZXIgYmVpbmcgdGFyZ2V0ZWQsIHRoZW4gbm8gZnVydGhlciBjaGVja3MgYXJl2GVuZm9yY2VkLCBhbmQgdGhpcyBmdW5jdGlvbiBiZWhhdmVzIGp1c3QgbGlrZSBgY2hpbGxgLgBdAUlmIHRoZSBjYWxsZXIgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGNvbnRyb2xsZXIgYmVpbmcgdGFyZ2V0ZWQsIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczBtdXN0IGJlIG1ldDoAHQEqIGBjb250cm9sbGVyYCBtdXN0IGJlbG9uZyB0byBhIG5vbWluYXRvciB3aG8gaGFzIGJlY29tZSBub24tZGVjb2RhYmxlLAAMT3I6AD0BKiBBIGBDaGlsbFRocmVzaG9sZGAgbXVzdCBiZSBzZXQgYW5kIGNoZWNrZWQgd2hpY2ggZGVmaW5lcyBob3cgY2xvc2UgdG8gdGhlIG1heFUBICBub21pbmF0b3JzIG9yIHZhbGlkYXRvcnMgd2UgbXVzdCByZWFjaCBiZWZvcmUgdXNlcnMgY2FuIHN0YXJ0IGNoaWxsaW5nIG9uZS1hbm90aGVyLlkBKiBBIGBNYXhOb21pbmF0b3JDb3VudGAgYW5kIGBNYXhWYWxpZGF0b3JDb3VudGAgbXVzdCBiZSBzZXQgd2hpY2ggaXMgdXNlZCB0byBkZXRlcm1pbmWQICBob3cgY2xvc2Ugd2UgYXJlIHRvIHRoZSB0aHJlc2hvbGQuXQEqIEEgYE1pbk5vbWluYXRvckJvbmRgIGFuZCBgTWluVmFsaWRhdG9yQm9uZGAgbXVzdCBiZSBzZXQgYW5kIGNoZWNrZWQsIHdoaWNoIGRldGVybWluZXNRASAgaWYgdGhpcyBpcyBhIHBlcnNvbiB0aGF0IHNob3VsZCBiZSBjaGlsbGVkIGJlY2F1c2UgdGhleSBoYXZlIG5vdCBtZXQgdGhlIHRocmVzaG9sZEAgIGJvbmQgcmVxdWlyZWQuAFUBVGhpcyBjYW4gYmUgaGVscGZ1bCBpZiBib25kIHJlcXVpcmVtZW50cyBhcmUgdXBkYXRlZCwgYW5kIHdlIG5lZWQgdG8gcmVtb3ZlIG9sZCB1c2Vyc5h3aG8gZG8gbm90IHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLmhmb3JjZV9hcHBseV9taW5fY29tbWlzc2lvbgQBPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAAYEDkBQ2xhbXBzIGEgdmFsaWRhdG9yJ3MgY29tbWlzc2lvbiB0byB0aGUgYFtNaW5Db21taXNzaW9uLCBNYXhDb21taXNzaW9uXWAgcmFuZ2UuADkBTmFtZWQgYGZvcmNlX2FwcGx5X21pbl9jb21taXNzaW9uYCBmb3IgbGVnYWN5IHJlYXNvbnMg4oCUIGl0IGFsc28gZW5mb3JjZXMgdGhljG1heGltdW0uIEFueSBhY2NvdW50IGNhbiBjYWxsIHRoaXMuSHNldF9taW5fY29tbWlzc2lvbgQBDG5ldx0FARxQZXJiaWxsABkQJQFTZXRzIHRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgZWFjaCB2YWxpZGF0b3JzIG11c3QgbWFpbnRhaW4uAFkBVGhpcyBjYWxsIGhhcyBsb3dlciBwcml2aWxlZ2UgcmVxdWlyZW1lbnRzIHRoYW4gYHNldF9zdGFraW5nX2NvbmZpZ2AgYW5kIGNhbiBiZSBjYWxsZWTMYnkgdGhlIGBUOjpBZG1pbk9yaWdpbmAuIFJvb3QgY2FuIGFsd2F5cyBjYWxsIHRoaXMuWHBheW91dF9zdGFrZXJzX2J5X3BhZ2UMATx2YWxpZGF0b3Jfc3Rhc2gEATBUOjpBY2NvdW50SWQAAQxlcmE4ASBFcmFJbmRleAABEHBhZ2U4ARBQYWdlABpUMQFQYXkgb3V0IGEgcGFnZSBvZiB0aGUgc3Rha2VycyBiZWhpbmQgYSB2YWxpZGF0b3IgZm9yIHRoZSBnaXZlbiBlcmEgYW5kIHBhZ2UuAOgtIGB2YWxpZGF0b3Jfc3Rhc2hgIGlzIHRoZSBzdGFzaCBhY2NvdW50IG9mIHRoZSB2YWxpZGF0b3IuMQEtIGBlcmFgIG1heSBiZSBhbnkgZXJhIGJldHdlZW4gYFtjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGg7IGN1cnJlbnRfZXJhXWAuMQEtIGBwYWdlYCBpcyB0aGUgcGFnZSBpbmRleCBvZiBub21pbmF0b3JzIHRvIHBheSBvdXQgd2l0aCB2YWx1ZSBiZXR3ZWVuIDAgYW5ksCAgYG51bV9ub21pbmF0b3JzIC8gVDo6TWF4RXhwb3N1cmVQYWdlU2l6ZWAuAFUBVGhlIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4gQW55IGFjY291bnQgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiwgZXZlbiBpZnRpdCBpcyBub3Qgb25lIG9mIHRoZSBzdGFrZXJzLgA9AUlmIGEgdmFsaWRhdG9yIGhhcyBtb3JlIHRoYW4gW2BDb25maWc6Ok1heEV4cG9zdXJlUGFnZVNpemVgXSBub21pbmF0b3JzIGJhY2tpbmcpAXRoZW0sIHRoZW4gdGhlIGxpc3Qgb2Ygbm9taW5hdG9ycyBpcyBwYWdlZCwgd2l0aCBlYWNoIHBhZ2UgYmVpbmcgY2FwcGVkIGF0VQFbYENvbmZpZzo6TWF4RXhwb3N1cmVQYWdlU2l6ZWBdLiBJZiBhIHZhbGlkYXRvciBoYXMgbW9yZSB0aGFuIG9uZSBwYWdlIG9mIG5vbWluYXRvcnMsSQF0aGUgY2FsbCBuZWVkcyB0byBiZSBtYWRlIGZvciBlYWNoIHBhZ2Ugc2VwYXJhdGVseSBpbiBvcmRlciBmb3IgYWxsIHRoZSBub21pbmF0b3JzVQFiYWNraW5nIGEgdmFsaWRhdG9yIHRvIHJlY2VpdmUgdGhlIHJld2FyZC4gVGhlIG5vbWluYXRvcnMgYXJlIG5vdCBzb3J0ZWQgYWNyb3NzIHBhZ2VzYQFhbmQgc28gaXQgc2hvdWxkIG5vdCBiZSBhc3N1bWVkIHRoZSBoaWdoZXN0IHN0YWtlciB3b3VsZCBiZSBvbiB0aGUgdG9wbW9zdCBwYWdlIGFuZCB2aWNlSQF2ZXJzYS4gSWYgcmV3YXJkcyBhcmUgbm90IGNsYWltZWQgaW4gW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMsIHRoZXkgYXJlIGxvc3QuAEkBVGhlIHZhbGlkYXRvcidzIG93biByZXdhcmQgKGNvbW1pc3Npb24gKyBvd24tc3Rha2Ugc2hhcmUpIGlzIHByb3JhdGVkIGFjcm9zcyBwYWdlc0kBcHJvcG9ydGlvbmFsIHRvIGVhY2ggcGFnZSdzIHN0YWtlLiBUaGUgZnVsbCB2YWxpZGF0b3IgcmV3YXJkIGlzIHRoZSBzdW0gYWNyb3NzIGFsbBhwYWdlcy4wdXBkYXRlX3BheWVlBAEoY29udHJvbGxlcgQBMFQ6OkFjY291bnRJZAAbGOBNaWdyYXRlcyBhbiBhY2NvdW50J3MgYFJld2FyZERlc3RpbmF0aW9uOjpDb250cm9sbGVyYCB0b6RgUmV3YXJkRGVzdGluYXRpb246OkFjY291bnQoY29udHJvbGxlcilgLgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgAxAVRoaXMgd2lsbCB3YWl2ZSB0aGUgdHJhbnNhY3Rpb24gZmVlIGlmIHRoZSBgcGF5ZWVgIGlzIHN1Y2Nlc3NmdWxseSBtaWdyYXRlZC5oZGVwcmVjYXRlX2NvbnRyb2xsZXJfYmF0Y2gEASxjb250cm9sbGVyc+0GAfRCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgVDo6TWF4Q29udHJvbGxlcnNJbkRlcHJlY2F0aW9uQmF0Y2g+ABwcXQFVcGRhdGVzIGEgYmF0Y2ggb2YgY29udHJvbGxlciBhY2NvdW50cyB0byB0aGVpciBjb3JyZXNwb25kaW5nIHN0YXNoIGFjY291bnQgaWYgdGhleSBhcmVhAW5vdCB0aGUgc2FtZS4gSWdub3JlcyBhbnkgY29udHJvbGxlciBhY2NvdW50cyB0aGF0IGRvIG5vdCBleGlzdCwgYW5kIGRvZXMgbm90IG9wZXJhdGUgaWa4dGhlIHN0YXNoIGFuZCBjb250cm9sbGVyIGFyZSBhbHJlYWR5IHRoZSBzYW1lLgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgC0VGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIGBUOjpBZG1pbk9yaWdpbmAuOHJlc3RvcmVfbGVkZ2VyEAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAAUBtYXliZV9jb250cm9sbGVyjQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEsbWF5YmVfdG90YWxJBAFQT3B0aW9uPEJhbGFuY2VPZjxUPj4AATxtYXliZV91bmxvY2tpbmfxBgEVAU9wdGlvbjxCb3VuZGVkVmVjPFVubG9ja0NodW5rPEJhbGFuY2VPZjxUPj4sIFQ6OgpNYXhVbmxvY2tpbmdDaHVua3M+PgAdLAUBUmVzdG9yZXMgdGhlIHN0YXRlIG9mIGEgbGVkZ2VyIHdoaWNoIGlzIGluIGFuIGluY29uc2lzdGVudCBzdGF0ZS4A3FRoZSByZXF1aXJlbWVudHMgdG8gcmVzdG9yZSBhIGxlZGdlciBhcmUgdGhlIGZvbGxvd2luZzpkKiBUaGUgc3Rhc2ggaXMgYm9uZGVkOyBvcg0BKiBUaGUgc3Rhc2ggaXMgbm90IGJvbmRlZCBidXQgaXQgaGFzIGEgc3Rha2luZyBsb2NrIGxlZnQgYmVoaW5kOyBvciUBKiBJZiB0aGUgc3Rhc2ggaGFzIGFuIGFzc29jaWF0ZWQgbGVkZ2VyIGFuZCBpdHMgc3RhdGUgaXMgaW5jb25zaXN0ZW50OyBvch0BKiBJZiB0aGUgbGVkZ2VyIGlzIG5vdCBjb3JydXB0ZWQgKmJ1dCogaXRzIHN0YWtpbmcgbG9jayBpcyBvdXQgb2Ygc3luYy4AYQFUaGUgYG1heWJlXypgIGlucHV0IHBhcmFtZXRlcnMgd2lsbCBvdmVyd3JpdGUgdGhlIGNvcnJlc3BvbmRpbmcgZGF0YSBhbmQgbWV0YWRhdGEgb2YgdGhlWQFsZWRnZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdGFzaC4gSWYgdGhlIGlucHV0IHBhcmFtZXRlcnMgYXJlIG5vdCBzZXQsIHRoZSBsZWRnZXIgd2lsbJBiZSByZXNldCB2YWx1ZXMgZnJvbSBvbi1jaGFpbiBzdGF0ZS5AbWlncmF0ZV9jdXJyZW5jeQQBFHN0YXNoBAEwVDo6QWNjb3VudElkAB4c2E1pZ3JhdGVzIHBlcm1pc3Npb25sZXNzbHkgYSBzdGFzaCBmcm9tIGxvY2tzIHRvIGhvbGRzLgBJAVRoaXMgcmVtb3ZlcyB0aGUgb2xkIGxvY2sgb24gdGhlIHN0YWtlIGFuZCBjcmVhdGVzIGEgaG9sZCBvbiBpdCBhdG9taWNhbGx5LiBJZiBhbGxhAXN0YWtlIGNhbm5vdCBiZSBoZWxkLCB0aGUgYmVzdCBlZmZvcnQgaXMgbWFkZSB0byBob2xkIGFzIG11Y2ggYXMgcG9zc2libGUuIFRoZSByZW1haW5pbmeEc3Rha2UgaXMgcmVtb3ZlZCBmcm9tIHRoZSBsZWRnZXIuAMRUaGUgZmVlIGlzIHdhaXZlZCBpZiB0aGUgbWlncmF0aW9uIGlzIHN1Y2Nlc3NmdWwuLGFwcGx5X3NsYXNoCAEkc2xhc2hfZXJhOAEgRXJhSW5kZXgAASRzbGFzaF9rZXkBBwFwKFQ6OkFjY291bnRJZCwgUGVyYmlsbCwgdTMyKQAfhB0BTWFudWFsbHkgYW5kIHBlcm1pc3Npb25sZXNzbHkgYXBwbGllcyBhIGRlZmVycmVkIHNsYXNoIGZvciBhIGdpdmVuIGVyYS4AXQFOb3JtYWxseSwgc2xhc2hlcyBhcmUgYXV0b21hdGljYWxseSBhcHBsaWVkIHNob3J0bHkgYWZ0ZXIgdGhlIHN0YXJ0IG9mIHRoZSBgc2xhc2hfZXJhYC5ZAVRoZSBhdXRvbWF0aWMgYXBwbGljYXRpb24gb2Ygc2xhc2hlcyBpcyBoYW5kbGVkIGJ5IHRoZSBwYWxsZXQncyBpbnRlcm5hbCBsb2dpYywgYW5kIGl0zHRyaWVzIHRvIGFwcGx5IG9uZSBzbGFzaCBwYWdlIHBlciBibG9jayBvZiB0aGUgZXJhLlUBSWYgZm9yIHNvbWUgcmVhc29uLCBvbmUgZXJhIGlzIG5vdCBlbm91Z2ggZm9yIGFwcGx5aW5nIGFsbCBzbGFzaCBwYWdlcywgdGhlIHJlbWFpbmluZ9xzbGFzaGVzIG5lZWQgdG8gYmUgbWFudWFsbHkgKHBlcm1pc3Npb25sZXNzbHkpIGFwcGxpZWQuAEkBRm9yIGEgZ2l2ZW4gZXJhIHgsIGlmIGF0IGVyYSB4KzEsIHNsYXNoZXMgYXJlIHN0aWxsIHVuYXBwbGllZCwgYWxsIHdpdGhkcmF3YWxzIGdldCEBYmxvY2tlZCwgYW5kIHRoZXNlIG5lZWQgdG8gYmUgbWFudWFsbHkgYXBwbGllZCBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uTQFUaGlzIGZ1bmN0aW9uIGV4aXN0cyBhcyBhICoqZmFsbGJhY2sgbWVjaGFuaXNtKiogZm9yIHRoaXMgZXh0cmVtZSBzaXR1YXRpb24sIGJ1dCB3ZcxuZXZlciBleHBlY3QgdG8gZW5jb3VudGVyIHRoaXMgaW4gbm9ybWFsIHNjZW5hcmlvcy4AYQFUaGUgcGFyYW1ldGVycyBmb3IgdGhpcyBjYWxsIGNhbiBiZSBxdWVyaWVkIGJ5IGxvb2tpbmcgYXQgdGhlIGBVbmFwcGxpZWRTbGFzaGVzYCBzdG9yYWdljGZvciBlcmFzIG9sZGVyIHRoYW4gdGhlIGFjdGl2ZSBlcmEuADQjIyBQYXJhbWV0ZXJzLQEtIGBzbGFzaF9lcmFgOiBUaGUgc3Rha2luZyBlcmEgaW4gd2hpY2ggdGhlIHNsYXNoIHdhcyBvcmlnaW5hbGx5IHNjaGVkdWxlZC4lAS0gYHNsYXNoX2tleWA6IEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzbGFzaCwgcmVwcmVzZW50ZWQgYXMgYSB0dXBsZTr4ICAtIGBzdGFzaGA6IFRoZSBzdGFzaCBhY2NvdW50IG9mIHRoZSB2YWxpZGF0b3IgYmVpbmcgc2xhc2hlZC4FASAgLSBgc2xhc2hfZnJhY3Rpb25gOiBUaGUgZnJhY3Rpb24gb2YgdGhlIHN0YWtlIHRoYXQgd2FzIHNsYXNoZWQuBQEgIC0gYHBhZ2VfaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIGV4cG9zdXJlIHBhZ2UgYmVpbmcgcHJvY2Vzc2VkLgAsIyMgQmVoYXZpb3LoLSBUaGUgZnVuY3Rpb24gaXMgKipwZXJtaXNzaW9ubGVzcyoq4oCUYW55b25lIGNhbiBjYWxsIGl0LvAtIFRoZSBgc2xhc2hfZXJhYCAqKm11c3QgYmUgdGhlIGN1cnJlbnQgZXJhIG9yIGEgcGFzdCBlcmEqKi5sSWYgaXQgaXMgaW4gdGhlIGZ1dHVyZSwgdGhliCAgY2FsbCBmYWlscyB3aXRoIGBFcmFOb3RTdGFydGVkYC7kLSBUaGUgZmVlIGlzIHdhaXZlZCBpZiB0aGUgc2xhc2ggaXMgc3VjY2Vzc2Z1bGx5IGFwcGxpZWQuAFQjIyBGdXR1cmUgSW1wcm92ZW1lbnRhAS0gSW1wbGVtZW50IGFuICoqb2ZmLWNoYWluIHdvcmtlciAoT0NXKSB0YXNrKiogdG8gYXV0b21hdGljYWxseSBhcHBseSBzbGFzaGVzIHdoZW4gdGhlcmW4ICBpcyB1bnVzZWQgYmxvY2sgc3BhY2UsIGltcHJvdmluZyBlZmZpY2llbmN5LjhwcnVuZV9lcmFfc3RlcAQBDGVyYTgBIEVyYUluZGV4ACAsYQFQZXJmb3JtIG9uZSBzdGVwIG9mIGVyYSBwcnVuaW5nIHRvIHByZXZlbnQgUG9WIHNpemUgZXhoYXVzdGlvbiBmcm9tIHVuYm91bmRlZCBkZWxldGlvbnMuADEBVGhpcyBleHRyaW5zaWMgZW5hYmxlcyBwZXJtaXNzaW9ubGVzcyBsYXp5IHBydW5pbmcgb2YgZXJhIGRhdGEgYnkgcGVyZm9ybWluZy0BaW5jcmVtZW50YWwgZGVsZXRpb24gb2Ygc3RvcmFnZSBpdGVtcy4gRWFjaCBjYWxsIHByb2Nlc3NlcyBhIGxpbWl0ZWQgbnVtYmVyJQFvZiBpdGVtcyBiYXNlZCBvbiBhdmFpbGFibGUgYmxvY2sgd2VpZ2h0IHRvIGF2b2lkIGV4Y2VlZGluZyBibG9jayBsaW1pdHMuADUBUmV0dXJucyBgUGF5czo6Tm9gIHdoZW4gd29yayBpcyBwZXJmb3JtZWQgdG8gaW5jZW50aXZpemUgcmVndWxhciBtYWludGVuYW5jZS4FAUFueW9uZSBjYW4gY2FsbCB0aGlzIHRvIGhlbHAgbWFpbnRhaW4gdGhlIGNoYWluJ3Mgc3RvcmFnZSBoZWFsdGguAA0BVGhlIGVyYSBtdXN0IGJlIGVsaWdpYmxlIGZvciBwcnVuaW5nIChvbGRlciB0aGFuIEhpc3RvcnlEZXB0aCArIDEpLjkBQ2hlY2sgYEVyYVBydW5pbmdTdGF0ZWAgc3RvcmFnZSB0byBzZWUgaWYgYW4gZXJhIG5lZWRzIHBydW5pbmcgYmVmb3JlIGNhbGxpbmcuSHNldF9tYXhfY29tbWlzc2lvbgQBDG5ldx0FARxQZXJiaWxsACEM0FNldHMgdGhlIG1heGltdW0gY29tbWlzc2lvbiB0aGF0IHZhbGlkYXRvcnMgY2FuIHNldC4AtFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBgVDo6QWRtaW5PcmlnaW5gLqRzZXRfdmFsaWRhdG9yX3NlbGZfc3Rha2VfaW5jZW50aXZlX2NvbmZpZwwBSG9wdGltdW1fc2VsZl9zdGFrZdkGAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFMaGFyZF9jYXBfc2VsZl9zdGFrZdkGAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFcc2VsZl9zdGFrZV9zbG9wZV9mYWN0b3LlBgFEQ29uZmlnT3A8UGVyYmlsbD4AIhTgQ29uZmlndXJlIHRoZSB2YWxpZGF0b3Igc2VsZi1zdGFrZSBpbmNlbnRpdmUgcGFyYW1ldGVycy4AtFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBgVDo6QWRtaW5PcmlnaW5gLgABAUNoYW5nZXMgdGFrZSBlZmZlY3QgaW4gdGhlIG5leHQgZXJhIHdoZW4gcmV3YXJkcyBhcmUgY2FsY3VsYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvQYIUHBhbGxldF9zdGFraW5nX2FzeW5jRFJld2FyZERlc3RpbmF0aW9uBCRBY2NvdW50SWQBBAEUGFN0YWtlZAAAABRTdGFzaAABAChDb250cm9sbGVyAAIAHEFjY291bnQEAAQBJEFjY291bnRJZAADABBOb25lAAQAAMEGCFBwYWxsZXRfc3Rha2luZ19hc3luYzhWYWxpZGF0b3JQcmVmcwAACAEoY29tbWlzc2lvbsUGARxQZXJiaWxsAAEcYmxvY2tlZFkBARBib29sAADFBgAABh0FAMkGAAACAADNBgw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcmNlbnQAAAQADAEIdTgAANEGAAAC1QYA1QYAAAQIBB0FANkGEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUAVUBAQwQTm9vcAAAAAxTZXQEAFUBAQRUAAEAGFJlbW92ZQACAADdBhBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldCBDb25maWdPcAQEVAE4AQwQTm9vcAAAAAxTZXQEADgBBFQAAQAYUmVtb3ZlAAIAAOEGEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUAc0GAQwQTm9vcAAAAAxTZXQEAM0GAQRUAAEAGFJlbW92ZQACAADlBhBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldCBDb25maWdPcAQEVAEdBQEMEE5vb3AAAAAMU2V0BAAdBQEEVAABABhSZW1vdmUAAgAA6QYQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQgQ29uZmlnT3AEBFQBWQEBDBBOb29wAAAADFNldAQAWQEBBFQAAQAYUmVtb3ZlAAIAAO0GDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAF0BARhWZWM8VD4AAPEGBBhPcHRpb24EBFQB9QYBCBBOb25lAAAAEFNvbWUEAPUGAAABAAD1BgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAfkGBFMAAAQA/QYBGFZlYzxUPgAA+QYMUHBhbGxldF9zdGFraW5nX2FzeW5jGGxlZGdlcixVbmxvY2tDaHVuawQcQmFsYW5jZQFVAQAIARR2YWx1ZVEBARxCYWxhbmNlAAEMZXJhYAEgRXJhSW5kZXgAAP0GAAAC+QYAAQcAAAQMBB0FOAAFBwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchhwYWxsZXQQQ2FsbAQEVAABEFRpbml0aWFsaXplX3Jpbmdfcm9vdHMIATRyaW5nX2V4cG9uZW50CQcBMFJpbmdFeHBvbmVudAABFHJvb3RzDQcBXFJpbmdSb290VXBkYXRlc0JhdGNoPFQ+AAAgRQFTdG9yZXMgdGhlIGluaXRpYWwgcmluZyByb290cyByZWNlaXZlZCBmcm9tIHRoZSBub3RpZmllciB1cG9uIHN1YnNjcmlwdGlvbiBzdGFydC5BAUFjY2VwdHMgbXVsdGktcGFydCBjb250aW51YXRpb25zIChzYW1lIHNlcXVlbmNlKS4gUmVqZWN0cyBjYWxscyB3aXRoIGEgZGlmZmVyZW50UQFzZXF1ZW5jZSB3aGlsZSBzdWJzY3JpcHRpb24gaXMgYEFjdGl2ZWAg4oCUIGEgc3Vic2NyaXB0aW9uIG11c3QgYmUgdGVybWluYXRlZCBmaXJzdC4dAUNhbiBvbmx5IGJlIGNhbGxlZCBieSBub3RpZmllciBYQ00gb3JpZ2luICh2aWEgYEVuc3VyZU5vdGlmaWVyT3JpZ2luYCkuADQjIyBQYXJhbWV0ZXJzgC0gYG9yaWdpbmA6IE5vdGlmaWVyIFhDTSBvcmlnaW4unC0gYHJvb3RzYDogSW5pdGlhbCBiYXRjaCBvZiByaW5nIHJvb3RzLlBwcm9jZXNzX3JpbmdfdXBkYXRlcwQBFGJhdGNoDQcBXFJpbmdSb290VXBkYXRlc0JhdGNoPFQ+AAEU2FByb2Nlc3MgcmluZyByb290cyB1cGRhdGVzIHJlY2VpdmVkIGZyb20gdGhlIG5vdGlmaWVyLgA0IyMgUGFyYW1ldGVyc9QtIGBvcmlnaW5gOiBNdXN0IGJlIHRoZSBYQ00gb3JpZ2luIGZyb20gdGhlIG5vdGlmaWVyLsQtIGBiYXRjaGA6IEJhdGNoIG9mIHJpbmcgcm9vdCB1cGRhdGVzIHRvIHByb2Nlc3MuWHRlcm1pbmF0ZV9zdWJzY3JpcHRpb24AAihwVGVybWluYXRlcyB0aGUgc3Vic2NyaXB0aW9uLgAtAUFjY2VwdHMgZWl0aGVyIG5vdGlmaWVyIG9yaWdpbiAoYEVuc3VyZU5vdGlmaWVyT3JpZ2luYCkgb3IgbG9jYWwgZ292ZXJuYW5jZRUBb3JpZ2luIChgRW5zdXJlVGVybWluYXRpb25PcmlnaW5gKS4gV2hlbiBjYWxsZWQgbG9jYWxseSwgc2VuZHMgYW4gWENNLQF1bnN1YnNjcmliZSBtZXNzYWdlIHRvIHRoZSBub3RpZmllci4gV2hlbiBjYWxsZWQgZnJvbSB0aGUgbm90aWZpZXIgKGUuZy4gb24NAWdvdmVybmFuY2UgdW5zdWJzY3JpYmUpLCBubyBYQ00gaXMgc2VudCBiYWNrLiBJZGVtcG90ZW50IGlmIGFscmVhZHksdGVybWluYXRlZC4ANCMjIFBhcmFtZXRlcnPoLSBgb3JpZ2luYDogTm90aWZpZXIgWENNIG9yaWdpbiBvciByb290L2dvdmVybmFuY2Ugb3JpZ2luLlByZXBsYXlfbWlzc2luZ19yb290cwgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEcaW5kaWNlcyUHAdhCb3VuZGVkVmVjPFJpbmdJbmRleCwgVDo6TWF4TWlzc2luZ1Jvb3RzUGVyQ29sbGVjdGlvbj4AAxT0U2VuZHMgcmVwbGF5IHJlcXVlc3RzIHRvIHRoZSBub3RpZmllciBmb3IgbWlzc2luZyByaW5nIHJvb3RzLgAhAVN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyIGFzIGFuIGF1dGhvcml6ZWQgdHJhbnNhY3Rpb24uIFZhbGlkYXRlcykBdGhhdCB0aGUgc3Vic2NyaXB0aW9uIGlzIGFjdGl2ZSBhbmQgdGhhdCB0aGUgcHJvdmlkZWQgaW5kaWNlcyBhcmUgYWN0dWFsbHmsbWlzc2luZyBiZWZvcmUgc2VuZGluZyBYQ00gcmVwbGF5IHJlcXVlc3RzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4JBxA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eTBSaW5nRXhwb25lbnQAAQwQUjJlOQAJABRSMmUxMAAKABRSMmUxNAAOAAANBww0aW5kaXZfc3VwcG9ydGxtZW1iZXJzX25vdGlmaWVyX3N1YnNjcmliZXJQUmluZ1Jvb3RVcGRhdGVzQmF0Y2gEBFQAABQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEgc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgABLHNvdXJjZV90aW1lKAEMdTY0AAEcdXBkYXRlcxEHAdBCb3VuZGVkVmVjPFJpbmdSb290VXBkYXRlPFQ+LCBUOjpNYXhVcGRhdGVzUGVyQmF0Y2g+AAE8bmV4dF9yaW5nX2luZGV4OAEMdTMyAAARBwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUARUHBFMAAAQAIQcBGFZlYzxUPgAAFQcMNGluZGl2X3N1cHBvcnRsbWVtYmVyc19ub3RpZmllcl9zdWJzY3JpYmVyOFJpbmdSb290VXBkYXRlBARUAAAIAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEIb3AZBwFgUmluZ1Jvb3RPcDxNZW1iZXJzT2Y8VD4+AAAZBww0aW5kaXZfc3VwcG9ydGxtZW1iZXJzX25vdGlmaWVyX3N1YnNjcmliZXIoUmluZ1Jvb3RPcAQEUgEdBwEIFEJ1aWx0CAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEQcm9vdB0HAQRSAAAAHERlbGV0ZWQAAQAAHQcMKHZlcmlmaWFibGUQcmluZ0RNZW1iZXJzQ29tbWl0bWVudAADAAMAAAwAIQcAAAIVBwAlBwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATgEUwAABABBBAEYVmVjPFQ+AAApBwxsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzGHBhbGxldBBDYWxsBARUAAEUTHVuc2V0X2FsaWFzX2FjY291bnQAARCgUmVtb3ZlIHRoZSBhbGlhcyBtYXBwaW5nIGZvciB0aGUgc2lnbmVyLgA1AVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYnkgdGhlIGFjY291bnQgY3VycmVudGx5IGJvdW5kIHRvIGEgcmluZyBhbGlhcy4gVGhlmG1hcHBpbmcgaXMgcmVtb3ZlZCBpbiBib3RoIGRpcmVjdGlvbnMuRHNldF9hbGlhc19hY2NvdW50GAEUcHJvb2YtBwEoUHJvb2ZPZjxUPgABKGNvbGxlY3Rpb24IAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABNHJpbmdfcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEcY29udGV4dAgBHENvbnRleHQAAThwcm9vZl92YWxpZF9hdCgBDHU2NAADMOhMaW5rIGFuIGFjY291bnQgdG8gYSByaW5nIGFsaWFzLCBvbiBwYXltZW50IG9mIGEgUEdBUyBmZWUuADUBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZDsgdGhlIHNpZ25lciBiZWNvbWVzIHRoZSBib3VuZCBhY2NvdW50LiBUaGUgUEdBUyBmZWU5AShbYEFsaWFzRmVlYF0pIGlzIGJ1cm5lZCBmcm9tIHRoZSBzaWduZXIncyBQR0FTIGJhbGFuY2UuIFRoZSBhbGlhcyBtdXN0IHZlcmlmeUEBYWdhaW5zdCB0aGUgc3VwcGxpZWQgYGNvbGxlY3Rpb25gL2ByaW5nX2luZGV4YC9gcmluZ19yZXZpc2lvbmAgaW4gYGNvbnRleHRgLiBUaGW8Y29sbGVjdGlvbiBtdXN0IHN0aWxsIGJlIFBlb3BsZSBvciBQZW9wbGUgTGl0ZS4ASQFJZiBhIGRpZmZlcmVudCBhY2NvdW50IGlzIGFscmVhZHkgYm91bmQgdG8gdGhlIHNhbWUgYWxpYXMgdW5kZXIgdGhpcyBjb250ZXh0LCB0aGF0+G1hcHBpbmcgaXMgZHJvcHBlZCBhbmQgdGhlIHN3YXAgaXMgcGFpZCBmb3IgYnkgdGhlIG5ldyBzaWduZXIuACkBUmUtcHJvdmluZyB0aGUgc2FtZSBhbGlhcyB1bmRlciBhIGZyZXNoZXIgcmluZyByZXZpc2lvbiBzaG91bGQgaW5zdGVhZCB1c2XEW2BQYWxsZXQ6OnJlcHJvdmVfYWxpYXNfYWNjb3VudGBdLCB3aGljaCBpcyBmcmVlLlRyZXByb3ZlX2FsaWFzX2FjY291bnQQARRwcm9vZi0HAShQcm9vZk9mPFQ+AAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABNHJpbmdfcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAE4cHJvb2ZfdmFsaWRfYXQoAQx1NjQABBxhAVJlLXByb3ZlIHRoZSBob2xkZXIncyBhbGlhcyBhZ2FpbnN0IGEgZnJlc2hlciByaW5nIHJldmlzaW9uLCBmcmVlIG9mIGNoYXJnZSBpbiBjYXNlIG9mIGFYc3VjY2Vzc2Z1bCBvcGVyYXRpb25zLgARAVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYW5kIG11c3QgYWxyZWFkeSBob2xkIGEgYWxpYXMgbWFwcGluZy4gVGhlGQFwcm9vZiBpcyB2ZXJpZmllZCBhZ2FpbnN0IHRoZSBzdG9yZWQgY29udGV4dDsgdGhlIHJlc3VsdGluZyBhbGlhcyBtdXN0EQFtYXRjaCB0aGUgc3RvcmVkIGFsaWFzLiBPbmx5IHRoZSBgcmV2aXNpb25gIGFuZCBgcmluZ2AgZmllbGRzIG9mIHRoZREBc3RvcmVkIG1hcHBpbmcgY2hhbmdlOyBjb2xsZWN0aW9uLCBjb250ZXh0LCBhbmQgYWxpYXMgYXJlIHByZXNlcnZlZC40c2V0X2FsaWFzX2ZlZQQBDGZlZVUBATBCYWxhbmNlT2Y8VD4ABRToU2V0IHRoZSBQR0FTIGZlZSBjaGFyZ2VkIGJ5IFtgUGFsbGV0OjpzZXRfYWxpYXNfYWNjb3VudGBdLgAVAU9yaWdpbiBtdXN0IGJlIFtgQ29uZmlnOjpGZWVNYW5hZ2VyT3JpZ2luYF0uIFRoZSBuZXcgZmVlIHJlcGxhY2VzIHRoZfxwcmV2aW91cyB2YWx1ZSAoaWYgYW55KS4gVGhlcmUgaXMgbm8gbWluaW11bSDigJQgc2V0IHRvIHplcm8gdG/kZWZmZWN0aXZlbHkgZGlzYWJsZSB0aGUgYnVybiB3aGlsZSBrZWVwaW5nIHRoZSBwYXRoIG9wZW4uUGNsZWFuX3VwX3N0YWxlX2FsaWFzCAEoY29sbGVjdGlvbggBKElkZW50aWZpZXIAAQhjYfEDATxDb250ZXh0dWFsQWxpYXMAAiSkUmVtb3ZlIGEgc3RhbGUgYWxpYXMgPC0+IGFjY291bnQgbWFwcGluZy4AuEFueW9uZSBjYW4gY2FsbCB0aGlzLiBBIG1hcHBpbmcgaXMgc3RhbGUgd2hlbjpJATEuIFRoZSByaW5nIHJldmlzaW9uIG5vIGxvbmdlciBtYXRjaGVzIHRoZSBhY2NvdW50IGFsaWFzIChpLmUuLCByaW5nIHdhcyByZWJ1aWx0KS64Mi4gVGhlIGFjY291bnQgYWxpYXMgcmVmZXJzIHRvIGEgZGVsZXRlZCByaW5nLgA9AUZvciAoMSksIHRoZSBtYXBwaW5nIGlzIG9ubHkgY29uc2lkZXJlZCBzdGFsZSBhZnRlciBhIGdyYWNlIHBlcmlvZCBoYXMgZWxhcHNlZC4ACQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHJlZnVuZGVkIG9uIHN1Y2Nlc3MgdG8gaW5jZW50aXZpemUgY2xlYW51cC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuLQcMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAAxBwxEaW5kaXZfcGFsbGV0X3BnYXMYcGFsbGV0EENhbGwEBFQAAQwoY2xhaW1fcGdhcwgBKHNsb3RfaW5kZXg4AQx1MzIAARh0YXJnZXQEATBUOjpBY2NvdW50SWQAACSQTWludCBQR0FTIGZvciBhIHZlcmlmaWVkIGNsYWltIHNsb3QuAFUBTXVzdCBiZSBzdWJtaXR0ZWQgd2l0aCB0aGUgW2BBc1BnYXNgXShleHRlbnNpb246OkFzUGdhcykgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uLCB3aGljaFEBdmVyaWZpZXMgdGhlIHJpbmctVlJGIHByb29mIGFuZCBwcm9kdWNlcyBhbiBbYE9yaWdpbjo6Q2xhaW1BbGlhc2BdLiBUaGUgb3V0ZXIgb3JpZ2luVQFtdXN0IGJlIGBOb25lYCAodGhlIGV4dGVuc2lvbiByZXBsYWNlcyBpdCB3aXRoIHRoZSBsb2NhbCBvcmlnaW4pOyBhbnkgb3RoZXIgb3JpZ2luIGlzJHJlamVjdGVkLgBZAWBzbG90X2luZGV4YCBpcyBwYXJ0IG9mIHRoZSBjYWxsIHBheWxvYWQgc28gdGhlIGV4dGVuc2lvbiBjYW4gZGVyaXZlIHRoZSBjbGFpbSBjb250ZXh0UQFvbi1jaGFpbiBhbmQgc28gdGhlIHByb29mIGJpbmRzIHRvIHRoZSByZXF1ZXN0ZWQgc2xvdCB2aWEgdGhlIGluaGVyaXRlZCBpbXBsaWNhdGlvbi5EY3JlYXRlX3BnYXNfYXNzZXQAAQhVAUNyZWF0ZSB0aGUgUEdBUyBhc3NldC4gVGhpcyBpcyBhIHBlcm1pc3Npb25sZXNzIGF1dGhvcml6ZWQgY2FsbCB0aGF0IGNhbiBvbmx5IHN1Y2NlZWSkaWYgdGhlIFBHQVMgYXNzZXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdC5gY2xlYW5fcGdhc19jbGFpbV9yZWNvcmRzCAEkZGF5X2luZGV4OAEMdTMyAAEsZmlyc3RfYWxpYXMIARRBbGlhcwACJORSZW1vdmUgb2xkIFBHQVMgY2xhaW0gcmVjb3JkcyBmb3IgYSBzcGVjaWZpYyBgZGF5X2luZGV4YC4ABQFUaGlzIGlzIGFuIGF1dGhvcml6ZWQgZXh0cmluc2ljIHN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLjUBT25seSByZWNvcmRzIGZyb20gZGF5cyB0aGF0IGhhdmUgZnVsbHkgZWxhcHNlZCAob3V0c2lkZSB0aGUgZ3JhY2Ugd2luZG93KSBjYW4pAWJlIGNsZWFuZWQuIFVwIHRvIFtgQ29uZmlnOjpNYXhQZ2FzQ2xhaW1SZWNvcmRDbGVhbnVwUGVyQ2FsbGBdIGVudHJpZXMgYXJlRHJlbW92ZWQgcGVyIGNhbGwuAGEBYGZpcnN0X2FsaWFzYCBpcyB0aGUgZmlyc3QgYWxpYXMgY3VycmVudGx5IHN0b3JlZCBmb3IgYGRheV9pbmRleGAgYW5kIGlzIGluY2x1ZGVkIGluIHRoZYB0YWdzIGZvciB0cmFuc2FjdGlvbiB1bmlxdWVuZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy41Bww0cGFsbGV0X3Jldml2ZRhwYWxsZXQQQ2FsbAQEVAABNDBldGhfdHJhbnNhY3QEARxwYXlsb2FkGAEcVmVjPHU4PgAAMC0BQSByYXcgRVZNIHRyYW5zYWN0aW9uLCB0eXBpY2FsbHkgZGlzcGF0Y2hlZCBieSBhbiBFdGhlcmV1bSBKU09OLVJQQyBzZXJ2ZXIuADAjIFBhcmFtZXRlcnMA7CogYHBheWxvYWRgOiBUaGUgZW5jb2RlZCBbYGNyYXRlOjpldm06OlRyYW5zYWN0aW9uU2lnbmVkYF0uABgjIE5vdGUAUQFUaGlzIGNhbGwgY2Fubm90IGJlIGRpc3BhdGNoZWQgZGlyZWN0bHk7IGF0dGVtcHRpbmcgdG8gZG8gc28gd2lsbCByZXN1bHQgaW4gYSBmYWlsZWRRAXRyYW5zYWN0aW9uLiBJdCBzZXJ2ZXMgYXMgYSB3cmFwcGVyIGZvciBhbiBFdGhlcmV1bSB0cmFuc2FjdGlvbi4gV2hlbiBzdWJtaXR0ZWQsIHRoZVkBcnVudGltZSBjb252ZXJ0cyBpdCBpbnRvIGEgW2BzcF9ydW50aW1lOjpnZW5lcmljOjpDaGVja2VkRXh0cmluc2ljYF0gYnkgcmVjb3ZlcmluZyB0aGWYc2lnbmVyIGFuZCB2YWxpZGF0aW5nIHRoZSB0cmFuc2FjdGlvbi4QY2FsbBQBEGRlc3Q5BwEQSDE2MAABFHZhbHVlUQEBMEJhbGFuY2VPZjxUPgABMHdlaWdodF9saW1pdBEBARhXZWlnaHQAAVRzdG9yYWdlX2RlcG9zaXRfbGltaXRRAQEwQmFsYW5jZU9mPFQ+AAEQZGF0YRgBHFZlYzx1OD4AAUAFAU1ha2VzIGEgY2FsbCB0byBhbiBhY2NvdW50LCBvcHRpb25hbGx5IHRyYW5zZmVycmluZyBzb21lIGJhbGFuY2UuADAjIFBhcmFtZXRlcnMAqCogYGRlc3RgOiBBZGRyZXNzIG9mIHRoZSBjb250cmFjdCB0byBjYWxsLvwqIGB2YWx1ZWA6IFRoZSBiYWxhbmNlIHRvIHRyYW5zZmVyIGZyb20gdGhlIGBvcmlnaW5gIHRvIGBkZXN0YC4tASogYHdlaWdodF9saW1pdGA6IFRoZSB3ZWlnaHQgbGltaXQgZW5mb3JjZWQgd2hlbiBleGVjdXRpbmcgdGhlIGNvbnN0cnVjdG9yLlUBKiBgc3RvcmFnZV9kZXBvc2l0X2xpbWl0YDogVGhlIG1heGltdW0gYW1vdW50IG9mIGJhbGFuY2UgdGhhdCBjYW4gYmUgY2hhcmdlZCBmcm9tIHRoZaQgIGNhbGxlciB0byBwYXkgZm9yIHRoZSBzdG9yYWdlIGNvbnN1bWVkLsQqIGBkYXRhYDogVGhlIGlucHV0IGRhdGEgdG8gcGFzcyB0byB0aGUgY29udHJhY3QuACUBKiBJZiB0aGUgYWNjb3VudCBpcyBhIHNtYXJ0LWNvbnRyYWN0IGFjY291bnQsIHRoZSBhc3NvY2lhdGVkIGNvZGUgd2lsbCBiZaxleGVjdXRlZCBhbmQgYW55IHZhbHVlIHdpbGwgYmUgdHJhbnNmZXJyZWQuFQEqIElmIHRoZSBhY2NvdW50IGlzIGEgcmVndWxhciBhY2NvdW50LCBhbnkgdmFsdWUgd2lsbCBiZSB0cmFuc2ZlcnJlZC5FASogSWYgbm8gYWNjb3VudCBleGlzdHMgYW5kIHRoZSBjYWxsIHZhbHVlIGlzIG5vdCBsZXNzIHRoYW4gYGV4aXN0ZW50aWFsX2RlcG9zaXRgLBEBYSByZWd1bGFyIGFjY291bnQgd2lsbCBiZSBjcmVhdGVkIGFuZCBhbnkgdmFsdWUgd2lsbCBiZSB0cmFuc2ZlcnJlZC4saW5zdGFudGlhdGUYARR2YWx1ZVEBATBCYWxhbmNlT2Y8VD4AATB3ZWlnaHRfbGltaXQRAQEYV2VpZ2h0AAFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0UQEBMEJhbGFuY2VPZjxUPgABJGNvZGVfaGFzaDwBNHNwX2NvcmU6OkgyNTYAARBkYXRhGAEcVmVjPHU4PgABEHNhbHQ9BwFAT3B0aW9uPFt1ODsgMzJdPgACFPRJbnN0YW50aWF0ZXMgYSBjb250cmFjdCBmcm9tIGEgcHJldmlvdXNseSBkZXBsb3llZCB2bSBiaW5hcnkuADUBVGhpcyBmdW5jdGlvbiBpcyBpZGVudGljYWwgdG8gW2BTZWxmOjppbnN0YW50aWF0ZV93aXRoX2NvZGVgXSBidXQgd2l0aG91dCB0aGVBAWNvZGUgZGVwbG95bWVudCBzdGVwLiBJbnN0ZWFkLCB0aGUgYGNvZGVfaGFzaGAgb2YgYW4gb24tY2hhaW4gZGVwbG95ZWQgdm0gYmluYXJ5RG11c3QgYmUgc3VwcGxpZWQuVGluc3RhbnRpYXRlX3dpdGhfY29kZRgBFHZhbHVlUQEBMEJhbGFuY2VPZjxUPgABMHdlaWdodF9saW1pdBEBARhXZWlnaHQAAVRzdG9yYWdlX2RlcG9zaXRfbGltaXRRAQEwQmFsYW5jZU9mPFQ+AAEQY29kZRgBHFZlYzx1OD4AARBkYXRhGAEcVmVjPHU4PgABEHNhbHQ9BwFAT3B0aW9uPFt1ODsgMzJdPgADbDEBSW5zdGFudGlhdGVzIGEgbmV3IGNvbnRyYWN0IGZyb20gdGhlIHN1cHBsaWVkIGBjb2RlYCBvcHRpb25hbGx5IHRyYW5zZmVycmluZzRzb21lIGJhbGFuY2UuACEBVGhpcyBkaXNwYXRjaGFibGUgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBjYWxsaW5nIFtgU2VsZjo6dXBsb2FkX2NvZGVgXSArPQFbYFNlbGY6Omluc3RhbnRpYXRlYF0uIEJ1bmRsaW5nIHRoZW0gdG9nZXRoZXIgcHJvdmlkZXMgZWZmaWNpZW5jeSBnYWlucy4gUGxlYXNl2GFsc28gY2hlY2sgdGhlIGRvY3VtZW50YXRpb24gb2YgW2BTZWxmOjp1cGxvYWRfY29kZWBdLgAwIyBQYXJhbWV0ZXJzAE0BKiBgdmFsdWVgOiBUaGUgYmFsYW5jZSB0byB0cmFuc2ZlciBmcm9tIHRoZSBgb3JpZ2luYCB0byB0aGUgbmV3bHkgY3JlYXRlZCBjb250cmFjdC4tASogYHdlaWdodF9saW1pdGA6IFRoZSB3ZWlnaHQgbGltaXQgZW5mb3JjZWQgd2hlbiBleGVjdXRpbmcgdGhlIGNvbnN0cnVjdG9yLlUBKiBgc3RvcmFnZV9kZXBvc2l0X2xpbWl0YDogVGhlIG1heGltdW0gYW1vdW50IG9mIGJhbGFuY2UgdGhhdCBjYW4gYmUgY2hhcmdlZC9yZXNlcnZlZMggIGZyb20gdGhlIGNhbGxlciB0byBwYXkgZm9yIHRoZSBzdG9yYWdlIGNvbnN1bWVkLswqIGBjb2RlYDogVGhlIGNvbnRyYWN0IGNvZGUgdG8gZGVwbG95IGluIHJhdyBieXRlcy70KiBgZGF0YWA6IFRoZSBpbnB1dCBkYXRhIHRvIHBhc3MgdG8gdGhlIGNvbnRyYWN0IGNvbnN0cnVjdG9yLj0BKiBgc2FsdGA6IFVzZWQgZm9yIHRoZSBhZGRyZXNzIGRlcml2YXRpb24uIElmIGBTb21lYCBpcyBzdXBwbGllZCB0aGVuIGBDUkVBVEUyYNQJc2VtYW50aWNzIGFyZSB1c2VkLiBJZiBgTm9uZWAgdGhlbiBgQ1JBVEUxYCBpcyB1c2VkLgAAlEluc3RhbnRpYXRpb24gaXMgZXhlY3V0ZWQgYXMgZm9sbG93czoAOQEtIFRoZSBzdXBwbGllZCBgY29kZWAgaXMgZGVwbG95ZWQsIGFuZCBhIGBjb2RlX2hhc2hgIGlzIGNyZWF0ZWQgZm9yIHRoYXQgY29kZS5ZAS0gSWYgdGhlIGBjb2RlX2hhc2hgIGFscmVhZHkgZXhpc3RzIG9uIHRoZSBjaGFpbiB0aGUgdW5kZXJseWluZyBgY29kZWAgd2lsbCBiZSBzaGFyZWQuSQEtIFRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGlzIGNvbXB1dGVkIGJhc2VkIG9uIHRoZSBzZW5kZXIsIGNvZGVfaGFzaCBhbmQgdGhlIHNhbHQuAQEtIFRoZSBzbWFydC1jb250cmFjdCBhY2NvdW50IGlzIGNyZWF0ZWQgYXQgdGhlIGNvbXB1dGVkIGFkZHJlc3MuwC0gVGhlIGB2YWx1ZWAgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIG5ldyBhY2NvdW50LkEBLSBUaGUgYGRlcGxveWAgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIG5ld2x5LWNyZWF0ZWQgYWNjb3VudC5kZXRoX2luc3RhbnRpYXRlX3dpdGhfY29kZSABFHZhbHVlQQcBEFUyNTYAATB3ZWlnaHRfbGltaXQRAQEYV2VpZ2h0AAE0ZXRoX2dhc19saW1pdEEHARBVMjU2AAEQY29kZRgBHFZlYzx1OD4AARBkYXRhGAEcVmVjPHU4PgABTHRyYW5zYWN0aW9uX2VuY29kZWQYARxWZWM8dTg+AAFMZWZmZWN0aXZlX2dhc19wcmljZUEHARBVMjU2AAEsZW5jb2RlZF9sZW44AQx1MzIAClQ9AVNhbWUgYXMgW2BTZWxmOjppbnN0YW50aWF0ZV93aXRoX2NvZGVgXSwgYnV0IGludGVuZGVkIHRvIGJlIGRpc3BhdGNoZWQgKipvbmx5KiroYnkgYW4gRVZNIHRyYW5zYWN0aW9uIHRocm91Z2ggdGhlIEVWTSBjb21wYXRpYmlsaXR5IGxheWVyLgAwIyBQYXJhbWV0ZXJzAE0BKiBgdmFsdWVgOiBUaGUgYmFsYW5jZSB0byB0cmFuc2ZlciBmcm9tIHRoZSBgb3JpZ2luYCB0byB0aGUgbmV3bHkgY3JlYXRlZCBjb250cmFjdC5VASogYHdlaWdodF9saW1pdGA6IFRoZSBnYXMgbGltaXQgdXNlZCB0byBkZXJpdmUgdGhlIHRyYW5zYWN0aW9uIHdlaWdodCBmb3IgdHJhbnNhY3Rpb24kICBwYXltZW50XQEqIGBldGhfZ2FzX2xpbWl0YDogVGhlIEV0aGVyZXVtIGdhcyBsaW1pdCBnb3Zlcm5pbmcgdGhlIHJlc291cmNlIHVzYWdlIG9mIHRoZSBleGVjdXRpb27MKiBgY29kZWA6IFRoZSBjb250cmFjdCBjb2RlIHRvIGRlcGxveSBpbiByYXcgYnl0ZXMu9CogYGRhdGFgOiBUaGUgaW5wdXQgZGF0YSB0byBwYXNzIHRvIHRoZSBjb250cmFjdCBjb25zdHJ1Y3Rvci41ASogYHRyYW5zYWN0aW9uX2VuY29kZWRgOiBUaGUgUkxQIGVuY29kaW5nIG9mIHRoZSBzaWduZWQgRXRoZXJldW0gdHJhbnNhY3Rpb24sXQEgIHJlcHJlc2VudGVkIGFzIFtjcmF0ZTo6ZXZtOjpUcmFuc2FjdGlvblNpZ25lZF0sIHByb3ZpZGVkIGJ5IHRoZSBFdGhlcmV1bSB3YWxsZXQuIFRoaXPUICBpcyB1c2VkIGZvciBidWlsZGluZyB0aGUgRXRoZXJldW0gdHJhbnNhY3Rpb24gcm9vdC7EKiBlZmZlY3RpdmVfZ2FzX3ByaWNlOiB0aGUgcHJpY2Ugb2YgYSB1bml0IG9mIGdhcwUBKiBlbmNvZGVkIGxlbjogdGhlIGJ5dGUgY29kZSBzaXplIG9mIHRoZSBgZXRoX3RyYW5zYWN0YCBleHRyaW5zaWMAOQFDYWxsaW5nIHRoaXMgZGlzcGF0Y2hhYmxlIGVuc3VyZXMgdGhhdCB0aGUgb3JpZ2luJ3Mgbm9uY2UgaXMgYnVtcGVkIG9ubHkgb25jZSxhAXZpYSB0aGUgYENoZWNrTm9uY2VgIHRyYW5zYWN0aW9uIGV4dGVuc2lvbi4gSW4gY29udHJhc3QsIFtgU2VsZjo6aW5zdGFudGlhdGVfd2l0aF9jb2RlYF1NAWFsc28gYnVtcHMgdGhlIG5vbmNlIGFmdGVyIGNvbnRyYWN0IGluc3RhbnRpYXRpb24sIHNpbmNlIGl0IG1heSBiZSBpbnZva2VkIG11bHRpcGxlmHRpbWVzIHdpdGhpbiBhIGJhdGNoIGNhbGwgdHJhbnNhY3Rpb24uIGV0aF9jYWxsIAEQZGVzdDkHARBIMTYwAAEUdmFsdWVBBwEQVTI1NgABMHdlaWdodF9saW1pdBEBARhXZWlnaHQAATRldGhfZ2FzX2xpbWl0QQcBEFUyNTYAARBkYXRhGAEcVmVjPHU4PgABTHRyYW5zYWN0aW9uX2VuY29kZWQYARxWZWM8dTg+AAFMZWZmZWN0aXZlX2dhc19wcmljZUEHARBVMjU2AAEsZW5jb2RlZF9sZW44AQx1MzIAC0D4U2FtZSBhcyBbYFNlbGY6OmNhbGxgXSwgYnV0IGludGVuZGVkIHRvIGJlIGRpc3BhdGNoZWQgKipvbmx5KiroYnkgYW4gRVZNIHRyYW5zYWN0aW9uIHRocm91Z2ggdGhlIEVWTSBjb21wYXRpYmlsaXR5IGxheWVyLgAwIyBQYXJhbWV0ZXJzAOgqIGBkZXN0YDogVGhlIEV0aGVyZXVtIGFkZHJlc3Mgb2YgdGhlIGFjY291bnQgdG8gYmUgY2FsbGVkTQEqIGB2YWx1ZWA6IFRoZSBiYWxhbmNlIHRvIHRyYW5zZmVyIGZyb20gdGhlIGBvcmlnaW5gIHRvIHRoZSBuZXdseSBjcmVhdGVkIGNvbnRyYWN0LlUBKiBgd2VpZ2h0X2xpbWl0YDogVGhlIGdhcyBsaW1pdCB1c2VkIHRvIGRlcml2ZSB0aGUgdHJhbnNhY3Rpb24gd2VpZ2h0IGZvciB0cmFuc2FjdGlvbiQgIHBheW1lbnRdASogYGV0aF9nYXNfbGltaXRgOiBUaGUgRXRoZXJldW0gZ2FzIGxpbWl0IGdvdmVybmluZyB0aGUgcmVzb3VyY2UgdXNhZ2Ugb2YgdGhlIGV4ZWN1dGlvbvQqIGBkYXRhYDogVGhlIGlucHV0IGRhdGEgdG8gcGFzcyB0byB0aGUgY29udHJhY3QgY29uc3RydWN0b3IuNQEqIGB0cmFuc2FjdGlvbl9lbmNvZGVkYDogVGhlIFJMUCBlbmNvZGluZyBvZiB0aGUgc2lnbmVkIEV0aGVyZXVtIHRyYW5zYWN0aW9uLF0BICByZXByZXNlbnRlZCBhcyBbY3JhdGU6OmV2bTo6VHJhbnNhY3Rpb25TaWduZWRdLCBwcm92aWRlZCBieSB0aGUgRXRoZXJldW0gd2FsbGV0LiBUaGlz1CAgaXMgdXNlZCBmb3IgYnVpbGRpbmcgdGhlIEV0aGVyZXVtIHRyYW5zYWN0aW9uIHJvb3QuxCogZWZmZWN0aXZlX2dhc19wcmljZTogdGhlIHByaWNlIG9mIGEgdW5pdCBvZiBnYXMFASogZW5jb2RlZCBsZW46IHRoZSBieXRlIGNvZGUgc2l6ZSBvZiB0aGUgYGV0aF90cmFuc2FjdGAgZXh0cmluc2ljSGV0aF9zdWJzdHJhdGVfY2FsbAgBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAFMdHJhbnNhY3Rpb25fZW5jb2RlZBgBHFZlYzx1OD4ADCj8RXhlY3V0ZXMgYSBTdWJzdHJhdGUgcnVudGltZSBjYWxsIGZyb20gYW4gRXRoZXJldW0gdHJhbnNhY3Rpb24uAEUBVGhpcyBkaXNwYXRjaGFibGUgaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkICoqb25seSoqIHRocm91Z2ggdGhlIEVWTSBjb21wYXRpYmlsaXR5GQFsYXllci4gVGhlIHByb3ZpZGVkIGNhbGwgd2lsbCBiZSBkaXNwYXRjaGVkIHVzaW5nIGBSYXdPcmlnaW46OlNpZ25lZGAuADAjIFBhcmFtZXRlcnMA5CogYG9yaWdpbmA6IE11c3QgYmUgYW4gW2BPcmlnaW46OkV0aFRyYW5zYWN0aW9uYF0gb3JpZ2luLsAqIGBjYWxsYDogVGhlIFN1YnN0cmF0ZSBydW50aW1lIGNhbGwgdG8gZXhlY3V0ZS4ZASogYHRyYW5zYWN0aW9uX2VuY29kZWRgOiBUaGUgUkxQIGVuY29kaW5nIG9mIHRoZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiwsdXBsb2FkX2NvZGUIARBjb2RlGAEcVmVjPHU4PgABVHN0b3JhZ2VfZGVwb3NpdF9saW1pdFEBATBCYWxhbmNlT2Y8VD4ABDjsVXBsb2FkIG5ldyBgY29kZWAgd2l0aG91dCBpbnN0YW50aWF0aW5nIGEgY29udHJhY3QgZnJvbSBpdC4AIQFJZiB0aGUgY29kZSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0IGEgZGVwb3NpdCBpcyByZXNlcnZlZCBmcm9tIHRoZSBjYWxsZXINAVRoZSBzaXplIG9mIHRoZSByZXNlcnZlIGRlcGVuZHMgb24gdGhlIHNpemUgb2YgdGhlIHN1cHBsaWVkIGBjb2RlYC4AGCMgTm90ZQBZAUFueW9uZSBjYW4gaW5zdGFudGlhdGUgYSBjb250cmFjdCBmcm9tIGFueSB1cGxvYWRlZCBjb2RlIGFuZCB0aHVzIHByZXZlbnQgaXRzIHJlbW92YWwuQQFUbyBhdm9pZCB0aGlzIHNpdHVhdGlvbiBhIGNvbnN0cnVjdG9yIGNvdWxkIGVtcGxveSBhY2Nlc3MgY29udHJvbCBzbyB0aGF0IGl0IGNhbjkBb25seSBiZSBpbnN0YW50aWF0ZWQgYnkgcGVybWlzc2lvbmVkIGVudGl0aWVzLiBUaGUgc2FtZSBpcyB0cnVlIHdoZW4gdXBsb2FkaW5noHRocm91Z2ggW2BTZWxmOjppbnN0YW50aWF0ZV93aXRoX2NvZGVgXS4ARQFJZiB0aGUgcmVmY291bnQgb2YgdGhlIGNvZGUgcmVhY2hlcyB6ZXJvIGFmdGVyIHRlcm1pbmF0aW5nIHRoZSBsYXN0IGNvbnRyYWN0IHRoYXT0cmVmZXJlbmNlcyB0aGlzIGNvZGUsIHRoZSBjb2RlIHdpbGwgYmUgcmVtb3ZlZCBhdXRvbWF0aWNhbGx5LixyZW1vdmVfY29kZQQBJGNvZGVfaGFzaDwBNHNwX2NvcmU6OkgyNTYABRA1AVJlbW92ZSB0aGUgY29kZSBzdG9yZWQgdW5kZXIgYGNvZGVfaGFzaGAgYW5kIHJlZnVuZCB0aGUgZGVwb3NpdCB0byBpdHMgb3duZXIuAEUBQSBjb2RlIGNhbiBvbmx5IGJlIHJlbW92ZWQgYnkgaXRzIG9yaWdpbmFsIHVwbG9hZGVyIChpdHMgb3duZXIpIGFuZCBvbmx5IGlmIGl0IGlzZG5vdCB1c2VkIGJ5IGFueSBjb250cmFjdC4gc2V0X2NvZGUIARBkZXN0OQcBEEgxNjAAASRjb2RlX2hhc2g8ATRzcF9jb3JlOjpIMjU2AAYoCQFQcml2aWxlZ2VkIGZ1bmN0aW9uIHRoYXQgY2hhbmdlcyB0aGUgY29kZSBvZiBhbiBleGlzdGluZyBjb250cmFjdC4ARQFUaGlzIHRha2VzIGNhcmUgb2YgdXBkYXRpbmcgcmVmY291bnRzIGFuZCBhbGwgb3RoZXIgbmVjZXNzYXJ5IG9wZXJhdGlvbnMuIFJldHVybnPoYW4gZXJyb3IgaWYgZWl0aGVyIHRoZSBgY29kZV9oYXNoYCBvciBgZGVzdGAgZG8gbm90IGV4aXN0LgAYIyBOb3RlADEBVGhpcyBkb2VzICoqbm90KiogY2hhbmdlIHRoZSBhZGRyZXNzIG9mIHRoZSBjb250cmFjdCBpbiBxdWVzdGlvbi4gVGhpcyBtZWFucz0BdGhhdCB0aGUgY29udHJhY3QgYWRkcmVzcyBpcyBubyBsb25nZXIgZGVyaXZlZCBmcm9tIGl0cyBjb2RlIGhhc2ggYWZ0ZXIgY2FsbGluZ0h0aGlzIGRpc3BhdGNoYWJsZS4sbWFwX2FjY291bnQABxxBAVJlZ2lzdGVyIHRoZSBjYWxsZXJzIGFjY291bnQgaWQgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiBjb250cmFjdCBpbnRlcmFjdGlvbnMuAF0BVGhpcyB3aWxsIGVycm9yIGlmIHRoZSBvcmlnaW4gaXMgYWxyZWFkeSBtYXBwZWQgb3IgaXMgYSBldGggbmF0aXZlIGBBZGRyZXNzMjBgLiBJdCB3aWxsHQF0YWtlIGEgZGVwb3NpdCB0aGF0IGNhbiBiZSByZWxlYXNlZCBieSBjYWxsaW5nIFtgU2VsZjo6dW5tYXBfYWNjb3VudGBdLgA5AU5vb3Agd2hlbiBbYENvbmZpZzo6QXV0b01hcGBdIGlzIGVuYWJsZWQsIGFzIGFjY291bnRzIGFyZSBhdXRvbWF0aWNhbGx5IG1hcHBlZHxvbiBjcmVhdGlvbiB2aWEgW2BBdXRvTWFwcGVyYF0uNHVubWFwX2FjY291bnQACBz8VW5yZWdpc3RlciB0aGUgY2FsbGVycyBhY2NvdW50IGlkIGluIG9yZGVyIHRvIGZyZWUgdGhlIGRlcG9zaXQuAEEBVGhlcmUgaXMgbm8gcmVhc29uIHRvIGV2ZXIgY2FsbCB0aGlzIGZ1bmN0aW9uIG90aGVyIHRoYW4gZnJlZWluZyB1cCB0aGUgZGVwb3NpdC74VGhpcyBpcyBvbmx5IHVzZWZ1bCB3aGVuIHRoZSBhY2NvdW50IHNob3VsZCBubyBsb25nZXIgYmUgdXNlZC4AUQFEaXNhYmxlZCB3aGVuIFtgQ29uZmlnOjpBdXRvTWFwYF0gaXMgZW5hYmxlZCwgYXMgYWNjb3VudHMgYXJlIGF1dG9tYXRpY2FsbHkgdW5tYXBwZWRsb24ga2lsbCB2aWEgW2BBdXRvTWFwcGVyYF0ucGRpc3BhdGNoX2FzX2ZhbGxiYWNrX2FjY291bnQEARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAJFB0BRGlzcGF0Y2ggYW4gYGNhbGxgIHdpdGggdGhlIG9yaWdpbiBzZXQgdG8gdGhlIGNhbGxlcnMgZmFsbGJhY2sgYWRkcmVzcy4AYQFFdmVyeSBgQWNjb3VudElkMzJgIGNhbiBjb250cm9sIGl0cyBjb3JyZXNwb25kaW5nIGZhbGxiYWNrIGFjY291bnQuIFRoZSBmYWxsYmFjayBhY2NvdW50QQFpcyB0aGUgYEFjY291bnRJZDIwYCB3aXRoIHRoZSBsYXN0IDEyIGJ5dGVzIHNldCB0byBgMHhFRWAuIFRoaXMgaXMgZXNzZW50aWFsbHkgYVUBcmVjb3ZlcnkgZnVuY3Rpb24gaW4gY2FzZSBhbiBgQWNjb3VudElkMjBgIHdhcyB1c2VkIHdpdGhvdXQgY3JlYXRpbmcgYSBtYXBwaW5nIGZpcnN0LgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy45Bwg8cHJpbWl0aXZlX3R5cGVzEEgxNjAAAAQAHAEgW3U4OyAyMF0AAD0HBBhPcHRpb24EBFQBCAEIEE5vbmUAAAAQU29tZQQACAAAAQAAQQcIPHByaW1pdGl2ZV90eXBlcxBVMjU2AAAEAEUHASBbdTY0OyA0XQAARQcAAAMEAAAAKABJBwxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkYcGFsbGV0EENhbGwEBFQAARQwcmVzZXJ2ZV9uYW1lGAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkAAFMY2FuZGlkYXRlX3NpZ25hdHVyZaEEAVxUOjpBdHRlc3RhdGlvblNpZ25hdHVyZQABKGxpdGVfbGFiZWxNBwEkQmFzZUxhYmVsAAEgY2hhdF9rZXlRBwEcQ2hhdEtleQABTHJlc2VydmVkX2Jhc2VfbGFiZWxVBwFET3B0aW9uPEJhc2VMYWJlbD4AASRzaWduZWRfYXQoAQx1NjQAAGxJAVJlc2VydmVzIGEgbGl0ZS1wZXJzb24gbGFiZWwgb24gYERvdG5zUG9wQ29udHJvbGxlcmAgKHZpYSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYClJAWZvciBhIExpdGUgUGVyc29uLCBhbmQgb3B0aW9uYWxseSBlbnF1ZXVlcyBhIHJlc2VydmF0aW9uIGZvciBhIGJhc2UgbGFiZWwgdGhlIHVzZXKgaW50ZW5kcyB0byBjbGFpbSBhcyBhIEZ1bGwgUGVyc29uIGxhdGVyLgANAVRoZSBjYWxsZXIgbXVzdCBiZSBhbiBhdHRlc3RlciB3aXRoIGF2YWlsYWJsZSBhbGxvd2FuY2UuIFRoZSB1c2VyJ3MpAXNpZ25hdHVyZSBwcm92ZXMgdGhlaXIgY29uc2VudCB0byB0aGUgcmVzZXJ2YXRpb24gd2l0aCB0aGlzIHNwZWNpZmljIGxhYmVsNGFuZCBhdHRlc3Rlci4AMCMgUGFyYW1ldGVyc10BLSBgY2FuZGlkYXRlYDogdGhlIExpdGUgUGVyc29uJ3MgYWNjb3VudCBmb3Igd2hvbSB0aGUgbGFiZWwgaXMgYmVpbmcgcmVzZXJ2ZWQuIEFsc28gdGhliCAgc2lnbmVyIG9mIGBjYW5kaWRhdGVfc2lnbmF0dXJlYC70LSBgY2FuZGlkYXRlX3NpZ25hdHVyZWA6IHNpZ25hdHVyZSBvdmVyIHRoZSBieXRlcyByZXR1cm5lZCBieUUBICBbYFBhbGxldDo6Y29uc3RydWN0X3Jlc2VydmF0aW9uX21lc3NhZ2VgXSDigJQgYSBTQ0FMRS1lbmNvZGVkIHR1cGxlIGJpbmRpbmcgdGhlWQEgIGF0dGVzdGVyLCBjYW5kaWRhdGUsIHRoZSBjYW5kaWRhdGUncyBjaG9zZW4gKmJhc2UqIHVzZXJuYW1lLCBhbmQgY2hhdCBrZXkuIFRoZSBkaWdpdGEBICBzdWZmaXggb2YgYGxpdGVfbGFiZWxgIGlzICoqbm90KiogcGFydCBvZiB0aGUgc2lnbmVkIG1lc3NhZ2UgKHRoZSBkaWdpdHMgYXJlIGFsbG9jYXRlZEkBICBzZXJ2ZXItc2lkZSBhZnRlciB0aGUgY2FuZGlkYXRlIHNpZ25zLCBzbyB0aGUgY2FuZGlkYXRlIGNhbm5vdCBjb21taXQgdG8gdGhlbSBhdEAgIHNpZ25pbmcgdGltZSkuNQEtIGBsaXRlX2xhYmVsYDogdGhlIGxpdGUtcGVyc29uIGxhYmVsLiBNdXN0IGJlIGA8ZG5zLXN0ZW0+LjwyKyBkaWdpdHM+YCAoZS5nLkkBICBgYWxpY2UuNDJgKSwgbWF0Y2hpbmcgYFN0cmluZ1V0aWxzLmlzTGl0ZVBlcnNvbkxhYmVsYCBpbiB0aGUgY29udHJhY3RzLiBPbmx5IHRoZVkBICBgPGRucy1zdGVtPmAgcG9ydGlvbiBlbnRlcnMgdGhlIHNpZ25lZCBtZXNzYWdlOyB0aGUgZGlnaXRzIHJpZGUgYWxvbmcgYXMgYW4gdW5zaWduZWQRASAgZXh0cmluc2ljIGFyZ3VtZW50IHVzZWQgZm9yIHRoZSBjb250cmFjdCBjYWxsZGF0YSBhbmQgc3RvcmFnZSBrZXku0C0gYGNoYXRfa2V5YDogNjUtYnl0ZSBwdWJsaWMga2V5IHVzZWQgZm9yIEVDREggY2hhdC5ZAS0gYHJlc2VydmVkX2Jhc2VfbGFiZWxgOiBvcHRpb25hbCBiYXNlIGxhYmVsIHJlc2VydmVkIGZvciB0aGUgY2FuZGlkYXRlIHRvIGxhdGVyIGNsYWlt+CAgYXMgYSBGdWxsIFBlcnNvbi4gTXVzdCBiZSBhIHNpbmdsZSBETlMgbGFiZWwgKGUuZy4gYGFsaWNlYCkuWQEtIGBzaWduZWRfYXRgOiBVbml4LXRpbWUgc2Vjb25kIGF0IHdoaWNoIHRoZSBjYW5kaWRhdGUgc2lnbmVkIHRoZSByZXNlcnZhdGlvbiBtZXNzYWdlLlkBICBUaGUgc2lnbmF0dXJlIGlzIGFjY2VwdGVkIG9ubHkgaWYgYHNpZ25lZF9hdCA8PSBub3cgKyBNYXhGdXR1cmVTa2V3U2Vjb25kc2AgYW5kIGBub3dJASAgPD0gc2lnbmVkX2F0ICsgTWF4VmFsaWRpdHlTZWNvbmRzYCwgd2hlcmUgYG5vd2AgY29tZXMgZnJvbSBbYENvbmZpZzo6VW5peFRpbWVgXS40cmVnaXN0ZXJfbmFtZQwBDHdobwQBMFQ6OkFjY291bnRJZAABFGxhYmVsTQcBJEJhc2VMYWJlbAABEGxpbmtZBwEQTGluawABSE0BUmVnaXN0ZXJzIGEgZnVsbC1wZXJzb24gbGFiZWwgb24gYERvdG5zUG9wQ29udHJvbGxlcmAgKHZpYSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYCloZm9yIGEgZnVsbHkgcHJvdmVuIHBlcnNvbi4AXQFUaGUgb3JpZ2luIG11c3QgYmUgW2BPcmlnaW46OlBlcnNvblJlZ2lzdHJhdGlvbmBdLCBwcm9kdWNlZCBieSBbYEFzRG90bnNHYXRld2F5YF0gYWZ0ZXJFAWl0IHZlcmlmaWVzIHRoZSByaW5nIG1lbWJlcnNoaXAgcHJvb2YgYW5kIHRoZSBvZmYtY2hhaW4gc2lnbmF0dXJlIGZyb20gYHdob2AuIEFsbPxhdXRoZW50aWNhdGlvbiwgZm9ybWF0IGFuZCByZXBsYXkgY2hlY2tzIGxpdmUgaW4gdGhlIGV4dGVuc2lvbi4AMCMgUGFyYW1ldGVyc00BLSBgd2hvYDogdGhlIGFjY291bnQgdGhhdCBvd25zIHRoZSBmdWxsLXBlcnNvbiBsYWJlbDsgaXRzIEVWTS1tYXBwZWQgYWRkcmVzcyBpcyB0aGU5ASAgcmVjaXBpZW50IG9uIHRoZSBgRG90bnNQb3BDb250cm9sbGVyYCBjb250cmFjdC4gTXVzdCBtYXRjaCB0aGUgYHdob2AgYWxyZWFkeZggIGF1dGhlbnRpY2F0ZWQgYnkgW2BBc0RvdG5zR2F0ZXdheWBdLlUBLSBgbGFiZWxgOiB0aGUgZnVsbC1wZXJzb24gbGFiZWwuIE11c3QgYmUgYSBzaW5nbGUgRE5TIGxhYmVsIChlLmcuIGBhbGljZWApLCBtYXRjaGluZ7wgIGBTdHJpbmdVdGlscy5pc1NpbmdsZUxhYmVsYCBpbiB0aGUgY29udHJhY3RzLkEBLSBgbGlua2A6IGhvdyB0aGUgZnVsbC1wZXJzb24gbGFiZWwgcmVsYXRlcyB0byBhIHByZS1leGlzdGluZyBsaXRlLXBlcnNvbiBsYWJlbDpVASAgLSBgTGluazo6TGl0ZVVzZXJuYW1lKGxpdGVfbGFiZWwpYCDigJQgbGlua3MgdG8gYW4gZXhpc3RpbmcgbGl0ZS1wZXJzb24gbGFiZWwgKG11c3RdASAgICBtYXRjaCB0aGUgbGl0ZSBmb3JtYXQgYDxkbnMtc3RlbT4uPDIrIGRpZ2l0cz5gKTsgdGhlIGNoYXQga2V5IGlzIGluaGVyaXRlZCBmcm9tIHRoZTwgICAgbGl0ZSBlbnRyeS5JASAgLSBgTGluazo6Tm9uZShjaGF0X2tleSlgIOKAlCBzdGFuZGFsb25lIHJlZ2lzdHJhdGlvbiB3aXRoIGEgZnJlc2ggRUNESCBjaGF0IGtleS54aW5jcmVhc2VfYXR0ZXN0YXRpb25fYWxsb3dhbmNlCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFGNvdW50OAEMdTMyAAIM0EdyYW50cyBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgdG8gYW4gYXR0ZXN0ZXIgYWNjb3VudC4AxFRoZSBvcmlnaW4gbXVzdCBiZSBgQXR0ZXN0YXRpb25BbGxvd2FuY2VNYW5hZ2VyYC5sY2xlYXJfYXR0ZXN0YXRpb25fYWxsb3dhbmNlBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAADDORDbGVhcnMgYWxsIGF0dGVzdGF0aW9uIGFsbG93YW5jZSBmb3IgYW4gYXR0ZXN0ZXIgYWNjb3VudC4AxFRoZSBvcmlnaW4gbXVzdCBiZSBgQXR0ZXN0YXRpb25BbGxvd2FuY2VNYW5hZ2VyYC5Yc2V0X2Rpc3BhdGNoZXJfYWRkcmVzcwQBHGFkZHJlc3M5BwEQSDE2MAAEDMhTZXRzIHRoZSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYCBjb250cmFjdCBhZGRyZXNzLgApAVRoZSBvcmlnaW4gbXVzdCBiZSBgRGlzcGF0Y2hlckFkZHJlc3NNYW5hZ2VyYC4gT3ZlcndyaXRlcyBhbnkgcHJpb3IgdmFsdWUuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLk0HDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlcyRCYXNlTGFiZWwAAAQAwQMBcEJvdW5kZWRWZWM8dTgsIENvbnN0VTMyPDMyPj4AAFEHDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlcxxDaGF0S2V5AAAEAHUBASBbdTg7IDY1XQAAVQcEGE9wdGlvbgQEVAFNBwEIEE5vbmUAAAAQU29tZQQATQcAAAEAAFkHDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlcxBMaW5rAAEIMExpdGVVc2VybmFtZQQATQcBJEJhc2VMYWJlbAAAABBOb25lBABRBwEcQ2hhdEtleQABAABdBwx8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbhhwYWxsZXQQQ2FsbAQEVAABBCxjbGVhbl91c2FnZQQBGGVudGl0eWEHAUxUOjpSZXN0cmljdGVkRW50aXR5AAEISQFBbGxvdyB0byBjbGVhbiB1c2FnZSBhc3NvY2lhdGVkIHdpdGggYW4gZW50aXR5IHdoZW4gaXQgaXMgemVybyBvciB3aGVuIHRoZXJlIGlzIG5vkGxvbmdlciBhbnkgYWxsb3dhbmNlIGZvciB0aGUgb3JpZ2luLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5hBwhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZUBSZXN0cmljdGVkRW50aXR5AAEEXERvdG5zUGVyc29uUmVnaXN0cmF0aW9uBAAIAXBpbmRpdl9zdXBwb3J0Ojp0cmFpdHM6OkFsaWFzAAAAAGUHDCxwYWxsZXRfc3VkbxhwYWxsZXQQQ2FsbAQEVAABFBBzdWRvBAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAAQ1AUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBSb290YCBvcmlnaW4uVHN1ZG9fdW5jaGVja2VkX3dlaWdodAgBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEYd2VpZ2h0EQEBGFdlaWdodAABFDUBQXV0aGVudGljYXRlcyB0aGUgc3VkbyBrZXkgYW5kIGRpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYFJvb3RgIG9yaWdpbi4tAVRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIHdlaWdodCBvZiB0aGUgY2FsbCwgYW5kIGluc3RlYWQgYWxsb3dzIHRoZbBTdWRvIHVzZXIgdG8gc3BlY2lmeSB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uHHNldF9rZXkEAQxuZXcAAVBBY2NvdW50SWRMb29rdXBPZjxUPgACCF0BQXV0aGVudGljYXRlcyB0aGUgY3VycmVudCBzdWRvIGtleSBhbmQgc2V0cyB0aGUgZ2l2ZW4gQWNjb3VudElkIChgbmV3YCkgYXMgdGhlIG5ldyBzdWRvEGtleS4cc3Vkb19hcwgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAxBNAUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBTaWduZWRgIG9yaWdpbiBmcm9tQGEgZ2l2ZW4gYWNjb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLihyZW1vdmVfa2V5AAQMhFBlcm1hbmVudGx5IHJlbW92ZXMgdGhlIHN1ZG8ga2V5LgBsKipUaGlzIGNhbm5vdCBiZSB1bi1kb25lLioqBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLmkHDIBpbmRpdl9wYWxsZXRfdmFsdWVfdHJhbnNmZXJfYXV0aCRleHRlbnNpb25YQXV0aG9yaXplVmFsdWVUcmFuc2ZlcggEVAAEUAAABABtBwGMT3B0aW9uPHNwX2NvcmU6OmVkMjU1MTk6OlNpZ25hdHVyZT4AAG0HBBhPcHRpb24EBFQBpQQBCBBOb25lAAAAEFNvbWUEAKUEAAABAABxBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM4YXV0aG9yaXplX2NhbGw0QXV0aG9yaXplQ2FsbAQEVAAAAAB1BwxEaW5kaXZfcGFsbGV0X3BnYXMkZXh0ZW5zaW9uGEFzUGdhcwQEVAAABAB5BwFUT3B0aW9uPEFzUGdhc0luZm88VD4+AAB5BwQYT3B0aW9uBARUAX0HAQgQTm9uZQAAABBTb21lBAB9BwAAAQAAfQcMRGluZGl2X3BhbGxldF9wZ2FzJGV4dGVuc2lvbihBc1BnYXNJbmZvBARUAAEEFENsYWltFAEUcHJvb2YtBwEoUHJvb2ZPZjxUPgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAAShjb2xsZWN0aW9u/QMBOFBnYXNDb2xsZWN0aW9uAAEMZGF5OAEMdTMyAAAAAIEHDGxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHMkZXh0ZW5zaW9uLEFzUmluZ0FsaWFzBARUAAAEAIUHAWhPcHRpb248QXNSaW5nQWxpYXNJbmZvPFQ+PgAAhQcEGE9wdGlvbgQEVAGJBwEIEE5vbmUAAAAQU29tZQQAiQcAAAEAAIkHDGxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHMkZXh0ZW5zaW9uPEFzUmluZ0FsaWFzSW5mbwQEVAABBCxXaXRoQWNjb3VudAQAOAEgVDo6Tm9uY2UAAAAAjQcMaGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5JGV4dGVuc2lvbjhBc0RvdG5zR2F0ZXdheQQEVAAABACRBwF0T3B0aW9uPEFzRG90bnNHYXRld2F5SW5mbzxUPj4AAJEHBBhPcHRpb24EBFQBlQcBCBBOb25lAAAAEFNvbWUEAJUHAAABAACVBwxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkkZXh0ZW5zaW9uSEFzRG90bnNHYXRld2F5SW5mbwQEVAABBEBSZWdpc3RlckZ1bGxOYW1lDAEUcHJvb2YtBwEoUHJvb2ZPZjxUPgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAASRzaWduYXR1cmWhBAFcVDo6QXR0ZXN0YXRpb25TaWduYXR1cmUAAAAAmQcIfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb244UmVzdHJpY3RPcmlnaW4EBFQAAAQAWQEBEGJvb2wAAJ0HEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc1RjaGVja19ub25femVyb19zZW5kZXJIQ2hlY2tOb25aZXJvU2VuZGVyBARUAAAAAKEHEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc0hjaGVja19zcGVjX3ZlcnNpb25AQ2hlY2tTcGVjVmVyc2lvbgQEVAAAAAClBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNAY2hlY2tfdHhfdmVyc2lvbjhDaGVja1R4VmVyc2lvbgQEVAAAAACpBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM0Y2hlY2tfZ2VuZXNpczBDaGVja0dlbmVzaXMEBFQAAAAArQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zPGNoZWNrX21vcnRhbGl0eThDaGVja01vcnRhbGl0eQQEVAAABACxBwEMRXJhAACxBxAoc3BfcnVudGltZRxnZW5lcmljDGVyYQxFcmEAAQEEIEltbW9ydGFsAAAAHE1vcnRhbDEEAAwAAAEAHE1vcnRhbDIEAAwAAAIAHE1vcnRhbDMEAAwAAAMAHE1vcnRhbDQEAAwAAAQAHE1vcnRhbDUEAAwAAAUAHE1vcnRhbDYEAAwAAAYAHE1vcnRhbDcEAAwAAAcAHE1vcnRhbDgEAAwAAAgAHE1vcnRhbDkEAAwAAAkAIE1vcnRhbDEwBAAMAAAKACBNb3J0YWwxMQQADAAACwAgTW9ydGFsMTIEAAwAAAwAIE1vcnRhbDEzBAAMAAANACBNb3J0YWwxNAQADAAADgAgTW9ydGFsMTUEAAwAAA8AIE1vcnRhbDE2BAAMAAAQACBNb3J0YWwxNwQADAAAEQAgTW9ydGFsMTgEAAwAABIAIE1vcnRhbDE5BAAMAAATACBNb3J0YWwyMAQADAAAFAAgTW9ydGFsMjEEAAwAABUAIE1vcnRhbDIyBAAMAAAWACBNb3J0YWwyMwQADAAAFwAgTW9ydGFsMjQEAAwAABgAIE1vcnRhbDI1BAAMAAAZACBNb3J0YWwyNgQADAAAGgAgTW9ydGFsMjcEAAwAABsAIE1vcnRhbDI4BAAMAAAcACBNb3J0YWwyOQQADAAAHQAgTW9ydGFsMzAEAAwAAB4AIE1vcnRhbDMxBAAMAAAfACBNb3J0YWwzMgQADAAAIAAgTW9ydGFsMzMEAAwAACEAIE1vcnRhbDM0BAAMAAAiACBNb3J0YWwzNQQADAAAIwAgTW9ydGFsMzYEAAwAACQAIE1vcnRhbDM3BAAMAAAlACBNb3J0YWwzOAQADAAAJgAgTW9ydGFsMzkEAAwAACcAIE1vcnRhbDQwBAAMAAAoACBNb3J0YWw0MQQADAAAKQAgTW9ydGFsNDIEAAwAACoAIE1vcnRhbDQzBAAMAAArACBNb3J0YWw0NAQADAAALAAgTW9ydGFsNDUEAAwAAC0AIE1vcnRhbDQ2BAAMAAAuACBNb3J0YWw0NwQADAAALwAgTW9ydGFsNDgEAAwAADAAIE1vcnRhbDQ5BAAMAAAxACBNb3J0YWw1MAQADAAAMgAgTW9ydGFsNTEEAAwAADMAIE1vcnRhbDUyBAAMAAA0ACBNb3J0YWw1MwQADAAANQAgTW9ydGFsNTQEAAwAADYAIE1vcnRhbDU1BAAMAAA3ACBNb3J0YWw1NgQADAAAOAAgTW9ydGFsNTcEAAwAADkAIE1vcnRhbDU4BAAMAAA6ACBNb3J0YWw1OQQADAAAOwAgTW9ydGFsNjAEAAwAADwAIE1vcnRhbDYxBAAMAAA9ACBNb3J0YWw2MgQADAAAPgAgTW9ydGFsNjMEAAwAAD8AIE1vcnRhbDY0BAAMAABAACBNb3J0YWw2NQQADAAAQQAgTW9ydGFsNjYEAAwAAEIAIE1vcnRhbDY3BAAMAABDACBNb3J0YWw2OAQADAAARAAgTW9ydGFsNjkEAAwAAEUAIE1vcnRhbDcwBAAMAABGACBNb3J0YWw3MQQADAAARwAgTW9ydGFsNzIEAAwAAEgAIE1vcnRhbDczBAAMAABJACBNb3J0YWw3NAQADAAASgAgTW9ydGFsNzUEAAwAAEsAIE1vcnRhbDc2BAAMAABMACBNb3J0YWw3NwQADAAATQAgTW9ydGFsNzgEAAwAAE4AIE1vcnRhbDc5BAAMAABPACBNb3J0YWw4MAQADAAAUAAgTW9ydGFsODEEAAwAAFEAIE1vcnRhbDgyBAAMAABSACBNb3J0YWw4MwQADAAAUwAgTW9ydGFsODQEAAwAAFQAIE1vcnRhbDg1BAAMAABVACBNb3J0YWw4NgQADAAAVgAgTW9ydGFsODcEAAwAAFcAIE1vcnRhbDg4BAAMAABYACBNb3J0YWw4OQQADAAAWQAgTW9ydGFsOTAEAAwAAFoAIE1vcnRhbDkxBAAMAABbACBNb3J0YWw5MgQADAAAXAAgTW9ydGFsOTMEAAwAAF0AIE1vcnRhbDk0BAAMAABeACBNb3J0YWw5NQQADAAAXwAgTW9ydGFsOTYEAAwAAGAAIE1vcnRhbDk3BAAMAABhACBNb3J0YWw5OAQADAAAYgAgTW9ydGFsOTkEAAwAAGMAJE1vcnRhbDEwMAQADAAAZAAkTW9ydGFsMTAxBAAMAABlACRNb3J0YWwxMDIEAAwAAGYAJE1vcnRhbDEwMwQADAAAZwAkTW9ydGFsMTA0BAAMAABoACRNb3J0YWwxMDUEAAwAAGkAJE1vcnRhbDEwNgQADAAAagAkTW9ydGFsMTA3BAAMAABrACRNb3J0YWwxMDgEAAwAAGwAJE1vcnRhbDEwOQQADAAAbQAkTW9ydGFsMTEwBAAMAABuACRNb3J0YWwxMTEEAAwAAG8AJE1vcnRhbDExMgQADAAAcAAkTW9ydGFsMTEzBAAMAABxACRNb3J0YWwxMTQEAAwAAHIAJE1vcnRhbDExNQQADAAAcwAkTW9ydGFsMTE2BAAMAAB0ACRNb3J0YWwxMTcEAAwAAHUAJE1vcnRhbDExOAQADAAAdgAkTW9ydGFsMTE5BAAMAAB3ACRNb3J0YWwxMjAEAAwAAHgAJE1vcnRhbDEyMQQADAAAeQAkTW9ydGFsMTIyBAAMAAB6ACRNb3J0YWwxMjMEAAwAAHsAJE1vcnRhbDEyNAQADAAAfAAkTW9ydGFsMTI1BAAMAAB9ACRNb3J0YWwxMjYEAAwAAH4AJE1vcnRhbDEyNwQADAAAfwAkTW9ydGFsMTI4BAAMAACAACRNb3J0YWwxMjkEAAwAAIEAJE1vcnRhbDEzMAQADAAAggAkTW9ydGFsMTMxBAAMAACDACRNb3J0YWwxMzIEAAwAAIQAJE1vcnRhbDEzMwQADAAAhQAkTW9ydGFsMTM0BAAMAACGACRNb3J0YWwxMzUEAAwAAIcAJE1vcnRhbDEzNgQADAAAiAAkTW9ydGFsMTM3BAAMAACJACRNb3J0YWwxMzgEAAwAAIoAJE1vcnRhbDEzOQQADAAAiwAkTW9ydGFsMTQwBAAMAACMACRNb3J0YWwxNDEEAAwAAI0AJE1vcnRhbDE0MgQADAAAjgAkTW9ydGFsMTQzBAAMAACPACRNb3J0YWwxNDQEAAwAAJAAJE1vcnRhbDE0NQQADAAAkQAkTW9ydGFsMTQ2BAAMAACSACRNb3J0YWwxNDcEAAwAAJMAJE1vcnRhbDE0OAQADAAAlAAkTW9ydGFsMTQ5BAAMAACVACRNb3J0YWwxNTAEAAwAAJYAJE1vcnRhbDE1MQQADAAAlwAkTW9ydGFsMTUyBAAMAACYACRNb3J0YWwxNTMEAAwAAJkAJE1vcnRhbDE1NAQADAAAmgAkTW9ydGFsMTU1BAAMAACbACRNb3J0YWwxNTYEAAwAAJwAJE1vcnRhbDE1NwQADAAAnQAkTW9ydGFsMTU4BAAMAACeACRNb3J0YWwxNTkEAAwAAJ8AJE1vcnRhbDE2MAQADAAAoAAkTW9ydGFsMTYxBAAMAAChACRNb3J0YWwxNjIEAAwAAKIAJE1vcnRhbDE2MwQADAAAowAkTW9ydGFsMTY0BAAMAACkACRNb3J0YWwxNjUEAAwAAKUAJE1vcnRhbDE2NgQADAAApgAkTW9ydGFsMTY3BAAMAACnACRNb3J0YWwxNjgEAAwAAKgAJE1vcnRhbDE2OQQADAAAqQAkTW9ydGFsMTcwBAAMAACqACRNb3J0YWwxNzEEAAwAAKsAJE1vcnRhbDE3MgQADAAArAAkTW9ydGFsMTczBAAMAACtACRNb3J0YWwxNzQEAAwAAK4AJE1vcnRhbDE3NQQADAAArwAkTW9ydGFsMTc2BAAMAACwACRNb3J0YWwxNzcEAAwAALEAJE1vcnRhbDE3OAQADAAAsgAkTW9ydGFsMTc5BAAMAACzACRNb3J0YWwxODAEAAwAALQAJE1vcnRhbDE4MQQADAAAtQAkTW9ydGFsMTgyBAAMAAC2ACRNb3J0YWwxODMEAAwAALcAJE1vcnRhbDE4NAQADAAAuAAkTW9ydGFsMTg1BAAMAAC5ACRNb3J0YWwxODYEAAwAALoAJE1vcnRhbDE4NwQADAAAuwAkTW9ydGFsMTg4BAAMAAC8ACRNb3J0YWwxODkEAAwAAL0AJE1vcnRhbDE5MAQADAAAvgAkTW9ydGFsMTkxBAAMAAC/ACRNb3J0YWwxOTIEAAwAAMAAJE1vcnRhbDE5MwQADAAAwQAkTW9ydGFsMTk0BAAMAADCACRNb3J0YWwxOTUEAAwAAMMAJE1vcnRhbDE5NgQADAAAxAAkTW9ydGFsMTk3BAAMAADFACRNb3J0YWwxOTgEAAwAAMYAJE1vcnRhbDE5OQQADAAAxwAkTW9ydGFsMjAwBAAMAADIACRNb3J0YWwyMDEEAAwAAMkAJE1vcnRhbDIwMgQADAAAygAkTW9ydGFsMjAzBAAMAADLACRNb3J0YWwyMDQEAAwAAMwAJE1vcnRhbDIwNQQADAAAzQAkTW9ydGFsMjA2BAAMAADOACRNb3J0YWwyMDcEAAwAAM8AJE1vcnRhbDIwOAQADAAA0AAkTW9ydGFsMjA5BAAMAADRACRNb3J0YWwyMTAEAAwAANIAJE1vcnRhbDIxMQQADAAA0wAkTW9ydGFsMjEyBAAMAADUACRNb3J0YWwyMTMEAAwAANUAJE1vcnRhbDIxNAQADAAA1gAkTW9ydGFsMjE1BAAMAADXACRNb3J0YWwyMTYEAAwAANgAJE1vcnRhbDIxNwQADAAA2QAkTW9ydGFsMjE4BAAMAADaACRNb3J0YWwyMTkEAAwAANsAJE1vcnRhbDIyMAQADAAA3AAkTW9ydGFsMjIxBAAMAADdACRNb3J0YWwyMjIEAAwAAN4AJE1vcnRhbDIyMwQADAAA3wAkTW9ydGFsMjI0BAAMAADgACRNb3J0YWwyMjUEAAwAAOEAJE1vcnRhbDIyNgQADAAA4gAkTW9ydGFsMjI3BAAMAADjACRNb3J0YWwyMjgEAAwAAOQAJE1vcnRhbDIyOQQADAAA5QAkTW9ydGFsMjMwBAAMAADmACRNb3J0YWwyMzEEAAwAAOcAJE1vcnRhbDIzMgQADAAA6AAkTW9ydGFsMjMzBAAMAADpACRNb3J0YWwyMzQEAAwAAOoAJE1vcnRhbDIzNQQADAAA6wAkTW9ydGFsMjM2BAAMAADsACRNb3J0YWwyMzcEAAwAAO0AJE1vcnRhbDIzOAQADAAA7gAkTW9ydGFsMjM5BAAMAADvACRNb3J0YWwyNDAEAAwAAPAAJE1vcnRhbDI0MQQADAAA8QAkTW9ydGFsMjQyBAAMAADyACRNb3J0YWwyNDMEAAwAAPMAJE1vcnRhbDI0NAQADAAA9AAkTW9ydGFsMjQ1BAAMAAD1ACRNb3J0YWwyNDYEAAwAAPYAJE1vcnRhbDI0NwQADAAA9wAkTW9ydGFsMjQ4BAAMAAD4ACRNb3J0YWwyNDkEAAwAAPkAJE1vcnRhbDI1MAQADAAA+gAkTW9ydGFsMjUxBAAMAAD7ACRNb3J0YWwyNTIEAAwAAPwAJE1vcnRhbDI1MwQADAAA/QAkTW9ydGFsMjU0BAAMAAD+ACRNb3J0YWwyNTUEAAwAAP8AALUHEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9ucyxjaGVja19ub25jZShDaGVja05vbmNlBARUAAAEAGABIFQ6Ok5vbmNlAAC5BxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMwY2hlY2tfd2VpZ2h0LENoZWNrV2VpZ2h0BARUAAAAAL0HCIhwYWxsZXRfYXNzZXRfY29udmVyc2lvbl90eF9wYXltZW50UENoYXJnZUFzc2V0VHhQYXltZW50BARUAAAIAQx0aXBRAQEwQmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWQ5AwFIT3B0aW9uPFQ6OkFzc2V0SWQ+AADBBwh0ZnJhbWVfbWV0YWRhdGFfaGFzaF9leHRlbnNpb25EQ2hlY2tNZXRhZGF0YUhhc2gEBFQAAAQBEG1vZGXFBwEQTW9kZQAAxQcIdGZyYW1lX21ldGFkYXRhX2hhc2hfZXh0ZW5zaW9uEE1vZGUAAQggRGlzYWJsZWQAAAAcRW5hYmxlZAABAADJBxA0cGFsbGV0X3Jldml2ZQxldm0wdHhfZXh0ZW5zaW9uJFNldE9yaWdpbgQEVAAAAADNBwgwZnJhbWVfc3lzdGVtLEFjY291bnRJbmZvCBROb25jZQE4LEFjY291bnREYXRhAdEHABQBFG5vbmNlOAEUTm9uY2UAASRjb25zdW1lcnM4ASBSZWZDb3VudAABJHByb3ZpZGVyczgBIFJlZkNvdW50AAEsc3VmZmljaWVudHM4ASBSZWZDb3VudAABEGRhdGHRBwEsQWNjb3VudERhdGEAANEHDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsQWNjb3VudERhdGEEHEJhbGFuY2UBVQEAEAEQZnJlZVUBARxCYWxhbmNlAAEgcmVzZXJ2ZWRVAQEcQmFsYW5jZQABGGZyb3plblUBARxCYWxhbmNlAAEUZmxhZ3PVBwEoRXh0cmFGbGFncwAA1QcMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyhFeHRyYUZsYWdzAAAEAFUBARB1MTI4AADZBww0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUAREBAAwBGG5vcm1hbBEBAQRUAAEsb3BlcmF0aW9uYWwRAQEEVAABJG1hbmRhdG9yeREBAQRUAADdBwAAAuEHAOEHCDBmcmFtZV9zeXN0ZW0sRXZlbnRSZWNvcmQIBEUB5QcEVAE8AAwBFHBoYXNlsQkBFFBoYXNlAAEUZXZlbnTlBwEERQABGHRvcGljc8ABGFZlYzxUPgAA5QcIcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUwUnVudGltZUV2ZW50AAHkGFN5c3RlbQQA6QcBcGZyYW1lX3N5c3RlbTo6RXZlbnQ8UnVudGltZT4AAAA8UGFyYWNoYWluU3lzdGVtBAARCAG8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbTo6RXZlbnQ8UnVudGltZT4AAQAgUHJlaW1hZ2UEABUIAXxwYWxsZXRfcHJlaW1hZ2U6OkV2ZW50PFJ1bnRpbWU+AAUAJFNjaGVkdWxlcgQAGQgBgHBhbGxldF9zY2hlZHVsZXI6OkV2ZW50PFJ1bnRpbWU+AAYAKFBhcmFtZXRlcnMEACEIAYRwYWxsZXRfcGFyYW1ldGVyczo6RXZlbnQ8UnVudGltZT4ABwBQTXVsdGlCbG9ja01pZ3JhdGlvbnMEAEkIAYRwYWxsZXRfbWlncmF0aW9uczo6RXZlbnQ8UnVudGltZT4ACAAgQmFsYW5jZXMEAE0IAXxwYWxsZXRfYmFsYW5jZXM6OkV2ZW50PFJ1bnRpbWU+AAoASFRyYW5zYWN0aW9uUGF5bWVudAQAhQgBqHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50OjpFdmVudDxSdW50aW1lPgALADhBc3NldFR4UGF5bWVudAQAiQgByHBhbGxldF9hc3NldF9jb252ZXJzaW9uX3R4X3BheW1lbnQ6OkV2ZW50PFJ1bnRpbWU+AA0AHFZlc3RpbmcEAI0IAXhwYWxsZXRfdmVzdGluZzo6RXZlbnQ8UnVudGltZT4ADgAYQ2xhaW1zBACRCAF0cGFsbGV0X2NsYWltczo6RXZlbnQ8UnVudGltZT4ADwBEQ29sbGF0b3JTZWxlY3Rpb24EAJUIAaRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uOjpFdmVudDxSdW50aW1lPgAVABxTZXNzaW9uBACZCAF4cGFsbGV0X3Nlc3Npb246OkV2ZW50PFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQAnQgBpGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU6OkV2ZW50PFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBAChCAFocGFsbGV0X3hjbTo6RXZlbnQ8UnVudGltZT4AHwAoQ3VtdWx1c1hjbQQAsQgBiGN1bXVsdXNfcGFsbGV0X3hjbTo6RXZlbnQ8UnVudGltZT4AIABEVG9LdXNhbWFYY21Sb3V0ZXIEALUIAVkBcGFsbGV0X3hjbV9icmlkZ2VfaHViX3JvdXRlcjo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X3hjbV9icmlkZ2VfaHViX3JvdXRlcgo6Okluc3RhbmNlMT4AIgAwTWVzc2FnZVF1ZXVlBAC5CAGQcGFsbGV0X21lc3NhZ2VfcXVldWU6OkV2ZW50PFJ1bnRpbWU+ACMAYFNub3dicmlkZ2VTeXN0ZW1Gcm9udGVuZAQAwQgBxHNub3dicmlkZ2VfcGFsbGV0X3N5c3RlbV9mcm9udGVuZDo6RXZlbnQ8UnVudGltZT4AJAAcVXRpbGl0eQQAxQgBVHBhbGxldF91dGlsaXR5OjpFdmVudAAoACBNdWx0aXNpZwQAyQgBfHBhbGxldF9tdWx0aXNpZzo6RXZlbnQ8UnVudGltZT4AKQAUUHJveHkEAM0IAXBwYWxsZXRfcHJveHk6OkV2ZW50PFJ1bnRpbWU+ACoAHEluZGljZXMEANUIAXhwYWxsZXRfaW5kaWNlczo6RXZlbnQ8UnVudGltZT4AKwAYQXNzZXRzBADZCAHccGFsbGV0X2Fzc2V0czo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UxPgAyABxVbmlxdWVzBADdCAF4cGFsbGV0X3VuaXF1ZXM6OkV2ZW50PFJ1bnRpbWU+ADMAEE5mdHMEAOEIAWxwYWxsZXRfbmZ0czo6RXZlbnQ8UnVudGltZT4ANAA0Rm9yZWlnbkFzc2V0cwQA6QgB3HBhbGxldF9hc3NldHM6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMj4ANQAoUG9vbEFzc2V0cwQA7QgB3HBhbGxldF9hc3NldHM6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMz4ANgA8QXNzZXRDb252ZXJzaW9uBADxCAGccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb246OkV2ZW50PFJ1bnRpbWU+ADcANEFzc2V0c0ZyZWV6ZXIEAAUJAR0BcGFsbGV0X2Fzc2V0c19mcmVlemVyOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYXNzZXRzX2ZyZWV6ZXI6Okluc3RhbmNlMT4AOAAwQXNzZXRzSG9sZGVyBAAJCQEVAXBhbGxldF9hc3NldHNfaG9sZGVyOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYXNzZXRzX2hvbGRlcjo6SW5zdGFuY2UxPgA5ACBUcmVhc3VyeQQADQkBfHBhbGxldF90cmVhc3VyeTo6RXZlbnQ8UnVudGltZT4APABAQ29udmljdGlvblZvdGluZwQAEQkBoHBhbGxldF9jb252aWN0aW9uX3ZvdGluZzo6RXZlbnQ8UnVudGltZT4APQAkUmVmZXJlbmRhBAAVCQGAcGFsbGV0X3JlZmVyZW5kYTo6RXZlbnQ8UnVudGltZT4APgAkV2hpdGVsaXN0BAAdCQGAcGFsbGV0X3doaXRlbGlzdDo6RXZlbnQ8UnVudGltZT4AQAAgQm91bnRpZXMEAC0JAXxwYWxsZXRfYm91bnRpZXM6OkV2ZW50PFJ1bnRpbWU+AEEANENoaWxkQm91bnRpZXMEADEJAZRwYWxsZXRfY2hpbGRfYm91bnRpZXM6OkV2ZW50PFJ1bnRpbWU+AEIAJEFzc2V0UmF0ZQQANQkBhHBhbGxldF9hc3NldF9yYXRlOjpFdmVudDxSdW50aW1lPgBDAEhNdWx0aUFzc2V0Qm91bnRpZXMEADkJAaxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXM6OkV2ZW50PFJ1bnRpbWU+AEQADERhcAQAPQkBaHBhbGxldF9kYXA6OkV2ZW50PFJ1bnRpbWU+AEUASFN0YXRlVHJpZU1pZ3JhdGlvbgQARQkBrHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbjo6RXZlbnQ8UnVudGltZT4ARgA8Tm9taW5hdGlvblBvb2xzBABRCQGccGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkV2ZW50PFJ1bnRpbWU+AFAAJFZvdGVyTGlzdAQAWQkB9HBhbGxldF9iYWdzX2xpc3Q6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9iYWdzX2xpc3Q6Okluc3RhbmNlMT4AUgBARGVsZWdhdGVkU3Rha2luZwQAXQkBoHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZzo6RXZlbnQ8UnVudGltZT4AUwA8U3Rha2luZ1JjQ2xpZW50BABhCQG4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50OjpFdmVudDxSdW50aW1lPgBUAEhNdWx0aUJsb2NrRWxlY3Rpb24EAGkJAdBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s6OkV2ZW50PFJ1bnRpbWU+AFUAaE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyBABtCQH4cGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjp2ZXJpZmllcjo6RXZlbnQ8UnVudGltZT4AVgBgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkBAB9CQHwcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpzaWduZWQ6OkV2ZW50PFJ1bnRpbWU+AFgAHFN0YWtpbmcEAIEJAZBwYWxsZXRfc3Rha2luZ19hc3luYzo6RXZlbnQ8UnVudGltZT4AWQBETWVtYmVyc1N1YnNjcmliZXIEAJEJAbxpbmRpdl9wYWxsZXRfbWVtYmVyc19zdWJzY3JpYmVyOjpFdmVudDxSdW50aW1lPgBhADRBbGlhc0FjY291bnRzBACVCQGsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzOjpFdmVudDxSdW50aW1lPgBiABBQZ2FzBACZCQGEaW5kaXZfcGFsbGV0X3BnYXM6OkV2ZW50PFJ1bnRpbWU+AGMAGFJldml2ZQQAnQkBdHBhbGxldF9yZXZpdmU6OkV2ZW50PFJ1bnRpbWU+AGQAMERvdG5zR2F0ZXdheQQAoQkBqGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5OjpFdmVudDxSdW50aW1lPgCYAERPcmlnaW5SZXN0cmljdGlvbgQApQkBvGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb246OkV2ZW50PFJ1bnRpbWU+AJkAEFN1ZG8EAKkJAWxwYWxsZXRfc3Vkbzo6RXZlbnQ8UnVudGltZT4A+wA0UGdhc0FsbG93YW5jZQQArQkBlHBhbGxldF9wZ2FzX2FsbG93YW5jZTo6RXZlbnQ8UnVudGltZT4A/AAA6QcMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXZlbnQEBFQAASBARXh0cmluc2ljU3VjY2VzcwQBNGRpc3BhdGNoX2luZm/tBwFERGlzcGF0Y2hFdmVudEluZm8AAASQQW4gZXh0cmluc2ljIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuPEV4dHJpbnNpY0ZhaWxlZAgBOGRpc3BhdGNoX2Vycm9y+QcBNERpc3BhdGNoRXJyb3IAATRkaXNwYXRjaF9pbmZv7QcBRERpc3BhdGNoRXZlbnRJbmZvAAEEUEFuIGV4dHJpbnNpYyBmYWlsZWQuLENvZGVVcGRhdGVkBAEQaGFzaDwBHFQ6Okhhc2gAAgTQYDpjb2RlYCB3YXMgdXBkYXRlZCB0byB0aGUgY29kZSB3aXRoIHRoZSBnaXZlbiBoYXNoLihOZXdBY2NvdW50BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAADBGhBIG5ldyBhY2NvdW50IHdhcyBjcmVhdGVkLjRLaWxsZWRBY2NvdW50BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAEBFhBbiBhY2NvdW50IHdhcyByZWFwZWQuIFJlbWFya2VkCAEYc2VuZGVyBAEwVDo6QWNjb3VudElkAAEQaGFzaDwBHFQ6Okhhc2gABQRwT24gb24tY2hhaW4gcmVtYXJrIGhhcHBlbmVkLkRVcGdyYWRlQXV0aG9yaXplZAgBJGNvZGVfaGFzaDwBHFQ6Okhhc2gAATRjaGVja192ZXJzaW9uWQEBEGJvb2wABgRoQW4gdXBncmFkZSB3YXMgYXV0aG9yaXplZC6AUmVqZWN0ZWRJbnZhbGlkQXV0aG9yaXplZFVwZ3JhZGUIASRjb2RlX2hhc2g8ARxUOjpIYXNoAAEUZXJyb3L5BwE0RGlzcGF0Y2hFcnJvcgAHBBEBQW4gaW52YWxpZCBhdXRob3JpemVkIHVwZ3JhZGUgd2FzIHJlamVjdGVkIHdoaWxlIHRyeWluZyB0byBhcHBseSBpdC4EcEV2ZW50IGZvciB0aGUgU3lzdGVtIHBhbGxldC7tBwgwZnJhbWVfc3lzdGVtRERpc3BhdGNoRXZlbnRJbmZvAAAMARh3ZWlnaHQRAQEYV2VpZ2h0AAEUY2xhc3PxBwE0RGlzcGF0Y2hDbGFzcwABIHBheXNfZmVl9QcBEFBheXMAAPEHDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoNERpc3BhdGNoQ2xhc3MAAQwYTm9ybWFsAAAALE9wZXJhdGlvbmFsAAEAJE1hbmRhdG9yeQACAAD1Bww0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaBBQYXlzAAEIDFllcwAAAAhObwABAAD5Bwgoc3BfcnVudGltZTREaXNwYXRjaEVycm9yAAE8FE90aGVyAAAAMENhbm5vdExvb2t1cAABACRCYWRPcmlnaW4AAgAYTW9kdWxlBAD9BwEsTW9kdWxlRXJyb3IAAwBEQ29uc3VtZXJSZW1haW5pbmcABAAsTm9Qcm92aWRlcnMABQBAVG9vTWFueUNvbnN1bWVycwAGABRUb2tlbgQAAQgBKFRva2VuRXJyb3IABwAoQXJpdGhtZXRpYwQABQgBPEFyaXRobWV0aWNFcnJvcgAIADRUcmFuc2FjdGlvbmFsBAAJCAFIVHJhbnNhY3Rpb25hbEVycm9yAAkAJEV4aGF1c3RlZAAKAChDb3JydXB0aW9uAAsALFVuYXZhaWxhYmxlAAwAOFJvb3ROb3RBbGxvd2VkAA0AEFRyaWUEAA0IASRUcmllRXJyb3IADgAA/QcIKHNwX3J1bnRpbWUsTW9kdWxlRXJyb3IAAAgBFGluZGV4DAEIdTgAARRlcnJvcnABjFt1ODsgTUFYX01PRFVMRV9FUlJPUl9FTkNPREVEX1NJWkVdAAABCAgoc3BfcnVudGltZShUb2tlbkVycm9yAAEoQEZ1bmRzVW5hdmFpbGFibGUAAAAwT25seVByb3ZpZGVyAAEAMEJlbG93TWluaW11bQACADBDYW5ub3RDcmVhdGUAAwAwVW5rbm93bkFzc2V0AAQAGEZyb3plbgAFACxVbnN1cHBvcnRlZAAGAEBDYW5ub3RDcmVhdGVIb2xkAAcANE5vdEV4cGVuZGFibGUACAAcQmxvY2tlZAAJAAAFCAg0c3BfYXJpdGhtZXRpYzxBcml0aG1ldGljRXJyb3IAAQwkVW5kZXJmbG93AAAAIE92ZXJmbG93AAEAOERpdmlzaW9uQnlaZXJvAAIAAAkICChzcF9ydW50aW1lSFRyYW5zYWN0aW9uYWxFcnJvcgABCDBMaW1pdFJlYWNoZWQAAAAcTm9MYXllcgABAAANCAwoc3BfcnVudGltZTBwcm92aW5nX3RyaWUkVHJpZUVycm9yAAE4QEludmFsaWRTdGF0ZVJvb3QAAABISW5jb21wbGV0ZURhdGFiYXNlAAEAUFZhbHVlQXRJbmNvbXBsZXRlS2V5AAIAMERlY29kZXJFcnJvcgADACxJbnZhbGlkSGFzaAAEADBEdXBsaWNhdGVLZXkABQA4RXh0cmFuZW91c05vZGUABgA8RXh0cmFuZW91c1ZhbHVlAAcAXEV4dHJhbmVvdXNIYXNoUmVmZXJlbmNlAAgAVEludmFsaWRDaGlsZFJlZmVyZW5jZQAJADRWYWx1ZU1pc21hdGNoAAoAPEluY29tcGxldGVQcm9vZgALADBSb290TWlzbWF0Y2gADAAsRGVjb2RlRXJyb3IADQAAEQgMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0YcGFsbGV0FEV2ZW50BARUAAEYYFZhbGlkYXRpb25GdW5jdGlvblN0b3JlZAAABNBUaGUgdmFsaWRhdGlvbiBmdW5jdGlvbiBoYXMgYmVlbiBzY2hlZHVsZWQgdG8gYXBwbHkuZFZhbGlkYXRpb25GdW5jdGlvbkFwcGxpZWQEAVRyZWxheV9jaGFpbl9ibG9ja19udW04AVRSZWxheUNoYWluQmxvY2tOdW1iZXIAAQRFAVRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIHdhcyBhcHBsaWVkIGFzIG9mIHRoZSBjb250YWluZWQgcmVsYXkgY2hhaW4gYmxvY2sgbnVtYmVyLmxWYWxpZGF0aW9uRnVuY3Rpb25EaXNjYXJkZWQAAgSwVGhlIHJlbGF5LWNoYWluIGFib3J0ZWQgdGhlIHVwZ3JhZGUgcHJvY2Vzcy5gRG93bndhcmRNZXNzYWdlc1JlY2VpdmVkBAEUY291bnQ4AQx1MzIAAwQBAVNvbWUgZG93bndhcmQgbWVzc2FnZXMgaGF2ZSBiZWVuIHJlY2VpdmVkIGFuZCB3aWxsIGJlIHByb2Nlc3NlZC5kRG93bndhcmRNZXNzYWdlc1Byb2Nlc3NlZAgBLHdlaWdodF91c2VkEQEBGFdlaWdodAABIGRtcV9oZWFkPAFEcmVsYXlfY2hhaW46Okhhc2gABATgRG93bndhcmQgbWVzc2FnZXMgd2VyZSBwcm9jZXNzZWQgdXNpbmcgdGhlIGdpdmVuIHdlaWdodC5EVXB3YXJkTWVzc2FnZVNlbnQEATBtZXNzYWdlX2hhc2g9BwE8T3B0aW9uPFhjbUhhc2g+AAUEuEFuIHVwd2FyZCBtZXNzYWdlIHdhcyBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQVCAw8cGFsbGV0X3ByZWltYWdlGHBhbGxldBRFdmVudAQEVAABDBROb3RlZAQBEGhhc2g8ARxUOjpIYXNoAAAEaEEgcHJlaW1hZ2UgaGFzIGJlZW4gbm90ZWQuJFJlcXVlc3RlZAQBEGhhc2g8ARxUOjpIYXNoAAEEeEEgcHJlaW1hZ2UgaGFzIGJlZW4gcmVxdWVzdGVkLhxDbGVhcmVkBAEQaGFzaDwBHFQ6Okhhc2gAAgRsQSBwcmVpbWFnZSBoYXMgYmVuIGNsZWFyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0GQgMQHBhbGxldF9zY2hlZHVsZXIYcGFsbGV0FEV2ZW50BARUAAEoJFNjaGVkdWxlZAgBEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4OAEMdTMyAAAEUFNjaGVkdWxlZCBzb21lIHRhc2suIENhbmNlbGVkCAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAEUaW5kZXg4AQx1MzIAAQRMQ2FuY2VsZWQgc29tZSB0YXNrLihEaXNwYXRjaGVkDAEQdGFza8wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkPQcBQE9wdGlvbjxUYXNrTmFtZT4AARhyZXN1bHQdCAE4RGlzcGF0Y2hSZXN1bHQAAgRURGlzcGF0Y2hlZCBzb21lIHRhc2suIFJldHJ5U2V0EAEQdGFza8wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkPQcBQE9wdGlvbjxUYXNrTmFtZT4AARhwZXJpb2Q4AURCbG9ja051bWJlckZvcjxUPgABHHJldHJpZXMMAQh1OAADBKBTZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBzb21lIHRhc2suOFJldHJ5Q2FuY2VsbGVkCAEQdGFza8wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkPQcBQE9wdGlvbjxUYXNrTmFtZT4ABASsQ2FuY2VsIGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3Igc29tZSB0YXNrLjxDYWxsVW5hdmFpbGFibGUIARB0YXNrzAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWQ9BwFAT3B0aW9uPFRhc2tOYW1lPgAFBCkBVGhlIGNhbGwgZm9yIHRoZSBwcm92aWRlZCBoYXNoIHdhcyBub3QgZm91bmQgc28gdGhlIHRhc2sgaGFzIGJlZW4gYWJvcnRlZC44UGVyaW9kaWNGYWlsZWQIARB0YXNrzAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWQ9BwFAT3B0aW9uPFRhc2tOYW1lPgAGBD0BVGhlIGdpdmVuIHRhc2sgd2FzIHVuYWJsZSB0byBiZSByZW5ld2VkIHNpbmNlIHRoZSBhZ2VuZGEgaXMgZnVsbCBhdCB0aGF0IGJsb2NrLixSZXRyeUZhaWxlZAgBEHRhc2vMAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZD0HAUBPcHRpb248VGFza05hbWU+AAcIXQFUaGUgZ2l2ZW4gdGFzayB3YXMgdW5hYmxlIHRvIGJlIHJldHJpZWQgc2luY2UgdGhlIGFnZW5kYSBpcyBmdWxsIGF0IHRoYXQgYmxvY2sgb3IgdGhlcmWcd2FzIG5vdCBlbm91Z2ggd2VpZ2h0IHRvIHJlc2NoZWR1bGUgaXQuVFBlcm1hbmVudGx5T3ZlcndlaWdodAgBEHRhc2vMAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZD0HAUBPcHRpb248VGFza05hbWU+AAgE8FRoZSBnaXZlbiB0YXNrIGNhbiBuZXZlciBiZSBleGVjdXRlZCBzaW5jZSBpdCBpcyBvdmVyd2VpZ2h0LkBBZ2VuZGFJbmNvbXBsZXRlBAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAkEhEFnZW5kYSBpcyBpbmNvbXBsZXRlIGZyb20gYHdoZW5gLgQwRXZlbnRzIHR5cGUuHQgEGFJlc3VsdAgEVAEQBEUB+QcBCAhPawQAEAAAAAAMRXJyBAD5BwAAAQAAIQgMRHBhbGxldF9wYXJhbWV0ZXJzGHBhbGxldBRFdmVudAQEVAABBBxVcGRhdGVkDAEMa2V5JQgBxDxUOjpSdW50aW1lUGFyYW1ldGVycyBhcyBBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkEZFRoZSBrZXkgdGhhdCB3YXMgdXBkYXRlZC4BJG9sZF92YWx1ZTUIAexPcHRpb248PFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzIGFzIEFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlPgR8VGhlIG9sZCB2YWx1ZSBiZWZvcmUgdGhpcyBjYWxsLgEkbmV3X3ZhbHVlNQgB7E9wdGlvbjw8VDo6UnVudGltZVBhcmFtZXRlcnMgYXMgQWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWU+BHhUaGUgbmV3IHZhbHVlIGFmdGVyIHRoaXMgY2FsbC4ADFBBIFBhcmFtZXRlciB3YXMgc2V0LgC8SXMgYWxzbyBlbWl0dGVkIHdoZW4gdGhlIHZhbHVlIHdhcyBub3QgY2hhbmdlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQlCAhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZVBSdW50aW1lUGFyYW1ldGVyc0tleQABDDxTdGFraW5nRWxlY3Rpb24EACkIAcUBPGR5bmFtaWNfcGFyYW1zOjpzdGFraW5nX2VsZWN0aW9uOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0cwo6OmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkAAAAkU2NoZWR1bGVyBAAtCAGpATxkeW5hbWljX3BhcmFtczo6c2NoZWR1bGVyOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0czo6CmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkAAQAwTWVzc2FnZVF1ZXVlBAAxCAG5ATxkeW5hbWljX3BhcmFtczo6bWVzc2FnZV9xdWV1ZTo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHM6OgpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6S2V5AAIAACkIEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb240UGFyYW1ldGVyc0tleQABHCxTaWduZWRQaGFzZQQA3AEsU2lnbmVkUGhhc2UAAABQTWF4U2lnbmVkU3VibWlzc2lvbnMEAOQBUE1heFNpZ25lZFN1Ym1pc3Npb25zAAEANFVuc2lnbmVkUGhhc2UEAOgBNFVuc2lnbmVkUGhhc2UAAgAoTWluZXJQYWdlcwQA7AEoTWluZXJQYWdlcwADAERNYXhFbGVjdGluZ1ZvdGVycwQA8AFETWF4RWxlY3RpbmdWb3RlcnMABABYVGFyZ2V0U25hcHNob3RQZXJCbG9jawQA9AFYVGFyZ2V0U25hcHNob3RQZXJCbG9jawAFADhNYXhFcmFEdXJhdGlvbgQA+AE4TWF4RXJhRHVyYXRpb24ABgAALQgQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMkc2NoZWR1bGVyNFBhcmFtZXRlcnNLZXkAAQhQTWF4U2NoZWR1bGVkUGVyQmxvY2sEAAUBAVBNYXhTY2hlZHVsZWRQZXJCbG9jawAAADRNYXhpbXVtV2VpZ2h0BAAJAQE0TWF4aW11bVdlaWdodAABAAAxCBBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtczRtZXNzYWdlX3F1ZXVlNFBhcmFtZXRlcnNLZXkAAQg8TWF4T25Jbml0V2VpZ2h0BAAZAQE8TWF4T25Jbml0V2VpZ2h0AAAAPE1heE9uSWRsZVdlaWdodAQAIQEBPE1heE9uSWRsZVdlaWdodAABAAA1CAQYT3B0aW9uBARUATkIAQgQTm9uZQAAABBTb21lBAA5CAAAAQAAOQgIcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWVYUnVudGltZVBhcmFtZXRlcnNWYWx1ZQABDDxTdGFraW5nRWxlY3Rpb24EAD0IAc0BPGR5bmFtaWNfcGFyYW1zOjpzdGFraW5nX2VsZWN0aW9uOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0cwo6OmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZQAAACRTY2hlZHVsZXIEAEEIAbEBPGR5bmFtaWNfcGFyYW1zOjpzY2hlZHVsZXI6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAEAME1lc3NhZ2VRdWV1ZQQARQgBwQE8ZHluYW1pY19wYXJhbXM6Om1lc3NhZ2VfcXVldWU6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAIAAD0IEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb248UGFyYW1ldGVyc1ZhbHVlAAEcLFNpZ25lZFBoYXNlBAA4ASxCbG9ja051bWJlcgAAAFBNYXhTaWduZWRTdWJtaXNzaW9ucwQAOAEMdTMyAAEANFVuc2lnbmVkUGhhc2UEADgBLEJsb2NrTnVtYmVyAAIAKE1pbmVyUGFnZXMEADgBDHUzMgADAERNYXhFbGVjdGluZ1ZvdGVycwQAOAEMdTMyAAQAWFRhcmdldFNuYXBzaG90UGVyQmxvY2sEADgBDHUzMgAFADhNYXhFcmFEdXJhdGlvbgQAKAEMdTY0AAYAAEEIEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zJHNjaGVkdWxlcjxQYXJhbWV0ZXJzVmFsdWUAAQhQTWF4U2NoZWR1bGVkUGVyQmxvY2sEADgBDHUzMgAAADRNYXhpbXVtV2VpZ2h0BAARAQEYV2VpZ2h0AAEAAEUIEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zNG1lc3NhZ2VfcXVldWU8UGFyYW1ldGVyc1ZhbHVlAAEIPE1heE9uSW5pdFdlaWdodAQADQEBOE9wdGlvbjxXZWlnaHQ+AAAAPE1heE9uSWRsZVdlaWdodAQADQEBOE9wdGlvbjxXZWlnaHQ+AAEAAEkIDERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQURXZlbnQEBFQAASA4VXBncmFkZVN0YXJ0ZWQEAShtaWdyYXRpb25zOAEMdTMyENBUaGUgbnVtYmVyIG9mIG1pZ3JhdGlvbnMgdGhhdCB0aGlzIHVwZ3JhZGUgY29udGFpbnMuAEEBVGhpcyBjYW4gYmUgdXNlZCB0byBkZXNpZ24gYSBwcm9ncmVzcyBpbmRpY2F0b3IgaW4gY29tYmluYXRpb24gd2l0aCBjb3VudGluZyB0aGXMYE1pZ3JhdGlvbkNvbXBsZXRlZGAgYW5kIGBNaWdyYXRpb25Ta2lwcGVkYCBldmVudHMuAAxoQSBSdW50aW1lIHVwZ3JhZGUgc3RhcnRlZC4A+El0cyBlbmQgaXMgaW5kaWNhdGVkIGJ5IGBVcGdyYWRlQ29tcGxldGVkYCBvciBgVXBncmFkZUZhaWxlZGAuQFVwZ3JhZGVDb21wbGV0ZWQAAQyYVGhlIGN1cnJlbnQgcnVudGltZSB1cGdyYWRlIGNvbXBsZXRlZC4AHQFUaGlzIGltcGxpZXMgdGhhdCBhbGwgb2YgaXRzIG1pZ3JhdGlvbnMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBhcyB3ZWxsLjRVcGdyYWRlRmFpbGVkAAIMXFJ1bnRpbWUgdXBncmFkZSBmYWlsZWQuAOhUaGlzIGlzIHZlcnkgYmFkIGFuZCB3aWxsIHJlcXVpcmUgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24uQE1pZ3JhdGlvblNraXBwZWQEARRpbmRleDgBDHUzMgQpAVRoZSBpbmRleCBvZiB0aGUgc2tpcHBlZCBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuAwQJAUEgbWlncmF0aW9uIHdhcyBza2lwcGVkIHNpbmNlIGl0IHdhcyBhbHJlYWR5IGV4ZWN1dGVkIGluIHRoZSBwYXN0LkRNaWdyYXRpb25BZHZhbmNlZAgBFGluZGV4OAEMdTMyBAkBVGhlIGluZGV4IG9mIHRoZSBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuARB0b29rOAFEQmxvY2tOdW1iZXJGb3I8VD4E1FRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgdGhpcyBtaWdyYXRpb24gdG9vayBzbyBmYXIuBARcQSBtaWdyYXRpb24gcHJvZ3Jlc3NlZC5ITWlncmF0aW9uQ29tcGxldGVkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4FBFhBIE1pZ3JhdGlvbiBjb21wbGV0ZWQuPE1pZ3JhdGlvbkZhaWxlZAgBFGluZGV4OAEMdTMyBAkBVGhlIGluZGV4IG9mIHRoZSBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuARB0b29rOAFEQmxvY2tOdW1iZXJGb3I8VD4E1FRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgdGhpcyBtaWdyYXRpb24gdG9vayBzbyBmYXIuBgxMQSBNaWdyYXRpb24gZmFpbGVkLgBNAVRoaXMgaW1wbGllcyB0aGF0IHRoZSB3aG9sZSB1cGdyYWRlIGZhaWxlZCBhbmQgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcmVxdWlyZWQuPEhpc3RvcmljQ2xlYXJlZAQBLG5leHRfY3Vyc29ySQEBPE9wdGlvbjxWZWM8dTg+PgToU2hvdWxkIGJlIHBhc3NlZCB0byBgY2xlYXJfaGlzdG9yaWNgIGluIGEgc3VjY2Vzc2l2ZSBjYWxsLgcEyFRoZSBzZXQgb2YgaGlzdG9yaWNhbCBtaWdyYXRpb25zIGhhcyBiZWVuIGNsZWFyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0TQgMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXZlbnQIBFQABEkAAXgcRW5kb3dlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAATBmcmVlX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQAABLhBbiBhY2NvdW50IHdhcyBjcmVhdGVkIHdpdGggc29tZSBmcmVlIGJhbGFuY2UuIER1c3RMb3N0CAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAEIPQFBbiBhY2NvdW50IHdhcyByZW1vdmVkIHdob3NlIGJhbGFuY2Ugd2FzIG5vbi16ZXJvIGJ1dCBiZWxvdyBFeGlzdGVudGlhbERlcG9zaXQseHJlc3VsdGluZyBpbiBhbiBvdXRyaWdodCBsb3NzLiBUcmFuc2ZlcgwBEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAIETFRyYW5zZmVyIHN1Y2NlZWRlZC4oQmFsYW5jZVNldAgBDHdobwQBMFQ6OkFjY291bnRJZAABEGZyZWVVAQEoVDo6QmFsYW5jZQADBGhBIGJhbGFuY2Ugd2FzIHNldCBieSByb290LiBSZXNlcnZlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAQE4FNvbWUgYmFsYW5jZSB3YXMgcmVzZXJ2ZWQgKG1vdmVkIGZyb20gZnJlZSB0byByZXNlcnZlZCkuKFVucmVzZXJ2ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAFBOhTb21lIGJhbGFuY2Ugd2FzIHVucmVzZXJ2ZWQgKG1vdmVkIGZyb20gcmVzZXJ2ZWQgdG8gZnJlZSkuSFJlc2VydmVSZXBhdHJpYXRlZBABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAFIZGVzdGluYXRpb25fc3RhdHVzUQgBGFN0YXR1cwAGCE0BU29tZSBiYWxhbmNlIHdhcyBtb3ZlZCBmcm9tIHRoZSByZXNlcnZlIG9mIHRoZSBmaXJzdCBhY2NvdW50IHRvIHRoZSBzZWNvbmQgYWNjb3VudC7YRmluYWwgYXJndW1lbnQgaW5kaWNhdGVzIHRoZSBkZXN0aW5hdGlvbiBiYWxhbmNlIHR5cGUuHERlcG9zaXQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAHBNhTb21lIGFtb3VudCB3YXMgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4gV2l0aGRyYXcIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAIBB0BU29tZSBhbW91bnQgd2FzIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4cU2xhc2hlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAkEAQFTb21lIGFtb3VudCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciBtaXNiZWhhdmlvcikuGE1pbnRlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAoEnFNvbWUgYW1vdW50IHdhcyBtaW50ZWQgaW50byBhbiBhY2NvdW50LjBNaW50ZWRDcmVkaXQEARhhbW91bnRVAQEoVDo6QmFsYW5jZQALBOBTb21lIGNyZWRpdCB3YXMgYmFsYW5jZWQgYW5kIGFkZGVkIHRvIHRoZSBUb3RhbElzc3VhbmNlLhhCdXJuZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAMBJxTb21lIGFtb3VudCB3YXMgYnVybmVkIGZyb20gYW4gYWNjb3VudC4oQnVybmVkRGVidAQBGGFtb3VudFUBAShUOjpCYWxhbmNlAA0EzFNvbWUgZGVidCBoYXMgYmVlbiBkcm9wcGVkIGZyb20gdGhlIFRvdGFsIElzc3VhbmNlLiRTdXNwZW5kZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAOBBUBU29tZSBhbW91bnQgd2FzIHN1c3BlbmRlZCBmcm9tIGFuIGFjY291bnQgKGl0IGNhbiBiZSByZXN0b3JlZCBsYXRlcikuIFJlc3RvcmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UADwSkU29tZSBhbW91bnQgd2FzIHJlc3RvcmVkIGludG8gYW4gYWNjb3VudC4gVXBncmFkZWQEAQx3aG8EATBUOjpBY2NvdW50SWQAEARgQW4gYWNjb3VudCB3YXMgdXBncmFkZWQuGElzc3VlZAQBGGFtb3VudFUBAShUOjpCYWxhbmNlABEELQFUb3RhbCBpc3N1YW5jZSB3YXMgaW5jcmVhc2VkIGJ5IGBhbW91bnRgLCBjcmVhdGluZyBhIGNyZWRpdCB0byBiZSBiYWxhbmNlZC4kUmVzY2luZGVkBAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAEgQlAVRvdGFsIGlzc3VhbmNlIHdhcyBkZWNyZWFzZWQgYnkgYGFtb3VudGAsIGNyZWF0aW5nIGEgZGVidCB0byBiZSBiYWxhbmNlZC4YTG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAEwRgU29tZSBiYWxhbmNlIHdhcyBsb2NrZWQuIFVubG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAFARoU29tZSBiYWxhbmNlIHdhcyB1bmxvY2tlZC4YRnJvemVuCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAFQRgU29tZSBiYWxhbmNlIHdhcyBmcm96ZW4uGFRoYXdlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlABYEYFNvbWUgYmFsYW5jZSB3YXMgdGhhd2VkLkxUb3RhbElzc3VhbmNlRm9yY2VkCAEMb2xkVQEBKFQ6OkJhbGFuY2UAAQxuZXdVAQEoVDo6QmFsYW5jZQAXBKxUaGUgYFRvdGFsSXNzdWFuY2VgIHdhcyBmb3JjZWZ1bGx5IGNoYW5nZWQuEEhlbGQMARhyZWFzb25VCAFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAYBIBTb21lIGJhbGFuY2Ugd2FzIHBsYWNlZCBvbiBob2xkLihCdXJuZWRIZWxkDAEYcmVhc29uVQgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAGQSgSGVsZCBiYWxhbmNlIHdhcyBidXJuZWQgZnJvbSBhbiBhY2NvdW50LjhUcmFuc2Zlck9uSG9sZBABGHJlYXNvblUIAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABEGRlc3QEATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAaBBUBQSB0cmFuc2ZlciBvZiBgYW1vdW50YCBvbiBob2xkIGZyb20gYHNvdXJjZWAgdG8gYGRlc3RgIHdhcyBpbml0aWF0ZWQuPFRyYW5zZmVyQW5kSG9sZBABGHJlYXNvblUIAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABEGRlc3QEATBUOjpBY2NvdW50SWQAASx0cmFuc2ZlcnJlZFUBAShUOjpCYWxhbmNlABsECQFUaGUgYHRyYW5zZmVycmVkYCBiYWxhbmNlIGlzIHBsYWNlZCBvbiBob2xkIGF0IHRoZSBgZGVzdGAgYWNjb3VudC4gUmVsZWFzZWQMARhyZWFzb25VCAFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAcBJBTb21lIGJhbGFuY2Ugd2FzIHJlbGVhc2VkIGZyb20gaG9sZC4oVW5leHBlY3RlZAQAgQgBOFVuZXhwZWN0ZWRLaW5kAB0EsEFuIHVuZXhwZWN0ZWQvZGVmZW5zaXZlIGV2ZW50IHdhcyB0cmlnZ2VyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0UQgUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjNEJhbGFuY2VTdGF0dXMAAQgQRnJlZQAAACBSZXNlcnZlZAABAABVCAhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZURSdW50aW1lSG9sZFJlYXNvbgABKCBQcmVpbWFnZQQAWQgBbHBhbGxldF9wcmVpbWFnZTo6SG9sZFJlYXNvbgAFABxTZXNzaW9uBABdCAFocGFsbGV0X3Nlc3Npb246OkhvbGRSZWFzb24AFgAsUG9sa2Fkb3RYY20EAGEIAVhwYWxsZXRfeGNtOjpIb2xkUmVhc29uAB8ASE11bHRpQXNzZXRCb3VudGllcwQAZQgBnHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczo6SG9sZFJlYXNvbgBEAEhTdGF0ZVRyaWVNaWdyYXRpb24EAGkIAZxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkhvbGRSZWFzb24ARgBARGVsZWdhdGVkU3Rha2luZwQAbQgBkHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZzo6SG9sZFJlYXNvbgBTADxTdGFraW5nUmNDbGllbnQEAHEIAahwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQ6OkhvbGRSZWFzb24AVABgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkBAB1CAHgcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpzaWduZWQ6OkhvbGRSZWFzb24AWAAcU3Rha2luZwQAeQgBgHBhbGxldF9zdGFraW5nX2FzeW5jOjpIb2xkUmVhc29uAFkAGFJldml2ZQQAfQgBZHBhbGxldF9yZXZpdmU6OkhvbGRSZWFzb24AZAAAWQgMPHBhbGxldF9wcmVpbWFnZRhwYWxsZXQoSG9sZFJlYXNvbgABBCBQcmVpbWFnZQAAAABdCAw4cGFsbGV0X3Nlc3Npb24YcGFsbGV0KEhvbGRSZWFzb24AAQQQS2V5cwAAAABhCAwocGFsbGV0X3hjbRhwYWxsZXQoSG9sZFJlYXNvbgABBDhBdXRob3JpemVBbGlhcwAAAABlCAxscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGHBhbGxldChIb2xkUmVhc29uBARJAAEEOEN1cmF0b3JEZXBvc2l0AAAAAGkIDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0KEhvbGRSZWFzb24AAQQ8U2xhc2hGb3JNaWdyYXRlAAAAAG0IDGBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmcYcGFsbGV0KEhvbGRSZWFzb24AAQREU3Rha2luZ0RlbGVnYXRpb24AAAAAcQgMeHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudBhwYWxsZXQoSG9sZFJlYXNvbgABBBBLZXlzAAAAAHUIEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkGHBhbGxldChIb2xkUmVhc29uAAEEQFNpZ25lZFN1Ym1pc3Npb24AAAAAeQgQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQoSG9sZFJlYXNvbgABBBxTdGFraW5nAAAAAH0IDDRwYWxsZXRfcmV2aXZlGHBhbGxldChIb2xkUmVhc29uAAEMYENvZGVVcGxvYWREZXBvc2l0UmVzZXJ2ZQAAAFRTdG9yYWdlRGVwb3NpdFJlc2VydmUAAQA4QWRkcmVzc01hcHBpbmcAAgAAgQgMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQ4VW5leHBlY3RlZEtpbmQAAQg4QmFsYW5jZVVwZGF0ZWQAAABURmFpbGVkVG9NdXRhdGVBY2NvdW50AAEAAIUIDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBhwYWxsZXQURXZlbnQEBFQAAQRIVHJhbnNhY3Rpb25GZWVQYWlkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEoYWN0dWFsX2ZlZVUBATBCYWxhbmNlT2Y8VD4AAQx0aXBVAQEwQmFsYW5jZU9mPFQ+AAAIWQFBIHRyYW5zYWN0aW9uIGZlZSBgYWN0dWFsX2ZlZWAsIG9mIHdoaWNoIGB0aXBgIHdhcyBhZGRlZCB0byB0aGUgbWluaW11bSBpbmNsdXNpb24gZmVlLFxoYXMgYmVlbiBwYWlkIGJ5IGB3aG9gLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIkIDIhwYWxsZXRfYXNzZXRfY29udmVyc2lvbl90eF9wYXltZW50GHBhbGxldBRFdmVudAQEVAABCDhBc3NldFR4RmVlUGFpZBABDHdobwQBMFQ6OkFjY291bnRJZAABKGFjdHVhbF9mZWVVAQEwQmFsYW5jZU9mPFQ+AAEMdGlwVQEBMEJhbGFuY2VPZjxUPgABIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsuGhhcyBiZWVuIHBhaWQgYnkgYHdob2AgaW4gYW4gYXNzZXQgYGFzc2V0X2lkYC5EQXNzZXRSZWZ1bmRGYWlsZWQEAUhuYXRpdmVfYW1vdW50X2tlcHRVAQEwQmFsYW5jZU9mPFQ+AAEE9EEgc3dhcCBvZiB0aGUgcmVmdW5kIGluIG5hdGl2ZSBjdXJyZW5jeSBiYWNrIHRvIGFzc2V0IGZhaWxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSNCAw4cGFsbGV0X3Zlc3RpbmcYcGFsbGV0FEV2ZW50BARUAAEMOFZlc3RpbmdDcmVhdGVkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABOHNjaGVkdWxlX2luZGV4OAEMdTMyAAAEkEEgdmVzdGluZyBzY2hlZHVsZSBoYXMgYmVlbiBjcmVhdGVkLjhWZXN0aW5nVXBkYXRlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAASB1bnZlc3RlZFUBATBCYWxhbmNlT2Y8VD4AAQhRAVRoZSBhbW91bnQgdmVzdGVkIGhhcyBiZWVuIHVwZGF0ZWQuIFRoaXMgY291bGQgaW5kaWNhdGUgYSBjaGFuZ2UgaW4gZnVuZHMgYXZhaWxhYmxlLiUBVGhlIGJhbGFuY2UgZ2l2ZW4gaXMgdGhlIGFtb3VudCB3aGljaCBpcyBsZWZ0IHVudmVzdGVkIChhbmQgdGh1cyBsb2NrZWQpLkBWZXN0aW5nQ29tcGxldGVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAACBJxBbiBcW2FjY291bnRcXSBoYXMgYmVjb21lIGZ1bGx5IHZlc3RlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSRCBBccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zGHBhbGxldBRFdmVudAQEVAABBBxDbGFpbWVkDAEMd2hvBAEwVDo6QWNjb3VudElkAAFAZXRoZXJldW1fYWRkcmVzc3kBATxFdGhlcmV1bUFkZHJlc3MAARhhbW91bnRVAQEwQmFsYW5jZU9mPFQ+AAAEaFNvbWVvbmUgY2xhaW1lZCBzb21lIERPVHMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0lQgMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEV2ZW50BARUAAEoQE5ld0ludnVsbmVyYWJsZXMEATRpbnZ1bG5lcmFibGVzXQEBRFZlYzxUOjpBY2NvdW50SWQ+AAAEbE5ldyBJbnZ1bG5lcmFibGVzIHdlcmUgc2V0LkRJbnZ1bG5lcmFibGVBZGRlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAAQR0QSBuZXcgSW52dWxuZXJhYmxlIHdhcyBhZGRlZC5MSW52dWxuZXJhYmxlUmVtb3ZlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAAgRwQW4gSW52dWxuZXJhYmxlIHdhcyByZW1vdmVkLlBOZXdEZXNpcmVkQ2FuZGlkYXRlcwQBSGRlc2lyZWRfY2FuZGlkYXRlczgBDHUzMgADBKRUaGUgbnVtYmVyIG9mIGRlc2lyZWQgY2FuZGlkYXRlcyB3YXMgc2V0LkBOZXdDYW5kaWRhY3lCb25kBAEsYm9uZF9hbW91bnRVAQEwQmFsYW5jZU9mPFQ+AAQEbFRoZSBjYW5kaWRhY3kgYm9uZCB3YXMgc2V0LjhDYW5kaWRhdGVBZGRlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0VQEBMEJhbGFuY2VPZjxUPgAFBFxBIG5ldyBjYW5kaWRhdGUgam9pbmVkLlBDYW5kaWRhdGVCb25kVXBkYXRlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0VQEBMEJhbGFuY2VPZjxUPgAGBHBCb25kIG9mIGEgY2FuZGlkYXRlIHVwZGF0ZWQuQENhbmRpZGF0ZVJlbW92ZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAcEYEEgY2FuZGlkYXRlIHdhcyByZW1vdmVkLkRDYW5kaWRhdGVSZXBsYWNlZAwBDG9sZAQBMFQ6OkFjY291bnRJZAABDG5ldwQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAgE9EFuIGFjY291bnQgd2FzIHJlcGxhY2VkIGluIHRoZSBjYW5kaWRhdGUgbGlzdCBieSBhbm90aGVyIG9uZS5oSW52YWxpZEludnVsbmVyYWJsZVNraXBwZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAkIVQFBbiBhY2NvdW50IHdhcyB1bmFibGUgdG8gYmUgYWRkZWQgdG8gdGhlIEludnVsbmVyYWJsZXMgYmVjYXVzZSB0aGV5IGRpZCBub3QgaGF2ZSBrZXlzyHJlZ2lzdGVyZWQuIE90aGVyIEludnVsbmVyYWJsZXMgbWF5IGhhdmUgYmVlbiBzZXQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0mQgMOHBhbGxldF9zZXNzaW9uGHBhbGxldBRFdmVudAQEVAABEChOZXdTZXNzaW9uBAE0c2Vzc2lvbl9pbmRleDgBMFNlc3Npb25JbmRleAAACDkBTmV3IHNlc3Npb24gaGFzIGhhcHBlbmVkLiBOb3RlIHRoYXQgdGhlIGFyZ3VtZW50IGlzIHRoZSBzZXNzaW9uIGluZGV4LCBub3QgdGhlnGJsb2NrIG51bWJlciBhcyB0aGUgdHlwZSBtaWdodCBzdWdnZXN0LiROZXdRdWV1ZWQAAQhJAVRoZSBgTmV3U2Vzc2lvbmAgZXZlbnQgaW4gdGhlIGN1cnJlbnQgYmxvY2sgYWxzbyBpbXBsaWVzIGEgbmV3IHZhbGlkYXRvciBzZXQgdG8gYmUccXVldWVkLkRWYWxpZGF0b3JEaXNhYmxlZAQBJHZhbGlkYXRvcgQBOFQ6OlZhbGlkYXRvcklkAAIEcFZhbGlkYXRvciBoYXMgYmVlbiBkaXNhYmxlZC5IVmFsaWRhdG9yUmVlbmFibGVkBAEkdmFsaWRhdG9yBAE4VDo6VmFsaWRhdG9ySWQAAwR4VmFsaWRhdG9yIGhhcyBiZWVuIHJlLWVuYWJsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0nQgMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEV2ZW50BARUAAEEPFhjbXBNZXNzYWdlU2VudAQBMG1lc3NhZ2VfaGFzaAgBHFhjbUhhc2gAAATAQW4gSFJNUCBtZXNzYWdlIHdhcyBzZW50IHRvIGEgc2libGluZyBwYXJhY2hhaW4uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0oQgMKHBhbGxldF94Y20YcGFsbGV0FEV2ZW50BARUAAF0JEF0dGVtcHRlZAQBHG91dGNvbWWlCAFQeGNtOjpsYXRlc3Q6Ok91dGNvbWUAAASoRXhlY3V0aW9uIG9mIGFuIFhDTSBtZXNzYWdlIHdhcyBhdHRlbXB0ZWQuEFNlbnQQARhvcmlnaW79AQEgTG9jYXRpb24AASxkZXN0aW5hdGlvbv0BASBMb2NhdGlvbgABHG1lc3NhZ2X1AgEcWGNtPCgpPgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAEEYEFuIFhDTSBtZXNzYWdlIHdhcyBzZW50LihTZW5kRmFpbGVkEAEYb3JpZ2lu/QEBIExvY2F0aW9uAAEsZGVzdGluYXRpb279AQEgTG9jYXRpb24AARRlcnJvcq0IASRTZW5kRXJyb3IAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAACBHhBbiBYQ00gbWVzc2FnZSBmYWlsZWQgdG8gc2VuZC48UHJvY2Vzc1hjbUVycm9yDAEYb3JpZ2lu/QEBIExvY2F0aW9uAAEUZXJyb3IlAwEgWGNtRXJyb3IAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAADBIRBbiBYQ00gbWVzc2FnZSBmYWlsZWQgdG8gcHJvY2Vzcy5IVW5leHBlY3RlZFJlc3BvbnNlCAEYb3JpZ2lu/QEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAQMWQFRdWVyeSByZXNwb25zZSByZWNlaXZlZCB3aGljaCBkb2VzIG5vdCBtYXRjaCBhIHJlZ2lzdGVyZWQgcXVlcnkuIFRoaXMgbWF5IGJlIGJlY2F1c2UgYVUBbWF0Y2hpbmcgcXVlcnkgd2FzIG5ldmVyIHJlZ2lzdGVyZWQsIGl0IG1heSBiZSBiZWNhdXNlIGl0IGlzIGEgZHVwbGljYXRlIHJlc3BvbnNlLCBvcnBiZWNhdXNlIHRoZSBxdWVyeSB0aW1lZCBvdXQuNFJlc3BvbnNlUmVhZHkIASBxdWVyeV9pZCgBHFF1ZXJ5SWQAASByZXNwb25zZRkDASBSZXNwb25zZQAFCF0BUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIGlzIHJlYWR5IGZvciB0YWtpbmcgd2l0aCBgdGFrZV9yZXNwb25zZWAuIFRoZXJlIGlzgG5vIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uIGNhbGwuIE5vdGlmaWVkDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgABghZAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgcmVnaXN0ZXJlZCBub3RpZmljYXRpb24gaGFzqGJlZW4gZGlzcGF0Y2hlZCBhbmQgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5LkBOb3RpZnlPdmVyd2VpZ2h0FAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgAATRhY3R1YWxfd2VpZ2h0EQEBGFdlaWdodAABTG1heF9idWRnZXRlZF93ZWlnaHQRAQEYV2VpZ2h0AAcMSQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uWQFjb3VsZCBub3QgYmUgZGlzcGF0Y2hlZCBiZWNhdXNlIHRoZSBkaXNwYXRjaCB3ZWlnaHQgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHdlaWdodORvcmlnaW5hbGx5IGJ1ZGdldGVkIGJ5IHRoaXMgcnVudGltZSBmb3IgdGhlIHF1ZXJ5IHJlc3VsdC5MTm90aWZ5RGlzcGF0Y2hFcnJvcgwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAgIVQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlcmUgd2FzIGEgZ2VuZXJhbCBlcnJvciB3aXRoiGRpc3BhdGNoaW5nIHRoZSBub3RpZmljYXRpb24gY2FsbC5ITm90aWZ5RGVjb2RlRmFpbGVkDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgACQxRAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgZGlzcGF0Y2ggd2FzIHVuYWJsZSB0byBiZVkBZGVjb2RlZCBpbnRvIGEgYENhbGxgOyB0aGlzIG1pZ2h0IGJlIGR1ZSB0byBkaXNwYXRjaCBmdW5jdGlvbiBoYXZpbmcgYSBzaWduYXR1cmUgd2hpY2iUaXMgbm90IGAob3JpZ2luLCBRdWVyeUlkLCBSZXNwb25zZSlgLkBJbnZhbGlkUmVzcG9uZGVyDAEYb3JpZ2lu/QEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAFEZXhwZWN0ZWRfbG9jYXRpb245AwFAT3B0aW9uPExvY2F0aW9uPgAKDFkBRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBvcmlnaW4gbG9jYXRpb24gb2YgdGhlIHJlc3BvbnNlIGRvZXNVAW5vdCBtYXRjaCB0aGF0IGV4cGVjdGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkIGZvciBhIGxhdGVyLCB2YWxpZCwgcmVzcG9uc2UgdG9sYmUgcmVjZWl2ZWQgYW5kIGFjdGVkIHVwb24uXEludmFsaWRSZXNwb25kZXJWZXJzaW9uCAEYb3JpZ2lu/QEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAscUQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIGV4cGVjdGVkIG9yaWdpbiBsb2NhdGlvbiBwbGFjZWQgaW5NAXN0b3JhZ2UgYnkgdGhpcyBydW50aW1lIHByZXZpb3VzbHkgY2Fubm90IGJlIGRlY29kZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQuAEEBVGhpcyBpcyB1bmV4cGVjdGVkIChzaW5jZSBhIGxvY2F0aW9uIHBsYWNlZCBpbiBzdG9yYWdlIGluIGEgcHJldmlvdXNseSBleGVjdXRpbmdNAXJ1bnRpbWUgc2hvdWxkIGJlIHJlYWRhYmxlIHByaW9yIHRvIHF1ZXJ5IHRpbWVvdXQpIGFuZCBkYW5nZXJvdXMgc2luY2UgdGhlIHBvc3NpYmx5WQF2YWxpZCByZXNwb25zZSB3aWxsIGJlIGRyb3BwZWQuIE1hbnVhbCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyBwcm9iYWJseSBnb2luZyB0byBiZRxuZWVkZWQuNFJlc3BvbnNlVGFrZW4EASBxdWVyeV9pZCgBHFF1ZXJ5SWQADATIUmVjZWl2ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVhZCBhbmQgcmVtb3ZlZC40QXNzZXRzVHJhcHBlZAwBEGhhc2g8ARBIMjU2AAEYb3JpZ2lu/QEBIExvY2F0aW9uAAEYYXNzZXRzbQMBPFZlcnNpb25lZEFzc2V0cwANBLhTb21lIGFzc2V0cyBoYXZlIGJlZW4gcGxhY2VkIGluIGFuIGFzc2V0IHRyYXAuVFZlcnNpb25DaGFuZ2VOb3RpZmllZBABLGRlc3RpbmF0aW9u/QEBIExvY2F0aW9uAAEYcmVzdWx0OAEoWGNtVmVyc2lvbgABEGNvc3QBAwEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gADgwlAUFuIFhDTSB2ZXJzaW9uIGNoYW5nZSBub3RpZmljYXRpb24gbWVzc2FnZSBoYXMgYmVlbiBhdHRlbXB0ZWQgdG8gYmUgc2VudC4A4FRoZSBjb3N0IG9mIHNlbmRpbmcgaXQgKGJvcm5lIGJ5IHRoZSBjaGFpbikgaXMgaW5jbHVkZWQuXFN1cHBvcnRlZFZlcnNpb25DaGFuZ2VkCAEgbG9jYXRpb279AQEgTG9jYXRpb24AARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAPCDkBVGhlIHN1cHBvcnRlZCB2ZXJzaW9uIG9mIGEgbG9jYXRpb24gaGFzIGJlZW4gY2hhbmdlZC4gVGhpcyBtaWdodCBiZSB0aHJvdWdoIGFuwGF1dG9tYXRpYyBub3RpZmljYXRpb24gb3IgYSBtYW51YWwgaW50ZXJ2ZW50aW9uLlBOb3RpZnlUYXJnZXRTZW5kRmFpbAwBIGxvY2F0aW9u/QEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAEUZXJyb3IlAwEgWGNtRXJyb3IAEAhZAUEgZ2l2ZW4gbG9jYXRpb24gd2hpY2ggaGFkIGEgdmVyc2lvbiBjaGFuZ2Ugc3Vic2NyaXB0aW9uIHdhcyBkcm9wcGVkIG93aW5nIHRvIGFuIGVycm9yfHNlbmRpbmcgdGhlIG5vdGlmaWNhdGlvbiB0byBpdC5kTm90aWZ5VGFyZ2V0TWlncmF0aW9uRmFpbAgBIGxvY2F0aW9uqQEBRFZlcnNpb25lZExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkABEIWQFBIGdpdmVuIGxvY2F0aW9uIHdoaWNoIGhhZCBhIHZlcnNpb24gY2hhbmdlIHN1YnNjcmlwdGlvbiB3YXMgZHJvcHBlZCBvd2luZyB0byBhbiBlcnJvcrRtaWdyYXRpbmcgdGhlIGxvY2F0aW9uIHRvIG91ciBuZXcgWENNIGZvcm1hdC5USW52YWxpZFF1ZXJpZXJWZXJzaW9uCAEYb3JpZ2lu/QEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkABIcVQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIGV4cGVjdGVkIHF1ZXJpZXIgbG9jYXRpb24gcGxhY2VkIGluTQFzdG9yYWdlIGJ5IHRoaXMgcnVudGltZSBwcmV2aW91c2x5IGNhbm5vdCBiZSBkZWNvZGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkLgBBAVRoaXMgaXMgdW5leHBlY3RlZCAoc2luY2UgYSBsb2NhdGlvbiBwbGFjZWQgaW4gc3RvcmFnZSBpbiBhIHByZXZpb3VzbHkgZXhlY3V0aW5nTQFydW50aW1lIHNob3VsZCBiZSByZWFkYWJsZSBwcmlvciB0byBxdWVyeSB0aW1lb3V0KSBhbmQgZGFuZ2Vyb3VzIHNpbmNlIHRoZSBwb3NzaWJseVkBdmFsaWQgcmVzcG9uc2Ugd2lsbCBiZSBkcm9wcGVkLiBNYW51YWwgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUcbmVlZGVkLjhJbnZhbGlkUXVlcmllchABGG9yaWdpbv0BASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAABQGV4cGVjdGVkX3F1ZXJpZXL9AQEgTG9jYXRpb24AAVBtYXliZV9hY3R1YWxfcXVlcmllcjkDAUBPcHRpb248TG9jYXRpb24+ABMMXQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIHF1ZXJpZXIgbG9jYXRpb24gb2YgdGhlIHJlc3BvbnNlIGRvZXNRAW5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5QVmVyc2lvbk5vdGlmeVN0YXJ0ZWQMASxkZXN0aW5hdGlvbv0BASBMb2NhdGlvbgABEGNvc3QBAwEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFAhZAUEgcmVtb3RlIGhhcyByZXF1ZXN0ZWQgWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBmcm9tIHVzIGFuZCB3ZSBoYXZlIGhvbm9yZWQgaXQuHQFBIHZlcnNpb24gaW5mb3JtYXRpb24gbWVzc2FnZSBpcyBzZW50IHRvIHRoZW0gYW5kIGl0cyBjb3N0IGlzIGluY2x1ZGVkLlhWZXJzaW9uTm90aWZ5UmVxdWVzdGVkDAEsZGVzdGluYXRpb279AQEgTG9jYXRpb24AARBjb3N0AQMBGEFzc2V0cwABKG1lc3NhZ2VfaWQIARxYY21IYXNoABUEPQFXZSBoYXZlIHJlcXVlc3RlZCB0aGF0IGEgcmVtb3RlIGNoYWluIHNlbmQgdXMgWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbnMuYFZlcnNpb25Ob3RpZnlVbnJlcXVlc3RlZAwBLGRlc3RpbmF0aW9u/QEBIExvY2F0aW9uAAEQY29zdAEDARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAWCCUBV2UgaGF2ZSByZXF1ZXN0ZWQgdGhhdCBhIHJlbW90ZSBjaGFpbiBzdG9wcyBzZW5kaW5nIHVzIFhDTSB2ZXJzaW9uIGNoYW5nZThub3RpZmljYXRpb25zLiBGZWVzUGFpZAgBGHBheWluZ/0BASBMb2NhdGlvbgABEGZlZXMBAwEYQXNzZXRzABcEMQFGZWVzIHdlcmUgcGFpZCBmcm9tIGEgbG9jYXRpb24gZm9yIGFuIG9wZXJhdGlvbiAob2Z0ZW4gZm9yIHVzaW5nIGBTZW5kWGNtYCkuNEFzc2V0c0NsYWltZWQMARBoYXNoPAEQSDI1NgABGG9yaWdpbv0BASBMb2NhdGlvbgABGGFzc2V0c20DATxWZXJzaW9uZWRBc3NldHMAGATAU29tZSBhc3NldHMgaGF2ZSBiZWVuIGNsYWltZWQgZnJvbSBhbiBhc3NldCB0cmFwYFZlcnNpb25NaWdyYXRpb25GaW5pc2hlZAQBHHZlcnNpb244AShYY21WZXJzaW9uABkEhEEgWENNIHZlcnNpb24gbWlncmF0aW9uIGZpbmlzaGVkLjxBbGlhc0F1dGhvcml6ZWQMARxhbGlhc2Vy/QEBIExvY2F0aW9uAAEYdGFyZ2V0/QEBIExvY2F0aW9uAAEYZXhwaXJ5/AEsT3B0aW9uPHU2ND4AGghdAUFuIGBhbGlhc2VyYCBsb2NhdGlvbiB3YXMgYXV0aG9yaXplZCBieSBgdGFyZ2V0YCB0byBhbGlhcyBpdCwgYXV0aG9yaXphdGlvbiB2YWxpZCB1bnRpbFhgZXhwaXJ5YCBibG9jayBudW1iZXIuZEFsaWFzQXV0aG9yaXphdGlvblJlbW92ZWQIARxhbGlhc2Vy/QEBIExvY2F0aW9uAAEYdGFyZ2V0/QEBIExvY2F0aW9uABsEzGB0YXJnZXRgIHJlbW92ZWQgYWxpYXMgYXV0aG9yaXphdGlvbiBmb3IgYGFsaWFzZXJgLnBBbGlhc2VzQXV0aG9yaXphdGlvbnNSZW1vdmVkBAEYdGFyZ2V0/QEBIExvY2F0aW9uABwEqGB0YXJnZXRgIHJlbW92ZWQgYWxsIGFsaWFzIGF1dGhvcml6YXRpb25zLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldKUIECxzdGFnaW5nX3hjbQh2NRh0cmFpdHMcT3V0Y29tZQABDCBDb21wbGV0ZQQBEHVzZWQRAQEYV2VpZ2h0AAAAKEluY29tcGxldGUIARB1c2VkEQEBGFdlaWdodAABFGVycm9yqQgBQEluc3RydWN0aW9uRXJyb3IAAQAURXJyb3IEAKkIAUBJbnN0cnVjdGlvbkVycm9yAAIAAKkIECxzdGFnaW5nX3hjbQh2NRh0cmFpdHNASW5zdHJ1Y3Rpb25FcnJvcgAACAEUaW5kZXgMAUBJbnN0cnVjdGlvbkluZGV4AAEUZXJyb3IlAwEURXJyb3IAAK0IEAx4Y20IdjMYdHJhaXRzJFNlbmRFcnJvcgABHDROb3RBcHBsaWNhYmxlAAAAJFRyYW5zcG9ydAABAChVbnJvdXRhYmxlAAIAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQAAwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAQAPE1pc3NpbmdBcmd1bWVudAAFABBGZWVzAAYAALEIDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0FEV2ZW50BARUAAEMNEludmFsaWRGb3JtYXQEAAgBIFt1ODsgMzJdAAAIgERvd253YXJkIG1lc3NhZ2UgaXMgaW52YWxpZCBYQ00uIFxbIGlkIFxdSFVuc3VwcG9ydGVkVmVyc2lvbgQACAEgW3U4OyAzMl0AAQi8RG93bndhcmQgbWVzc2FnZSBpcyB1bnN1cHBvcnRlZCB2ZXJzaW9uIG9mIFhDTS4gXFsgaWQgXF1ARXhlY3V0ZWREb3dud2FyZAgACAEgW3U4OyAzMl0AAKUIARxPdXRjb21lAAIIxERvd253YXJkIG1lc3NhZ2UgZXhlY3V0ZWQgd2l0aCB0aGUgZ2l2ZW4gb3V0Y29tZS5EXFsgaWQsIG91dGNvbWUgXF0EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXS1CAxwcGFsbGV0X3hjbV9icmlkZ2VfaHViX3JvdXRlchhwYWxsZXQURXZlbnQIBFQABEkAAQhoRGVsaXZlcnlGZWVGYWN0b3JEZWNyZWFzZWQEASRuZXdfdmFsdWUNBQEkRml4ZWRVMTI4BJROZXcgdmFsdWUgb2YgdGhlIGBEZWxpdmVyeUZlZUZhY3RvcmAuAAScRGVsaXZlcnkgZmVlIGZhY3RvciBoYXMgYmVlbiBkZWNyZWFzZWQuaERlbGl2ZXJ5RmVlRmFjdG9ySW5jcmVhc2VkBAEkbmV3X3ZhbHVlDQUBJEZpeGVkVTEyOASUTmV3IHZhbHVlIG9mIHRoZSBgRGVsaXZlcnlGZWVGYWN0b3JgLgEEnERlbGl2ZXJ5IGZlZSBmYWN0b3IgaGFzIGJlZW4gaW5jcmVhc2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldLkIDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQURXZlbnQEBFQAARBAUHJvY2Vzc2luZ0ZhaWxlZAwBCGlkPAEQSDI1NgSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2lusQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEUZXJyb3K9CAFMUHJvY2Vzc01lc3NhZ2VFcnJvchBgVGhlIGVycm9yIHRoYXQgb2NjdXJyZWQuAEkBVGhpcyBlcnJvciBpcyBwcmV0dHkgb3BhcXVlLiBNb3JlIGZpbmUtZ3JhaW5lZCBlcnJvcnMgbmVlZCB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgAEVQFNZXNzYWdlIGRpc2NhcmRlZCBkdWUgdG8gYW4gZXJyb3IgaW4gdGhlIGBNZXNzYWdlUHJvY2Vzc29yYCAodXN1YWxseSBhIGZvcm1hdCBlcnJvcikuJFByb2Nlc3NlZBABCGlkPAEQSDI1NgSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2lusQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEsd2VpZ2h0X3VzZWQRAQEYV2VpZ2h0BMBIb3cgbXVjaCB3ZWlnaHQgd2FzIHVzZWQgdG8gcHJvY2VzcyB0aGUgbWVzc2FnZS4BHHN1Y2Nlc3NZAQEQYm9vbBiIV2hldGhlciB0aGUgbWVzc2FnZSB3YXMgcHJvY2Vzc2VkLgBJAU5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IG1lYW4gdGhhdCB0aGUgdW5kZXJseWluZyBgTWVzc2FnZVByb2Nlc3NvcmAgd2FzIGludGVybmFsbHk1AXN1Y2Nlc3NmdWwuIEl0ICpzb2xlbHkqIG1lYW5zIHRoYXQgdGhlIE1RIHBhbGxldCB3aWxsIHRyZWF0IHRoaXMgYXMgYSBzdWNjZXNzTQFjb25kaXRpb24gYW5kIGRpc2NhcmQgdGhlIG1lc3NhZ2UuIEFueSBpbnRlcm5hbCBlcnJvciBuZWVkcyB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgEEVE1lc3NhZ2UgaXMgcHJvY2Vzc2VkLkhPdmVyd2VpZ2h0RW5xdWV1ZWQQAQhpZAgBIFt1ODsgMzJdBJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW6xAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuAShwYWdlX2luZGV4OAEkUGFnZUluZGV4BGBUaGUgcGFnZSBvZiB0aGUgbWVzc2FnZS4BNG1lc3NhZ2VfaW5kZXg4ARxUOjpTaXplBKRUaGUgaW5kZXggb2YgdGhlIG1lc3NhZ2Ugd2l0aGluIHRoZSBwYWdlLgIEjE1lc3NhZ2UgcGxhY2VkIGluIG92ZXJ3ZWlnaHQgcXVldWUuKFBhZ2VSZWFwZWQIARhvcmlnaW6xAwFITWVzc2FnZU9yaWdpbk9mPFQ+BFhUaGUgcXVldWUgb2YgdGhlIHBhZ2UuARRpbmRleDgBJFBhZ2VJbmRleARYVGhlIGluZGV4IG9mIHRoZSBwYWdlLgMEVFRoaXMgcGFnZSB3YXMgcmVhcGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldL0IEDRmcmFtZV9zdXBwb3J0GHRyYWl0cyBtZXNzYWdlc0xQcm9jZXNzTWVzc2FnZUVycm9yAAEYJEJhZEZvcm1hdAAAABxDb3JydXB0AAEALFVuc3VwcG9ydGVkAAIAKE92ZXJ3ZWlnaHQEABEBARhXZWlnaHQAAwAUWWllbGQABABEU3RhY2tMaW1pdFJlYWNoZWQABQAAwQgMhHNub3dicmlkZ2VfcGFsbGV0X3N5c3RlbV9mcm9udGVuZBhwYWxsZXQURXZlbnQEBFQAAQgsTWVzc2FnZVNlbnQQARhvcmlnaW79AQEgTG9jYXRpb24AASxkZXN0aW5hdGlvbv0BASBMb2NhdGlvbgABHG1lc3NhZ2X1AgEcWGNtPCgpPgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAAEPEFuIFhDTSB3YXMgc2VudGhFeHBvcnRPcGVyYXRpbmdNb2RlQ2hhbmdlZAQBEG1vZGW5AwE0T3BlcmF0aW5nTW9kZQABBERTZXQgT3BlcmF0aW5nTW9kZQR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMUIDDhwYWxsZXRfdXRpbGl0eRhwYWxsZXQURXZlbnQAASBAQmF0Y2hJbnRlcnJ1cHRlZAgBFGluZGV4OAEMdTMyAAEUZXJyb3L5BwE0RGlzcGF0Y2hFcnJvcgAACFUBQmF0Y2ggb2YgZGlzcGF0Y2hlcyBkaWQgbm90IGNvbXBsZXRlIGZ1bGx5LiBJbmRleCBvZiBmaXJzdCBmYWlsaW5nIGRpc3BhdGNoIGdpdmVuLCBhc0h3ZWxsIGFzIHRoZSBlcnJvci44QmF0Y2hDb21wbGV0ZWQAAQTIQmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgZnVsbHkgd2l0aCBubyBlcnJvci5gQmF0Y2hDb21wbGV0ZWRXaXRoRXJyb3JzAAIEtEJhdGNoIG9mIGRpc3BhdGNoZXMgY29tcGxldGVkIGJ1dCBoYXMgZXJyb3JzLjRJdGVtQ29tcGxldGVkAAMEHQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIG5vIGVycm9yLihJdGVtRmFpbGVkBAEUZXJyb3L5BwE0RGlzcGF0Y2hFcnJvcgAEBBEBQSBzaW5nbGUgaXRlbSB3aXRoaW4gYSBCYXRjaCBvZiBkaXNwYXRjaGVzIGhhcyBjb21wbGV0ZWQgd2l0aCBlcnJvci4wRGlzcGF0Y2hlZEFzBAEYcmVzdWx0HQgBOERpc3BhdGNoUmVzdWx0AAUEWEEgY2FsbCB3YXMgZGlzcGF0Y2hlZC5ESWZFbHNlTWFpblN1Y2Nlc3MABgRkTWFpbiBjYWxsIHdhcyBkaXNwYXRjaGVkLlBJZkVsc2VGYWxsYmFja0NhbGxlZAQBKG1haW5fZXJyb3L5BwE0RGlzcGF0Y2hFcnJvcgAHBIRUaGUgZmFsbGJhY2sgY2FsbCB3YXMgZGlzcGF0Y2hlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTJCAw8cGFsbGV0X211bHRpc2lnGHBhbGxldBRFdmVudAQEVAABFCxOZXdNdWx0aXNpZwwBJGFwcHJvdmluZwQBMFQ6OkFjY291bnRJZAABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAAASMQSBuZXcgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWd1bi5ATXVsdGlzaWdBcHByb3ZhbBABJGFwcHJvdmluZwQBMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludBUEAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAABBMhBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBhcHByb3ZlZCBieSBzb21lb25lLkBNdWx0aXNpZ0V4ZWN1dGVkFAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50FQQBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEYcmVzdWx0HQgBOERpc3BhdGNoUmVzdWx0AAIEnEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGV4ZWN1dGVkLkRNdWx0aXNpZ0NhbmNlbGxlZBABKGNhbmNlbGxpbmcEATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnQVBAFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAAwSgQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gY2FuY2VsbGVkLjBEZXBvc2l0UG9rZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAABLG9sZF9kZXBvc2l0VQEBMEJhbGFuY2VPZjxUPgABLG5ld19kZXBvc2l0VQEBMEJhbGFuY2VPZjxUPgAEBPBUaGUgZGVwb3NpdCBmb3IgYSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gdXBkYXRlZC9wb2tlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTNCAwwcGFsbGV0X3Byb3h5GHBhbGxldBRFdmVudAQEVAABHDRQcm94eUV4ZWN1dGVkBAEYcmVzdWx0HQgBOERpc3BhdGNoUmVzdWx0AAAEvEEgcHJveHkgd2FzIGV4ZWN1dGVkIGNvcnJlY3RseSwgd2l0aCB0aGUgZ2l2ZW4uLFB1cmVDcmVhdGVkGAEQcHVyZQQBMFQ6OkFjY291bnRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGUhBAEwVDo6UHJveHlUeXBlAAFQZGlzYW1iaWd1YXRpb25faW5kZXjRAwEMdTE2AAEIYXQ4AURCbG9ja051bWJlckZvcjxUPgABPGV4dHJpbnNpY19pbmRleDgBDHUzMgABCNxBIHB1cmUgYWNjb3VudCBoYXMgYmVlbiBjcmVhdGVkIGJ5IG5ldyBwcm94eSB3aXRoIGdpdmVukGRpc2FtYmlndWF0aW9uIGluZGV4IGFuZCBwcm94eSB0eXBlLihQdXJlS2lsbGVkEAEQcHVyZQQBMFQ6OkFjY291bnRJZAABHHNwYXduZXIEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlIQQBMFQ6OlByb3h5VHlwZQABUGRpc2FtYmlndWF0aW9uX2luZGV40QMBDHUxNgACBJxBIHB1cmUgcHJveHkgd2FzIGtpbGxlZCBieSBpdHMgc3Bhd25lci4kQW5ub3VuY2VkDAEQcmVhbAQBMFQ6OkFjY291bnRJZAABFHByb3h5BAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgADBOBBbiBhbm5vdW5jZW1lbnQgd2FzIHBsYWNlZCB0byBtYWtlIGEgY2FsbCBpbiB0aGUgZnV0dXJlLihQcm94eUFkZGVkEAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdGVlBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZSEEATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAQESEEgcHJveHkgd2FzIGFkZGVkLjBQcm94eVJlbW92ZWQQASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0ZWUEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlIQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4ABQRQQSBwcm94eSB3YXMgcmVtb3ZlZC4wRGVwb3NpdFBva2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEQa2luZNEIASxEZXBvc2l0S2luZAABLG9sZF9kZXBvc2l0VQEBMEJhbGFuY2VPZjxUPgABLG5ld19kZXBvc2l0VQEBMEJhbGFuY2VPZjxUPgAGBAkBQSBkZXBvc2l0IHN0b3JlZCBmb3IgcHJveGllcyBvciBhbm5vdW5jZW1lbnRzIHdhcyBwb2tlZCAvIHVwZGF0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV00QgIMHBhbGxldF9wcm94eSxEZXBvc2l0S2luZAABCBxQcm94aWVzAAAANEFubm91bmNlbWVudHMAAQAA1QgMOHBhbGxldF9pbmRpY2VzGHBhbGxldBRFdmVudAQEVAABEDRJbmRleEFzc2lnbmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAAAR0QSBhY2NvdW50IGluZGV4IHdhcyBhc3NpZ25lZC4oSW5kZXhGcmVlZAQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAEEvEEgYWNjb3VudCBpbmRleCBoYXMgYmVlbiBmcmVlZCB1cCAodW5hc3NpZ25lZCkuLEluZGV4RnJvemVuCAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAAQx3aG8EATBUOjpBY2NvdW50SWQAAgToQSBhY2NvdW50IGluZGV4IGhhcyBiZWVuIGZyb3plbiB0byBpdHMgY3VycmVudCBhY2NvdW50IElELjBEZXBvc2l0UG9rZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAABLG9sZF9kZXBvc2l0VQEBMEJhbGFuY2VPZjxUPgABLG5ld19kZXBvc2l0VQEBMEJhbGFuY2VPZjxUPgADBOhBIGRlcG9zaXQgdG8gcmVzZXJ2ZSBhbiBpbmRleCBoYXMgYmVlbiBwb2tlZC9yZWNvbnNpZGVyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV02QgMNHBhbGxldF9hc3NldHMYcGFsbGV0FEV2ZW50CARUAARJAAGAHENyZWF0ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARxjcmVhdG9yBAEwVDo6QWNjb3VudElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAAR0U29tZSBhc3NldCBjbGFzcyB3YXMgY3JlYXRlZC4YSXNzdWVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQABBGBTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZC4sVHJhbnNmZXJyZWQQASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQACBHRTb21lIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkLhhCdXJuZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABHGJhbGFuY2VVAQEoVDo6QmFsYW5jZQADBGxTb21lIGFzc2V0cyB3ZXJlIGRlc3Ryb3llZC4sVGVhbUNoYW5nZWQQASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhpc3N1ZXIEATBUOjpBY2NvdW50SWQAARRhZG1pbgQBMFQ6OkFjY291bnRJZAABHGZyZWV6ZXIEATBUOjpBY2NvdW50SWQABARwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLjBPd25lckNoYW5nZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAFBEhUaGUgb3duZXIgY2hhbmdlZC4YRnJvemVuCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAYEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgZnJvemVuLhhUaGF3ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABwR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyB0aGF3ZWQuLEFzc2V0RnJvemVuBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAgEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgZnJvemVuLixBc3NldFRoYXdlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAJBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIHRoYXdlZC5EQWNjb3VudHNEZXN0cm95ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAUhhY2NvdW50c19kZXN0cm95ZWQ4AQx1MzIAAUhhY2NvdW50c19yZW1haW5pbmc4AQx1MzIACgSgQWNjb3VudHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhBcHByb3ZhbHNEZXN0cm95ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAUxhcHByb3ZhbHNfZGVzdHJveWVkOAEMdTMyAAFMYXBwcm92YWxzX3JlbWFpbmluZzgBDHUzMgALBKRBcHByb3ZhbHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhEZXN0cnVjdGlvblN0YXJ0ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQADATQQW4gYXNzZXQgY2xhc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZGVzdHJveWVkLiREZXN0cm95ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQADQR0QW4gYXNzZXQgY2xhc3Mgd2FzIGRlc3Ryb3llZC4wRm9yY2VDcmVhdGVkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQADgSMU29tZSBhc3NldCBjbGFzcyB3YXMgZm9yY2UtY3JlYXRlZC4sTWV0YWRhdGFTZXQUASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVuWQEBEGJvb2wADwScTmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYW4gYXNzZXQuPE1ldGFkYXRhQ2xlYXJlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAQBJxNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBhc3NldC5AQXBwcm92ZWRUcmFuc2ZlchABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAEQQxAShBZGRpdGlvbmFsKSBmdW5kcyBoYXZlIGJlZW4gYXBwcm92ZWQgZm9yIHRyYW5zZmVyIHRvIGEgZGVzdGluYXRpb24gYWNjb3VudC5EQXBwcm92YWxDYW5jZWxsZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkABIE8EFuIGFwcHJvdmFsIGZvciBhY2NvdW50IGBkZWxlZ2F0ZWAgd2FzIGNhbmNlbGxlZCBieSBgb3duZXJgLkxUcmFuc2ZlcnJlZEFwcHJvdmVkFAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAEwgxAUFuIGBhbW91bnRgIHdhcyB0cmFuc2ZlcnJlZCBpbiBpdHMgZW50aXJldHkgZnJvbSBgb3duZXJgIHRvIGBkZXN0aW5hdGlvbmAgYnlgdGhlIGFwcHJvdmVkIGBkZWxlZ2F0ZWAuSEFzc2V0U3RhdHVzQ2hhbmdlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAUBPhBbiBhc3NldCBoYXMgaGFkIGl0cyBhdHRyaWJ1dGVzIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlhBc3NldE1pbkJhbGFuY2VDaGFuZ2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAE8bmV3X21pbl9iYWxhbmNlVQEBKFQ6OkJhbGFuY2UAFQQBAVRoZSBtaW5fYmFsYW5jZSBvZiBhbiBhc3NldCBoYXMgYmVlbiB1cGRhdGVkIGJ5IHRoZSBhc3NldCBvd25lci4cVG91Y2hlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABJGRlcG9zaXRvcgQBMFQ6OkFjY291bnRJZAAWBPxTb21lIGFjY291bnQgYHdob2Agd2FzIGNyZWF0ZWQgd2l0aCBhIGRlcG9zaXQgZnJvbSBgZGVwb3NpdG9yYC4cQmxvY2tlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAXBHxTb21lIGFjY291bnQgYHdob2Agd2FzIGJsb2NrZWQuJERlcG9zaXRlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlABgE3FNvbWUgYXNzZXRzIHdlcmUgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4kV2l0aGRyYXduDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAGQQhAVNvbWUgYXNzZXRzIHdlcmUgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLjxSZXNlcnZlc1VwZGF0ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAASByZXNlcnZlczEEAUxWZWM8VDo6UmVzZXJ2ZURhdGE+ABoE2FJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHNldCBvciB1cGRhdGVkIGZvciBgYXNzZXRfaWRgLjxSZXNlcnZlc1JlbW92ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAGwS8UmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgcmVtb3ZlZCBmb3IgYGFzc2V0X2lkYC4wSXNzdWVkQ3JlZGl0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAHATEU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQgYXMgQ3JlZGl0IChubyBvd25lciB5ZXQpLjBCdXJuZWRDcmVkaXQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAdBIRTb21lIGFzc2V0cyBDcmVkaXQgd2FzIGRlc3Ryb3llZC4oSXNzdWVkRGVidAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAB4EvFNvbWUgYXNzZXRzIHdlcmUgYnVybmVkIGFuZCBhIERlYnQgd2FzIGNyZWF0ZWQuKEJ1cm5lZERlYnQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAfBMxTb21lIGFzc2V0cyBEZWJ0IHdhcyBkZXN0cm95ZWQgKGFuZCBhc3NldHMgaXNzdWVkKS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTdCAw4cGFsbGV0X3VuaXF1ZXMYcGFsbGV0FEV2ZW50CARUAARJAAFsHENyZWF0ZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEbEEgYGNvbGxlY3Rpb25gIHdhcyBjcmVhdGVkLjBGb3JjZUNyZWF0ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAQSEQSBgY29sbGVjdGlvbmAgd2FzIGZvcmNlLWNyZWF0ZWQuJERlc3Ryb3llZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAgR0QSBgY29sbGVjdGlvbmAgd2FzIGRlc3Ryb3llZC4YSXNzdWVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAADBFRBbiBgaXRlbWAgd2FzIGlzc3VlZC4sVHJhbnNmZXJyZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAAEBGhBbiBgaXRlbWAgd2FzIHRyYW5zZmVycmVkLhhCdXJuZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUEYEFuIGBpdGVtYCB3YXMgZGVzdHJveWVkLhhGcm96ZW4IAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAGBFxTb21lIGBpdGVtYCB3YXMgZnJvemVuLhhUaGF3ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAHBFxTb21lIGBpdGVtYCB3YXMgdGhhd2VkLkBDb2xsZWN0aW9uRnJvemVuBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAIBHRTb21lIGBjb2xsZWN0aW9uYCB3YXMgZnJvemVuLkBDb2xsZWN0aW9uVGhhd2VkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAJBHRTb21lIGBjb2xsZWN0aW9uYCB3YXMgdGhhd2VkLjBPd25lckNoYW5nZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkbmV3X293bmVyBAEwVDo6QWNjb3VudElkAAoESFRoZSBvd25lciBjaGFuZ2VkLixUZWFtQ2hhbmdlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARhpc3N1ZXIEATBUOjpBY2NvdW50SWQAARRhZG1pbgQBMFQ6OkFjY291bnRJZAABHGZyZWV6ZXIEATBUOjpBY2NvdW50SWQACwRwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLkBBcHByb3ZlZFRyYW5zZmVyEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAwIMQFBbiBgaXRlbWAgb2YgYSBgY29sbGVjdGlvbmAgaGFzIGJlZW4gYXBwcm92ZWQgYnkgdGhlIGBvd25lcmAgZm9yIHRyYW5zZmVyIGJ5NGEgYGRlbGVnYXRlYC5EQXBwcm92YWxDYW5jZWxsZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQADQgZAUFuIGFwcHJvdmFsIGZvciBhIGBkZWxlZ2F0ZWAgYWNjb3VudCB0byB0cmFuc2ZlciB0aGUgYGl0ZW1gIG9mIGFuIGl0ZW2oYGNvbGxlY3Rpb25gIHdhcyBjYW5jZWxsZWQgYnkgaXRzIGBvd25lcmAuREl0ZW1TdGF0dXNDaGFuZ2VkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAOBBEBQSBgY29sbGVjdGlvbmAgaGFzIGhhZCBpdHMgYXR0cmlidXRlcyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5UQ29sbGVjdGlvbk1ldGFkYXRhU2V0DAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGFFBAF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuWQEBEGJvb2wADwS0TmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYSBgY29sbGVjdGlvbmAuZENvbGxlY3Rpb25NZXRhZGF0YUNsZWFyZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkABAEtE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGEgYGNvbGxlY3Rpb25gLixNZXRhZGF0YVNldBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGF0YUUEAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AASRpc19mcm96ZW5ZAQEQYm9vbAARBJhOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBpdGVtLjxNZXRhZGF0YUNsZWFyZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAASBJhNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBpdGVtLixSZWRlcG9zaXRlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAUBzdWNjZXNzZnVsX2l0ZW1zQQQBOFZlYzxUOjpJdGVtSWQ+ABMEmE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGl0ZW0uMEF0dHJpYnV0ZVNldBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXnBAwFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWV4AXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAUBAUBTmV3IGF0dHJpYnV0ZSBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGEgYGNvbGxlY3Rpb25gIG9yIGBpdGVtYC5AQXR0cmlidXRlQ2xlYXJlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXnBAwFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+ABUEBQFBdHRyaWJ1dGUgbWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAgb3IgYGl0ZW1gLmhPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABQG1heWJlX2NvbGxlY3Rpb27gAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAWBMBPd25lcnNoaXAgYWNjZXB0YW5jZSBoYXMgY2hhbmdlZCBmb3IgYW4gYWNjb3VudC5YQ29sbGVjdGlvbk1heFN1cHBseVNldAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXhfc3VwcGx5OAEMdTMyABcEpE1heCBzdXBwbHkgaGFzIGJlZW4gc2V0IGZvciBhIGNvbGxlY3Rpb24uMEl0ZW1QcmljZVNldBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUcHJpY2VVAQE8SXRlbVByaWNlPFQsIEk+AAFEd2hpdGVsaXN0ZWRfYnV5ZXKNAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AGASMVGhlIHByaWNlIHdhcyBzZXQgZm9yIHRoZSBpbnN0YW5jZS5ASXRlbVByaWNlUmVtb3ZlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABkEnFRoZSBwcmljZSBmb3IgdGhlIGluc3RhbmNlIHdhcyByZW1vdmVkLihJdGVtQm91Z2h0FAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZVUBATxJdGVtUHJpY2U8VCwgST4AARhzZWxsZXIEATBUOjpBY2NvdW50SWQAARRidXllcgQBMFQ6OkFjY291bnRJZAAaBExBbiBpdGVtIHdhcyBib3VnaHQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV04QgMLHBhbGxldF9uZnRzGHBhbGxldBRFdmVudAgEVAAESQABmBxDcmVhdGVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABGxBIGBjb2xsZWN0aW9uYCB3YXMgY3JlYXRlZC4wRm9yY2VDcmVhdGVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEEhEEgYGNvbGxlY3Rpb25gIHdhcyBmb3JjZS1jcmVhdGVkLiREZXN0cm95ZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAIEdEEgYGNvbGxlY3Rpb25gIHdhcyBkZXN0cm95ZWQuGElzc3VlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAwRUQW4gYGl0ZW1gIHdhcyBpc3N1ZWQuLFRyYW5zZmVycmVkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQABARoQW4gYGl0ZW1gIHdhcyB0cmFuc2ZlcnJlZC4YQnVybmVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAFBGBBbiBgaXRlbWAgd2FzIGRlc3Ryb3llZC5ISXRlbVRyYW5zZmVyTG9ja2VkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQABgSIQW4gYGl0ZW1gIGJlY2FtZSBub24tdHJhbnNmZXJhYmxlLlBJdGVtVHJhbnNmZXJVbmxvY2tlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAcEeEFuIGBpdGVtYCBiZWNhbWUgdHJhbnNmZXJhYmxlLlBJdGVtUHJvcGVydGllc0xvY2tlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAE0bG9ja19tZXRhZGF0YVkBARBib29sAAE8bG9ja19hdHRyaWJ1dGVzWQEBEGJvb2wACASoYGl0ZW1gIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZXMgd2VyZSBsb2NrZWQuQENvbGxlY3Rpb25Mb2NrZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAkEdFNvbWUgYGNvbGxlY3Rpb25gIHdhcyBsb2NrZWQuME93bmVyQ2hhbmdlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXIEATBUOjpBY2NvdW50SWQACgRIVGhlIG93bmVyIGNoYW5nZWQuLFRlYW1DaGFuZ2VkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3Vlco0BAVBPcHRpb248VDo6QWNjb3VudElkPgABFGFkbWlujQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEcZnJlZXplco0BAVBPcHRpb248VDo6QWNjb3VudElkPgALBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuQFRyYW5zZmVyQXBwcm92ZWQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAASBkZWFkbGluZeABcE9wdGlvbjxCbG9ja051bWJlckZvcjxULCBJPj4ADAgxAUFuIGBpdGVtYCBvZiBhIGBjb2xsZWN0aW9uYCBoYXMgYmVlbiBhcHByb3ZlZCBieSB0aGUgYG93bmVyYCBmb3IgdHJhbnNmZXIgYnk0YSBgZGVsZWdhdGVgLkRBcHByb3ZhbENhbmNlbGxlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAANCBkBQW4gYXBwcm92YWwgZm9yIGEgYGRlbGVnYXRlYCBhY2NvdW50IHRvIHRyYW5zZmVyIHRoZSBgaXRlbWAgb2YgYW4gaXRlbahgY29sbGVjdGlvbmAgd2FzIGNhbmNlbGxlZCBieSBpdHMgYG93bmVyYC5UQWxsQXBwcm92YWxzQ2FuY2VsbGVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBJxBbGwgYXBwcm92YWxzIG9mIGFuIGl0ZW0gZ290IGNhbmNlbGxlZC5cQ29sbGVjdGlvbkNvbmZpZ0NoYW5nZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAA8EAQFBIGBjb2xsZWN0aW9uYCBoYXMgaGFkIGl0cyBjb25maWcgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uVENvbGxlY3Rpb25NZXRhZGF0YVNldAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBkYXRhQQEBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAQBLROZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhIGBjb2xsZWN0aW9uYC5kQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAEQS0TWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAuPEl0ZW1NZXRhZGF0YVNldAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGF0YUEBAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AEgSYTmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYW4gaXRlbS5MSXRlbU1ldGFkYXRhQ2xlYXJlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABMEmE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGl0ZW0uLFJlZGVwb3NpdGVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABQHN1Y2Nlc3NmdWxfaXRlbXNBBAE4VmVjPFQ6Okl0ZW1JZD4AFAQhAVRoZSBkZXBvc2l0IGZvciBhIHNldCBvZiBgaXRlbWBzIHdpdGhpbiBhIGBjb2xsZWN0aW9uYCBoYXMgYmVlbiB1cGRhdGVkLjBBdHRyaWJ1dGVTZXQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeABRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5eAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWVBAQF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AASRuYW1lc3BhY2V9BAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AFQQFAU5ldyBhdHRyaWJ1dGUgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhIGBjb2xsZWN0aW9uYCBvciBgaXRlbWAuQEF0dHJpYnV0ZUNsZWFyZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeABRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5eAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEkbmFtZXNwYWNlfQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+ABYEBQFBdHRyaWJ1dGUgbWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAgb3IgYGl0ZW1gLmxJdGVtQXR0cmlidXRlc0FwcHJvdmFsQWRkZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkABcEzEEgbmV3IGFwcHJvdmFsIHRvIG1vZGlmeSBpdGVtIGF0dHJpYnV0ZXMgd2FzIGFkZGVkLnRJdGVtQXR0cmlidXRlc0FwcHJvdmFsUmVtb3ZlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAGATUQSBuZXcgYXBwcm92YWwgdG8gbW9kaWZ5IGl0ZW0gYXR0cmlidXRlcyB3YXMgcmVtb3ZlZC5oT3duZXJzaGlwQWNjZXB0YW5jZUNoYW5nZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAAUBtYXliZV9jb2xsZWN0aW9u4AFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AGQTAT3duZXJzaGlwIGFjY2VwdGFuY2UgaGFzIGNoYW5nZWQgZm9yIGFuIGFjY291bnQuWENvbGxlY3Rpb25NYXhTdXBwbHlTZXQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseTgBDHUzMgAaBKRNYXggc3VwcGx5IGhhcyBiZWVuIHNldCBmb3IgYSBjb2xsZWN0aW9uLnRDb2xsZWN0aW9uTWludFNldHRpbmdzVXBkYXRlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAGwSsTWludCBzZXR0aW5ncyBmb3IgYSBjb2xsZWN0aW9uIGhhZCBjaGFuZ2VkLmxOZXh0Q29sbGVjdGlvbklkSW5jcmVtZW50ZWQEARxuZXh0X2lk4AFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AHAQBAUV2ZW50IGdldHMgZW1pdHRlZCB3aGVuIHRoZSBgTmV4dENvbGxlY3Rpb25JZGAgZ2V0cyBpbmNyZW1lbnRlZC4wSXRlbVByaWNlU2V0EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZVUBATxJdGVtUHJpY2U8VCwgST4AAUR3aGl0ZWxpc3RlZF9idXllco0BAVBPcHRpb248VDo6QWNjb3VudElkPgAdBHxUaGUgcHJpY2Ugd2FzIHNldCBmb3IgdGhlIGl0ZW0uQEl0ZW1QcmljZVJlbW92ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAeBIxUaGUgcHJpY2UgZm9yIHRoZSBpdGVtIHdhcyByZW1vdmVkLihJdGVtQm91Z2h0FAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZVUBATxJdGVtUHJpY2U8VCwgST4AARhzZWxsZXIEATBUOjpBY2NvdW50SWQAARRidXllcgQBMFQ6OkFjY291bnRJZAAfBExBbiBpdGVtIHdhcyBib3VnaHQuHFRpcFNlbnQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABGHNlbmRlcgQBMFQ6OkFjY291bnRJZAABIHJlY2VpdmVyBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBWERlcG9zaXRCYWxhbmNlT2Y8VCwgST4AIAQ8QSB0aXAgd2FzIHNlbnQuLFN3YXBDcmVhdGVkGAFIb2ZmZXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwb2ZmZXJlZF9pdGVtOAEkVDo6SXRlbUlkAAFIZGVzaXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwZGVzaXJlZF9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AARRwcmljZZEEAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+AAEgZGVhZGxpbmU4AVBCbG9ja051bWJlckZvcjxULCBJPgAhBIhBbiBgaXRlbWAgc3dhcCBpbnRlbnQgd2FzIGNyZWF0ZWQuNFN3YXBDYW5jZWxsZWQYAUhvZmZlcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBvZmZlcmVkX2l0ZW04ASRUOjpJdGVtSWQAAUhkZXNpcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBkZXNpcmVkX2l0ZW3gAURPcHRpb248VDo6SXRlbUlkPgABFHByaWNlkQQBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AASBkZWFkbGluZTgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+ACIEXFRoZSBzd2FwIHdhcyBjYW5jZWxsZWQuLFN3YXBDbGFpbWVkIAE8c2VudF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkc2VudF9pdGVtOAEkVDo6SXRlbUlkAAE8c2VudF9pdGVtX293bmVyBAEwVDo6QWNjb3VudElkAAFMcmVjZWl2ZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABNHJlY2VpdmVkX2l0ZW04ASRUOjpJdGVtSWQAAUxyZWNlaXZlZF9pdGVtX293bmVyBAEwVDo6QWNjb3VudElkAAEUcHJpY2WRBAGsT3B0aW9uPFByaWNlV2l0aERpcmVjdGlvbjxJdGVtUHJpY2U8VCwgST4+PgABIGRlYWRsaW5lOAFQQmxvY2tOdW1iZXJGb3I8VCwgST4AIwRoVGhlIHN3YXAgaGFzIGJlZW4gY2xhaW1lZC5YUHJlU2lnbmVkQXR0cmlidXRlc1NldAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEkbmFtZXNwYWNlfQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+ACQE/E5ldyBhdHRyaWJ1dGVzIGhhdmUgYmVlbiBzZXQgZm9yIGFuIGBpdGVtYCBvZiB0aGUgYGNvbGxlY3Rpb25gLkhQYWxsZXRBdHRyaWJ1dGVTZXQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbeABRE9wdGlvbjxUOjpJdGVtSWQ+AAEkYXR0cmlidXRl5QgBhFBhbGxldEF0dHJpYnV0ZXM8VDo6Q29sbGVjdGlvbklkPgABFHZhbHVlQQEBdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+ACUITQFBIG5ldyBhdHRyaWJ1dGUgaW4gdGhlIGBQYWxsZXRgIG5hbWVzcGFjZSB3YXMgc2V0IGZvciB0aGUgYGNvbGxlY3Rpb25gIG9yIGFuIGBpdGVtYGR3aXRoaW4gdGhhdCBgY29sbGVjdGlvbmAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV05QgMLHBhbGxldF9uZnRzFHR5cGVzQFBhbGxldEF0dHJpYnV0ZXMEMENvbGxlY3Rpb25JZAE4AQgsVXNlZFRvQ2xhaW0EADgBMENvbGxlY3Rpb25JZAAAAEBUcmFuc2ZlckRpc2FibGVkAAEAAOkIDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFdmVudAgEVAAESQABgBxDcmVhdGVkDAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQABBGBTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZC4sVHJhbnNmZXJyZWQQASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAAgR0U29tZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZC4YQnVybmVkDAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEcYmFsYW5jZVUBAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAARhpc3N1ZXIEATBUOjpBY2NvdW50SWQAARRhZG1pbgQBMFQ6OkFjY291bnRJZAABHGZyZWV6ZXIEATBUOjpBY2NvdW50SWQABARwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLjBPd25lckNoYW5nZWQIASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQABQRIVGhlIG93bmVyIGNoYW5nZWQuGEZyb3plbggBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABwR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyB0aGF3ZWQuLEFzc2V0RnJvemVuBAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAAIBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIGZyb3plbi4sQXNzZXRUaGF3ZWQEASBhc3NldF9pZP0BAShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAAUhhY2NvdW50c19kZXN0cm95ZWQ4AQx1MzIAAUhhY2NvdW50c19yZW1haW5pbmc4AQx1MzIACgSgQWNjb3VudHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhBcHByb3ZhbHNEZXN0cm95ZWQMASBhc3NldF9pZP0BAShUOjpBc3NldElkAAFMYXBwcm92YWxzX2Rlc3Ryb3llZDgBDHUzMgABTGFwcHJvdmFsc19yZW1haW5pbmc4AQx1MzIACwSkQXBwcm92YWxzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IRGVzdHJ1Y3Rpb25TdGFydGVkBAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQADQR0QW4gYXNzZXQgY2xhc3Mgd2FzIGRlc3Ryb3llZC4wRm9yY2VDcmVhdGVkCAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAA4EjFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGZvcmNlLWNyZWF0ZWQuLE1ldGFkYXRhU2V0FAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5ZAQEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAAQBJxNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBhc3NldC5AQXBwcm92ZWRUcmFuc2ZlchABIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAARhzb3VyY2UEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlABEEMQEoQWRkaXRpb25hbCkgZnVuZHMgaGF2ZSBiZWVuIGFwcHJvdmVkIGZvciB0cmFuc2ZlciB0byBhIGRlc3RpbmF0aW9uIGFjY291bnQuREFwcHJvdmFsQ2FuY2VsbGVkDAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAEgTwQW4gYXBwcm92YWwgZm9yIGFjY291bnQgYGRlbGVnYXRlYCB3YXMgY2FuY2VsbGVkIGJ5IGBvd25lcmAuTFRyYW5zZmVycmVkQXBwcm92ZWQUASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAEwgxAUFuIGBhbW91bnRgIHdhcyB0cmFuc2ZlcnJlZCBpbiBpdHMgZW50aXJldHkgZnJvbSBgb3duZXJgIHRvIGBkZXN0aW5hdGlvbmAgYnlgdGhlIGFwcHJvdmVkIGBkZWxlZ2F0ZWAuSEFzc2V0U3RhdHVzQ2hhbmdlZAQBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAFAT4QW4gYXNzZXQgaGFzIGhhZCBpdHMgYXR0cmlidXRlcyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5YQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZAgBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABJGRlcG9zaXRvcgQBMFQ6OkFjY291bnRJZAAWBPxTb21lIGFjY291bnQgYHdob2Agd2FzIGNyZWF0ZWQgd2l0aCBhIGRlcG9zaXQgZnJvbSBgZGVwb3NpdG9yYC4cQmxvY2tlZAgBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAFwR8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBibG9ja2VkLiREZXBvc2l0ZWQMASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAGATcU29tZSBhc3NldHMgd2VyZSBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiRXaXRoZHJhd24MASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAGQQhAVNvbWUgYXNzZXRzIHdlcmUgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLjxSZXNlcnZlc1VwZGF0ZWQIASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEgcmVzZXJ2ZXO5BAFMVmVjPFQ6OlJlc2VydmVEYXRhPgAaBNhSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyBzZXQgb3IgdXBkYXRlZCBmb3IgYGFzc2V0X2lkYC48UmVzZXJ2ZXNSZW1vdmVkBAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLjBJc3N1ZWRDcmVkaXQIASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAHATEU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQgYXMgQ3JlZGl0IChubyBvd25lciB5ZXQpLjBCdXJuZWRDcmVkaXQIASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAHQSEU29tZSBhc3NldHMgQ3JlZGl0IHdhcyBkZXN0cm95ZWQuKElzc3VlZERlYnQIASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAHgS8U29tZSBhc3NldHMgd2VyZSBidXJuZWQgYW5kIGEgRGVidCB3YXMgY3JlYXRlZC4oQnVybmVkRGVidAgBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAfBMxTb21lIGFzc2V0cyBEZWJ0IHdhcyBkZXN0cm95ZWQgKGFuZCBhc3NldHMgaXNzdWVkKS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTtCAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAYAcQ3JlYXRlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAIEdFNvbWUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEcYmFsYW5jZVUBAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZDgBDHUzMgABSGFjY291bnRzX3JlbWFpbmluZzgBDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQ4AQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nOAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5ZAQEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQARBDEBKEFkZGl0aW9uYWwpIGZ1bmRzIGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgdG8gYSBkZXN0aW5hdGlvbiBhY2NvdW50LkRBcHByb3ZhbENhbmNlbGxlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAEgTwQW4gYXBwcm92YWwgZm9yIGFjY291bnQgYGRlbGVnYXRlYCB3YXMgY2FuY2VsbGVkIGJ5IGBvd25lcmAuTFRyYW5zZmVycmVkQXBwcm92ZWQUASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkABcEfFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgYmxvY2tlZC4kRGVwb3NpdGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAGATcU29tZSBhc3NldHMgd2VyZSBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiRXaXRoZHJhd24MASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuPFJlc2VydmVzVXBkYXRlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABIHJlc2VydmVzMQQBTFZlYzxUOjpSZXNlcnZlRGF0YT4AGgTYUmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgc2V0IG9yIHVwZGF0ZWQgZm9yIGBhc3NldF9pZGAuPFJlc2VydmVzUmVtb3ZlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLjBJc3N1ZWRDcmVkaXQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAcBMRTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZCBhcyBDcmVkaXQgKG5vIG93bmVyIHlldCkuMEJ1cm5lZENyZWRpdAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAB0EhFNvbWUgYXNzZXRzIENyZWRpdCB3YXMgZGVzdHJveWVkLihJc3N1ZWREZWJ0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAHgS8U29tZSBhc3NldHMgd2VyZSBidXJuZWQgYW5kIGEgRGVidCB3YXMgY3JlYXRlZC4oQnVybmVkRGVidAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAB8EzFNvbWUgYXNzZXRzIERlYnQgd2FzIGRlc3Ryb3llZCAoYW5kIGFzc2V0cyBpc3N1ZWQpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldPEIDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhhwYWxsZXQURXZlbnQEBFQAARgsUG9vbENyZWF0ZWQQARxjcmVhdG9yBAEwVDo6QWNjb3VudElkBIhUaGUgYWNjb3VudCB0aGF0IGNyZWF0ZWQgdGhlIHBvb2wuARxwb29sX2lk9QgBJFQ6OlBvb2xJZAhJAVRoZSBwb29sIGlkIGFzc29jaWF0ZWQgd2l0aCB0aGUgcG9vbC4gTm90ZSB0aGF0IHRoZSBvcmRlciBvZiB0aGUgYXNzZXRzIG1heSBub3QgYmX0dGhlIHNhbWUgYXMgdGhlIG9yZGVyIHNwZWNpZmllZCBpbiB0aGUgY3JlYXRlIHBvb2wgZXh0cmluc2ljLgEwcG9vbF9hY2NvdW50BAEwVDo6QWNjb3VudElkBGxUaGUgYWNjb3VudCBJRCBvZiB0aGUgcG9vbC4BIGxwX3Rva2VuOAE4VDo6UG9vbEFzc2V0SWQIQQFUaGUgaWQgb2YgdGhlIGxpcXVpZGl0eSB0b2tlbnMgdGhhdCB3aWxsIGJlIG1pbnRlZCB3aGVuIGFzc2V0cyBhcmUgYWRkZWQgdG8gdGhpcxRwb29sLgAEHQFBIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgYENyZWF0ZVBvb2xgIGV4dHJpbnNpYyB3aWxsIGNyZWF0ZSB0aGlzIGV2ZW50LjhMaXF1aWRpdHlBZGRlZBwBDHdobwQBMFQ6OkFjY291bnRJZAS4VGhlIGFjY291bnQgdGhhdCB0aGUgbGlxdWlkaXR5IHdhcyB0YWtlbiBmcm9tLgEcbWludF90bwQBMFQ6OkFjY291bnRJZATUVGhlIGFjY291bnQgdGhhdCB0aGUgbGlxdWlkaXR5IHRva2VucyB3ZXJlIG1pbnRlZCB0by4BHHBvb2xfaWT1CAEkVDo6UG9vbElkBOBUaGUgcG9vbCBpZCBvZiB0aGUgcG9vbCB0aGF0IHRoZSBsaXF1aWRpdHkgd2FzIGFkZGVkIHRvLgFAYW1vdW50MV9wcm92aWRlZFUBAShUOjpCYWxhbmNlBORUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyBhZGRlZCB0byB0aGUgcG9vbC4BQGFtb3VudDJfcHJvdmlkZWRVAQEoVDo6QmFsYW5jZQToVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIGFkZGVkIHRvIHRoZSBwb29sLgEgbHBfdG9rZW44AThUOjpQb29sQXNzZXRJZAScVGhlIGlkIG9mIHRoZSBscCB0b2tlbiB0aGF0IHdhcyBtaW50ZWQuATxscF90b2tlbl9taW50ZWRVAQEoVDo6QmFsYW5jZQTQVGhlIGFtb3VudCBvZiBscCB0b2tlbnMgdGhhdCB3ZXJlIG1pbnRlZCBvZiB0aGF0IGlkLgEEJQFBIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgYEFkZExpcXVpZGl0eWAgZXh0cmluc2ljIHdpbGwgY3JlYXRlIHRoaXMgZXZlbnQuQExpcXVpZGl0eVJlbW92ZWQgAQx3aG8EATBUOjpBY2NvdW50SWQE3FRoZSBhY2NvdW50IHRoYXQgdGhlIGxpcXVpZGl0eSB0b2tlbnMgd2VyZSBidXJuZWQgZnJvbS4BLHdpdGhkcmF3X3RvBAEwVDo6QWNjb3VudElkBMBUaGUgYWNjb3VudCB0aGF0IHRoZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZCB0by4BHHBvb2xfaWT1CAEkVDo6UG9vbElkBMBUaGUgcG9vbCBpZCB0aGF0IHRoZSBsaXF1aWRpdHkgd2FzIHJlbW92ZWQgZnJvbS4BHGFtb3VudDFVAQEoVDo6QmFsYW5jZQT0VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBwb29sLgEcYW1vdW50MlUBAShUOjpCYWxhbmNlBPhUaGUgYW1vdW50IG9mIHRoZSBzZWNvbmQgYXNzZXQgdGhhdCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBwb29sLgEgbHBfdG9rZW44AThUOjpQb29sQXNzZXRJZAScVGhlIGlkIG9mIHRoZSBscCB0b2tlbiB0aGF0IHdhcyBidXJuZWQuATxscF90b2tlbl9idXJuZWRVAQEoVDo6QmFsYW5jZQTQVGhlIGFtb3VudCBvZiBscCB0b2tlbnMgdGhhdCB3ZXJlIGJ1cm5lZCBvZiB0aGF0IGlkLgE4d2l0aGRyYXdhbF9mZWX5CAEcUGVybWlsbAR0TGlxdWlkaXR5IHdpdGhkcmF3YWwgZmVlICglKS4CBDEBQSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIGBSZW1vdmVMaXF1aWRpdHlgIGV4dHJpbnNpYyB3aWxsIGNyZWF0ZSB0aGlzIGV2ZW50LjBTd2FwRXhlY3V0ZWQUAQx3aG8EATBUOjpBY2NvdW50SWQEtFdoaWNoIGFjY291bnQgd2FzIHRoZSBpbnN0aWdhdG9yIG9mIHRoZSBzd2FwLgEcc2VuZF90bwQBMFQ6OkFjY291bnRJZATAVGhlIGFjY291bnQgdGhhdCB0aGUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQgdG8uASRhbW91bnRfaW5VAQEoVDo6QmFsYW5jZQS8VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgc3dhcHBlZC4BKGFtb3VudF9vdXRVAQEoVDo6QmFsYW5jZQTEVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIHJlY2VpdmVkLgEQcGF0aP0IAThCYWxhbmNlUGF0aDxUPgj8VGhlIHJvdXRlIG9mIGFzc2V0IElEcyB3aXRoIGFtb3VudHMgdGhhdCB0aGUgc3dhcCB3ZW50IHRocm91Z2gu7EUuZy4gKEEsIGFtb3VudF9pbikgLT4gKERvdCwgYW1vdW50X291dCkgLT4gKEIsIGFtb3VudF9vdXQpAwg1AUFzc2V0cyBoYXZlIGJlZW4gY29udmVydGVkIGZyb20gb25lIHRvIGFub3RoZXIuIEJvdGggYFN3YXBFeGFjdFRva2VuRm9yVG9rZW5g2GFuZCBgU3dhcFRva2VuRm9yRXhhY3RUb2tlbmAgd2lsbCBnZW5lcmF0ZSB0aGlzIGV2ZW50LkhTd2FwQ3JlZGl0RXhlY3V0ZWQMASRhbW91bnRfaW5VAQEoVDo6QmFsYW5jZQS8VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgc3dhcHBlZC4BKGFtb3VudF9vdXRVAQEoVDo6QmFsYW5jZQTEVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIHJlY2VpdmVkLgEQcGF0aP0IAThCYWxhbmNlUGF0aDxUPgj8VGhlIHJvdXRlIG9mIGFzc2V0IElEcyB3aXRoIGFtb3VudHMgdGhhdCB0aGUgc3dhcCB3ZW50IHRocm91Z2gu7EUuZy4gKEEsIGFtb3VudF9pbikgLT4gKERvdCwgYW1vdW50X291dCkgLT4gKEIsIGFtb3VudF9vdXQpBAS8QXNzZXRzIGhhdmUgYmVlbiBjb252ZXJ0ZWQgZnJvbSBvbmUgdG8gYW5vdGhlci4cVG91Y2hlZAgBHHBvb2xfaWT1CAEkVDo6UG9vbElkBExUaGUgSUQgb2YgdGhlIHBvb2wuAQx3aG8EATBUOjpBY2NvdW50SWQEhFRoZSBhY2NvdW50IGluaXRpYXRpbmcgdGhlIHRvdWNoLgUEDQFQb29sIGhhcyBiZWVuIHRvdWNoZWQgaW4gb3JkZXIgdG8gZnVsZmlsbCBvcGVyYXRpb25hbCByZXF1aXJlbWVudHMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV09QgAAAQI/QH9AQD5CAw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcm1pbGwAAAQAOAEMdTMyAAD9CAAAAgEJAAEJAAAECP0BVQEABQkMVHBhbGxldF9hc3NldHNfZnJlZXplchhwYWxsZXQURXZlbnQIBFQABEkAAQgYRnJvemVuDAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAAAAYVGhhd2VkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAAQAEfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQJCQxQcGFsbGV0X2Fzc2V0c19ob2xkZXIYcGFsbGV0FEV2ZW50CARUAARJAAEMEEhlbGQQAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhyZWFzb25VCAFQVDo6UnVudGltZUhvbGRSZWFzb24AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAABMRgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBpbmNyZWFzZWQgYnkgYGFtb3VudGAuIFJlbGVhc2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYcmVhc29uVQgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAAQTEYHdob2BzIGJhbGFuY2Ugb24gaG9sZCB3YXMgZGVjcmVhc2VkIGJ5IGBhbW91bnRgLhhCdXJuZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhyZWFzb25VCAFQVDo6UnVudGltZUhvbGRSZWFzb24AARhhbW91bnRVAQEoVDo6QmFsYW5jZQACBLhgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBidXJuZWQgYnkgYGFtb3VudGAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0DQkMPHBhbGxldF90cmVhc3VyeRhwYWxsZXQURXZlbnQIBFQABEkAATAgU3BlbmRpbmcEAUBidWRnZXRfcmVtYWluaW5nVQEBPEJhbGFuY2VPZjxULCBJPgAABORXZSBoYXZlIGVuZGVkIGEgc3BlbmQgcGVyaW9kIGFuZCB3aWxsIG5vdyBhbGxvY2F0ZSBmdW5kcy4cQXdhcmRlZAwBOHByb3Bvc2FsX2luZGV4OAE0UHJvcG9zYWxJbmRleAABFGF3YXJkVQEBPEJhbGFuY2VPZjxULCBJPgABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAQR8U29tZSBmdW5kcyBoYXZlIGJlZW4gYWxsb2NhdGVkLhRCdXJudAQBLGJ1cm50X2Z1bmRzVQEBPEJhbGFuY2VPZjxULCBJPgACBIhTb21lIG9mIG91ciBmdW5kcyBoYXZlIGJlZW4gYnVybnQuIFJvbGxvdmVyBAFAcm9sbG92ZXJfYmFsYW5jZVUBATxCYWxhbmNlT2Y8VCwgST4AAwQtAVNwZW5kaW5nIGhhcyBmaW5pc2hlZDsgdGhpcyBpcyB0aGUgYW1vdW50IHRoYXQgcm9sbHMgb3ZlciB1bnRpbCBuZXh0IHNwZW5kLhxEZXBvc2l0BAEUdmFsdWVVAQE8QmFsYW5jZU9mPFQsIEk+AAQEfFNvbWUgZnVuZHMgaGF2ZSBiZWVuIGRlcG9zaXRlZC40U3BlbmRBcHByb3ZlZAwBOHByb3Bvc2FsX2luZGV4OAE0UHJvcG9zYWxJbmRleAABGGFtb3VudFUBATxCYWxhbmNlT2Y8VCwgST4AASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAAFBJxBIG5ldyBzcGVuZCBwcm9wb3NhbCBoYXMgYmVlbiBhcHByb3ZlZC48VXBkYXRlZEluYWN0aXZlCAEscmVhY3RpdmF0ZWRVAQE8QmFsYW5jZU9mPFQsIEk+AAEsZGVhY3RpdmF0ZWRVAQE8QmFsYW5jZU9mPFQsIEk+AAYEzFRoZSBpbmFjdGl2ZSBmdW5kcyBvZiB0aGUgcGFsbGV0IGhhdmUgYmVlbiB1cGRhdGVkLkhBc3NldFNwZW5kQXBwcm92ZWQYARRpbmRleDgBKFNwZW5kSW5kZXgAAShhc3NldF9raW5kzQQBMFQ6OkFzc2V0S2luZAABGGFtb3VudFUBAVBBc3NldEJhbGFuY2VPZjxULCBJPgABLGJlbmVmaWNpYXJ50QQBOFQ6OkJlbmVmaWNpYXJ5AAEodmFsaWRfZnJvbTgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+AAEkZXhwaXJlX2F0OAFQQmxvY2tOdW1iZXJGb3I8VCwgST4ABwS0QSBuZXcgYXNzZXQgc3BlbmQgcHJvcG9zYWwgaGFzIGJlZW4gYXBwcm92ZWQuQEFzc2V0U3BlbmRWb2lkZWQEARRpbmRleDgBKFNwZW5kSW5kZXgACAR0QW4gYXBwcm92ZWQgc3BlbmQgd2FzIHZvaWRlZC4QUGFpZAgBFGluZGV4OAEoU3BlbmRJbmRleAABKHBheW1lbnRfaWQoAWQ8VDo6UGF5bWFzdGVyIGFzIFBheT46OklkAAkETEEgcGF5bWVudCBoYXBwZW5lZC40UGF5bWVudEZhaWxlZAgBFGluZGV4OAEoU3BlbmRJbmRleAABKHBheW1lbnRfaWQoAWQ8VDo6UGF5bWFzdGVyIGFzIFBheT46OklkAAoEkEEgcGF5bWVudCBmYWlsZWQgYW5kIGNhbiBiZSByZXRyaWVkLjhTcGVuZFByb2Nlc3NlZAQBFGluZGV4OAEoU3BlbmRJbmRleAALCE0BQSBzcGVuZCB3YXMgcHJvY2Vzc2VkIGFuZCByZW1vdmVkIGZyb20gdGhlIHN0b3JhZ2UuIEl0IG1pZ2h0IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHlwcGFpZCBvciBpdCBtYXkgaGF2ZSBleHBpcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBEJDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcYcGFsbGV0FEV2ZW50CARUAARJAAEUJERlbGVnYXRlZAwABAEwVDo6QWNjb3VudElkAAAEATBUOjpBY2NvdW50SWQAANEDATRDbGFzc09mPFQsIEk+AAAEHQFBbiBhY2NvdW50IGhhcyBkZWxlZ2F0ZWQgdGhlaXIgdm90ZSB0byBhbm90aGVyIGFjY291bnQuIFxbd2hvLCB0YXJnZXRcXSxVbmRlbGVnYXRlZAgABAEwVDo6QWNjb3VudElkAADRAwE0Q2xhc3NPZjxULCBJPgABBPRBbiBcW2FjY291bnRcXSBoYXMgY2FuY2VsbGVkIGEgcHJldmlvdXMgZGVsZWdhdGlvbiBvcGVyYXRpb24uFFZvdGVkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEQdm90ZdkEAXBBY2NvdW50Vm90ZTxCYWxhbmNlT2Y8VCwgST4+AAEocG9sbF9pbmRleDgBRFBvbGxJbmRleE9mPFQsIEk+AAIEUEFuIGFjY291bnQgaGFzIHZvdGVkLFZvdGVSZW1vdmVkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEQdm90ZdkEAXBBY2NvdW50Vm90ZTxCYWxhbmNlT2Y8VCwgST4+AAEocG9sbF9pbmRleDgBRFBvbGxJbmRleE9mPFQsIEk+AAMEXEEgdm90ZSBoYXMgYmVlbiByZW1vdmVkMFZvdGVVbmxvY2tlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABFGNsYXNz0QMBNENsYXNzT2Y8VCwgST4ABARFAVRoZSBsb2NrdXAgcGVyaW9kIG9mIGEgY29udmljdGlvbiB2b3RlIGV4cGlyZWQsIGFuZCB0aGUgZnVuZHMgaGF2ZSBiZWVuIHVubG9ja2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBUJDEBwYWxsZXRfcmVmZXJlbmRhGHBhbGxldBRFdmVudAgEVAAESQABQCRTdWJtaXR0ZWQMARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0cmFja9EDATxUcmFja0lkT2Y8VCwgST4EJQFUaGUgdHJhY2sgKGFuZCBieSBleHRlbnNpb24gcHJvcG9zYWwgZGlzcGF0Y2ggb3JpZ2luKSBvZiB0aGlzIHJlZmVyZW5kdW0uASBwcm9wb3NhbO0EAUxCb3VuZGVkQ2FsbE9mPFQsIEk+BIBUaGUgcHJvcG9zYWwgZm9yIHRoZSByZWZlcmVuZHVtLgAEgEEgcmVmZXJlbmR1bSBoYXMgYmVlbiBzdWJtaXR0ZWQuVERlY2lzaW9uRGVwb3NpdFBsYWNlZAwBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BDHdobwQBMFQ6OkFjY291bnRJZASMVGhlIGFjY291bnQgd2hvIHBsYWNlZCB0aGUgZGVwb3NpdC4BGGFtb3VudFUBATxCYWxhbmNlT2Y8VCwgST4EhFRoZSBhbW91bnQgcGxhY2VkIGJ5IHRoZSBhY2NvdW50LgEElFRoZSBkZWNpc2lvbiBkZXBvc2l0IGhhcyBiZWVuIHBsYWNlZC5cRGVjaXNpb25EZXBvc2l0UmVmdW5kZWQMARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uAQx3aG8EATBUOjpBY2NvdW50SWQEjFRoZSBhY2NvdW50IHdobyBwbGFjZWQgdGhlIGRlcG9zaXQuARhhbW91bnRVAQE8QmFsYW5jZU9mPFQsIEk+BIRUaGUgYW1vdW50IHBsYWNlZCBieSB0aGUgYWNjb3VudC4CBJxUaGUgZGVjaXNpb24gZGVwb3NpdCBoYXMgYmVlbiByZWZ1bmRlZC44RGVwb3NpdFNsYXNoZWQIAQx3aG8EATBUOjpBY2NvdW50SWQEjFRoZSBhY2NvdW50IHdobyBwbGFjZWQgdGhlIGRlcG9zaXQuARhhbW91bnRVAQE8QmFsYW5jZU9mPFQsIEk+BIRUaGUgYW1vdW50IHBsYWNlZCBieSB0aGUgYWNjb3VudC4DBGxBIGRlcG9zaXQgaGFzIGJlZW4gc2xhc2hlZC48RGVjaXNpb25TdGFydGVkEAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdHJhY2vRAwE8VHJhY2tJZE9mPFQsIEk+BCUBVGhlIHRyYWNrIChhbmQgYnkgZXh0ZW5zaW9uIHByb3Bvc2FsIGRpc3BhdGNoIG9yaWdpbikgb2YgdGhpcyByZWZlcmVuZHVtLgEgcHJvcG9zYWztBAFMQm91bmRlZENhbGxPZjxULCBJPgSAVGhlIHByb3Bvc2FsIGZvciB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5GQkBIFQ6OlRhbGx5BLhUaGUgY3VycmVudCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uBAS8QSByZWZlcmVuZHVtIGhhcyBtb3ZlZCBpbnRvIHRoZSBkZWNpZGluZyBwaGFzZS44Q29uZmlybVN0YXJ0ZWQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uBQA4Q29uZmlybUFib3J0ZWQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uBgAkQ29uZmlybWVkCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdGFsbHkZCQEgVDo6VGFsbHkEsFRoZSBmaW5hbCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uBwQhAUEgcmVmZXJlbmR1bSBoYXMgZW5kZWQgaXRzIGNvbmZpcm1hdGlvbiBwaGFzZSBhbmQgaXMgcmVhZHkgZm9yIGFwcHJvdmFsLiBBcHByb3ZlZAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4IBA0BQSByZWZlcmVuZHVtIGhhcyBiZWVuIGFwcHJvdmVkIGFuZCBpdHMgcHJvcG9zYWwgaGFzIGJlZW4gc2NoZWR1bGVkLiBSZWplY3RlZAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5GQkBIFQ6OlRhbGx5BLBUaGUgZmluYWwgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgkErEEgcHJvcG9zYWwgaGFzIGJlZW4gcmVqZWN0ZWQgYnkgcmVmZXJlbmR1bS4gVGltZWRPdXQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxseRkJASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4KBNhBIHJlZmVyZW5kdW0gaGFzIGJlZW4gdGltZWQgb3V0IHdpdGhvdXQgYmVpbmcgZGVjaWRlZC4kQ2FuY2VsbGVkCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdGFsbHkZCQEgVDo6VGFsbHkEsFRoZSBmaW5hbCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uCwSAQSByZWZlcmVuZHVtIGhhcyBiZWVuIGNhbmNlbGxlZC4YS2lsbGVkCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdGFsbHkZCQEgVDo6VGFsbHkEsFRoZSBmaW5hbCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uDAR0QSByZWZlcmVuZHVtIGhhcyBiZWVuIGtpbGxlZC5kU3VibWlzc2lvbkRlcG9zaXRSZWZ1bmRlZAwBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BDHdobwQBMFQ6OkFjY291bnRJZASMVGhlIGFjY291bnQgd2hvIHBsYWNlZCB0aGUgZGVwb3NpdC4BGGFtb3VudFUBATxCYWxhbmNlT2Y8VCwgST4EhFRoZSBhbW91bnQgcGxhY2VkIGJ5IHRoZSBhY2NvdW50Lg0EpFRoZSBzdWJtaXNzaW9uIGRlcG9zaXQgaGFzIGJlZW4gcmVmdW5kZWQuLE1ldGFkYXRhU2V0CAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEQaGFzaDwBHFQ6Okhhc2gEOFByZWltYWdlIGhhc2guDgScTWV0YWRhdGEgZm9yIGEgcmVmZXJlbmR1bSBoYXMgYmVlbiBzZXQuPE1ldGFkYXRhQ2xlYXJlZAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BEGhhc2g8ARxUOjpIYXNoBDhQcmVpbWFnZSBoYXNoLg8ErE1ldGFkYXRhIGZvciBhIHJlZmVyZW5kdW0gaGFzIGJlZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQZCQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nFHR5cGVzFFRhbGx5CBRWb3RlcwFVARRUb3RhbAAADAEQYXllc1UBARRWb3RlcwABEG5heXNVAQEUVm90ZXMAARxzdXBwb3J0VQEBFFZvdGVzAAAdCQxAcGFsbGV0X3doaXRlbGlzdBhwYWxsZXQURXZlbnQEBFQAAQw8Q2FsbFdoaXRlbGlzdGVkBAEkY2FsbF9oYXNoPAEcVDo6SGFzaAAAAFhXaGl0ZWxpc3RlZENhbGxSZW1vdmVkBAEkY2FsbF9oYXNoPAEcVDo6SGFzaAABAGRXaGl0ZWxpc3RlZENhbGxEaXNwYXRjaGVkCAEkY2FsbF9oYXNoPAEcVDo6SGFzaAABGHJlc3VsdCEJAWhEaXNwYXRjaFJlc3VsdFdpdGhQb3N0SW5mbwACAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldCEJBBhSZXN1bHQIBFQBJQkERQEpCQEICE9rBAAlCQAAAAAMRXJyBAApCQAAAQAAJQkMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUG9zdERpc3BhdGNoSW5mbwAACAE0YWN0dWFsX3dlaWdodA0BAThPcHRpb248V2VpZ2h0PgABIHBheXNfZmVl9QcBEFBheXMAACkJCChzcF9ydW50aW1lZERpc3BhdGNoRXJyb3JXaXRoUG9zdEluZm8EEEluZm8BJQkACAEkcG9zdF9pbmZvJQkBEEluZm8AARRlcnJvcvkHATREaXNwYXRjaEVycm9yAAAtCQw8cGFsbGV0X2JvdW50aWVzGHBhbGxldBRFdmVudAgEVAAESQABMDhCb3VudHlQcm9wb3NlZAQBFGluZGV4OAEsQm91bnR5SW5kZXgAAARQTmV3IGJvdW50eSBwcm9wb3NhbC44Qm91bnR5UmVqZWN0ZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEQYm9uZFUBATxCYWxhbmNlT2Y8VCwgST4AAQTMQSBib3VudHkgcHJvcG9zYWwgd2FzIHJlamVjdGVkOyBmdW5kcyB3ZXJlIHNsYXNoZWQuSEJvdW50eUJlY2FtZUFjdGl2ZQQBFGluZGV4OAEsQm91bnR5SW5kZXgAAgS4QSBib3VudHkgcHJvcG9zYWwgaXMgZnVuZGVkIGFuZCBiZWNhbWUgYWN0aXZlLjRCb3VudHlBd2FyZGVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAMElEEgYm91bnR5IGlzIGF3YXJkZWQgdG8gYSBiZW5lZmljaWFyeS40Qm91bnR5Q2xhaW1lZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAARhwYXlvdXRVAQE8QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQABASMQSBib3VudHkgaXMgY2xhaW1lZCBieSBiZW5lZmljaWFyeS44Qm91bnR5Q2FuY2VsZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAUEWEEgYm91bnR5IGlzIGNhbmNlbGxlZC44Qm91bnR5RXh0ZW5kZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAYEcEEgYm91bnR5IGV4cGlyeSBpcyBleHRlbmRlZC44Qm91bnR5QXBwcm92ZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAcEVEEgYm91bnR5IGlzIGFwcHJvdmVkLjxDdXJhdG9yUHJvcG9zZWQIASRib3VudHlfaWQ4ASxCb3VudHlJbmRleAABHGN1cmF0b3IEATBUOjpBY2NvdW50SWQACAR0QSBib3VudHkgY3VyYXRvciBpcyBwcm9wb3NlZC5EQ3VyYXRvclVuYXNzaWduZWQEASRib3VudHlfaWQ4ASxCb3VudHlJbmRleAAJBHxBIGJvdW50eSBjdXJhdG9yIGlzIHVuYXNzaWduZWQuPEN1cmF0b3JBY2NlcHRlZAgBJGJvdW50eV9pZDgBLEJvdW50eUluZGV4AAEcY3VyYXRvcgQBMFQ6OkFjY291bnRJZAAKBHRBIGJvdW50eSBjdXJhdG9yIGlzIGFjY2VwdGVkLjBEZXBvc2l0UG9rZWQQASRib3VudHlfaWQ4ASxCb3VudHlJbmRleAABIHByb3Bvc2VyBAEwVDo6QWNjb3VudElkAAEsb2xkX2RlcG9zaXRVAQE8QmFsYW5jZU9mPFQsIEk+AAEsbmV3X2RlcG9zaXRVAQE8QmFsYW5jZU9mPFQsIEk+AAsEgEEgYm91bnR5IGRlcG9zaXQgaGFzIGJlZW4gcG9rZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0MQkMVHBhbGxldF9jaGlsZF9ib3VudGllcxhwYWxsZXQURXZlbnQEBFQAARAUQWRkZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXg4ASxCb3VudHlJbmRleAAABGBBIGNoaWxkLWJvdW50eSBpcyBhZGRlZC4cQXdhcmRlZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleDgBLEJvdW50eUluZGV4AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQAAQSsQSBjaGlsZC1ib3VudHkgaXMgYXdhcmRlZCB0byBhIGJlbmVmaWNpYXJ5LhxDbGFpbWVkEAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV4OAEsQm91bnR5SW5kZXgAARhwYXlvdXRVAQEwQmFsYW5jZU9mPFQ+AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQAAgSkQSBjaGlsZC1ib3VudHkgaXMgY2xhaW1lZCBieSBiZW5lZmljaWFyeS4gQ2FuY2VsZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXg4ASxCb3VudHlJbmRleAADBHBBIGNoaWxkLWJvdW50eSBpcyBjYW5jZWxsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0NQkMRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBRFdmVudAQEVAABDEBBc3NldFJhdGVDcmVhdGVkCAEoYXNzZXRfa2luZM0EATBUOjpBc3NldEtpbmQAARByYXRlDQUBJEZpeGVkVTEyOAAAAEBBc3NldFJhdGVSZW1vdmVkBAEoYXNzZXRfa2luZM0EATBUOjpBc3NldEtpbmQAAQBAQXNzZXRSYXRlVXBkYXRlZAwBKGFzc2V0X2tpbmTNBAEwVDo6QXNzZXRLaW5kAAEMb2xkDQUBJEZpeGVkVTEyOAABDG5ldw0FASRGaXhlZFUxMjgAAgAEfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQ5CQxscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGHBhbGxldBRFdmVudAgEVAAESQABMDRCb3VudHlDcmVhdGVkBAEUaW5kZXg4ASxCb3VudHlJbmRleAAABOBBIG5ldyBib3VudHkgd2FzIGNyZWF0ZWQgYW5kIGZ1bmRpbmcgaGFzIGJlZW4gaW5pdGlhdGVkLkhDaGlsZEJvdW50eUNyZWF0ZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXg4ASxCb3VudHlJbmRleAABBPhBIG5ldyBjaGlsZC1ib3VudHkgd2FzIGNyZWF0ZWQgYW5kIGZ1bmRpbmcgaGFzIGJlZW4gaW5pdGlhdGVkLkhCb3VudHlCZWNhbWVBY3RpdmUMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjgAUxPcHRpb248Qm91bnR5SW5kZXg+AAEcY3VyYXRvcgQBMFQ6OkFjY291bnRJZAACBOhUaGUgY3VyYXRvciBhY2NlcHRlZCByb2xlIGFuZCBjaGlsZC0vYm91bnR5IGJlY2FtZSBhY3RpdmUuNEJvdW50eUF3YXJkZWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjgAUxPcHRpb248Qm91bnR5SW5kZXg+AAEsYmVuZWZpY2lhcnnRBAE4VDo6QmVuZWZpY2lhcnkAAwS0QSBjaGlsZC0vYm91bnR5IHdhcyBhd2FyZGVkIHRvIGEgYmVuZWZpY2lhcnkuVEJvdW50eVBheW91dFByb2Nlc3NlZBQBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOABTE9wdGlvbjxCb3VudHlJbmRleD4AAShhc3NldF9raW5kzQQBMFQ6OkFzc2V0S2luZAABFHZhbHVlVQEBKFQ6OkJhbGFuY2UAASxiZW5lZmljaWFyedEEAThUOjpCZW5lZmljaWFyeQAEBPRQYXlvdXQgcGF5bWVudCB0byB0aGUgYmVuZWZpY2lhcnkgaGFzIGNvbmNsdWRlZCBzdWNjZXNzZnVsbHkuWEJvdW50eUZ1bmRpbmdQcm9jZXNzZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjgAUxPcHRpb248Qm91bnR5SW5kZXg+AAUErEZ1bmRpbmcgcGF5bWVudCBoYXMgY29uY2x1ZGVkIHN1Y2Nlc3NmdWxseS5UQm91bnR5UmVmdW5kUHJvY2Vzc2VkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV44AFMT3B0aW9uPEJvdW50eUluZGV4PgAGBKhSZWZ1bmQgcGF5bWVudCBoYXMgY29uY2x1ZGVkIHN1Y2Nlc3NmdWxseS44Qm91bnR5Q2FuY2VsZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjgAUxPcHRpb248Qm91bnR5SW5kZXg+AAcEeEEgY2hpbGQtL2JvdW50eSB3YXMgY2FuY2VsbGVkLkRDdXJhdG9yVW5hc3NpZ25lZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOABTE9wdGlvbjxCb3VudHlJbmRleD4ACAScQSBjaGlsZC0vYm91bnR5IGN1cmF0b3Igd2FzIHVuYXNzaWduZWQuPEN1cmF0b3JQcm9wb3NlZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOABTE9wdGlvbjxCb3VudHlJbmRleD4AARxjdXJhdG9yBAEwVDo6QWNjb3VudElkAAkElEEgY2hpbGQtL2JvdW50eSBjdXJhdG9yIHdhcyBwcm9wb3NlZC40UGF5bWVudEZhaWxlZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOABTE9wdGlvbjxCb3VudHlJbmRleD4AAShwYXltZW50X2lkKAFEUGF5bWVudElkT2Y8VCwgST4ACgSQQSBwYXltZW50IGZhaWxlZCBhbmQgY2FuIGJlIHJldHJpZWQuEFBhaWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjgAUxPcHRpb248Qm91bnR5SW5kZXg+AAEocGF5bWVudF9pZCgBRFBheW1lbnRJZE9mPFQsIEk+AAsEmEEgcGF5bWVudCBoYXBwZW5lZCBhbmQgY2FuIGJlIGNoZWNrZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0PQkMKHBhbGxldF9kYXAYcGFsbGV0FEV2ZW50BARUAAEQOElzc3VhbmNlTWludGVkCAEwdG90YWxfbWludGVkVQEBMEJhbGFuY2VPZjxUPgSEVG90YWwgYW1vdW50IG1pbnRlZCBpbiB0aGlzIGRyaXAuAThlbGFwc2VkX21pbGxpcygBDHU2NASIRWxhcHNlZCB0aW1lIChtcykgc2luY2UgbGFzdCBkcmlwLgAE3EluZmxhdGlvbiBkcmlwcGVkIGFuZCBkaXN0cmlidXRlZCB0byBidWRnZXQgcmVjaXBpZW50cy5cQnVkZ2V0QWxsb2NhdGlvblVwZGF0ZWQEASxhbGxvY2F0aW9ucxkFAUxCdWRnZXRBbGxvY2F0aW9uTWFwBHhUaGUgbmV3IGJ1ZGdldCBhbGxvY2F0aW9uIG1hcC4BBLRCdWRnZXQgYWxsb2NhdGlvbiB3YXMgdXBkYXRlZCB2aWEgZ292ZXJuYW5jZS44U3RhZ2luZ0RyYWluZWQEARhhbW91bnRVAQEwQmFsYW5jZU9mPFQ+BDxBbW91bnQgZHJhaW5lZC4CBAEBRnVuZHMgd2VyZSBkcmFpbmVkIGZyb20gdGhlIHN0YWdpbmcgYWNjb3VudCBpbnRvIHRoZSBEQVAgYnVmZmVyLihVbmV4cGVjdGVkBABBCQE4VW5leHBlY3RlZEtpbmQAAwSwQW4gdW5leHBlY3RlZC9kZWZlbnNpdmUgZXZlbnQgd2FzIHRyaWdnZXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRBCQwocGFsbGV0X2RhcBhwYWxsZXQ4VW5leHBlY3RlZEtpbmQAAQgoTWludEZhaWxlZAAAADhFbGFwc2VkQ2xhbXBlZAgBOGFjdHVhbF9lbGFwc2VkKAEMdTY0AAEcY2VpbGluZygBDHU2NAABAABFCQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldBRFdmVudAQEVAABECBNaWdyYXRlZAwBDHRvcDgBDHUzMgABFGNoaWxkOAEMdTMyAAEcY29tcHV0ZUkJAUBNaWdyYXRpb25Db21wdXRlAAAIOQFHaXZlbiBudW1iZXIgb2YgYCh0b3AsIGNoaWxkKWAga2V5cyB3ZXJlIG1pZ3JhdGVkIHJlc3BlY3RpdmVseSwgd2l0aCB0aGUgZ2l2ZW4oYGNvbXB1dGVgLhxTbGFzaGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBMEJhbGFuY2VPZjxUPgABBLRTb21lIGFjY291bnQgZ290IHNsYXNoZWQgYnkgdGhlIGdpdmVuIGFtb3VudC5UQXV0b01pZ3JhdGlvbkZpbmlzaGVkAAIEhFRoZSBhdXRvIG1pZ3JhdGlvbiB0YXNrIGZpbmlzaGVkLhhIYWx0ZWQEARRlcnJvck0JASBFcnJvcjxUPgADBOxNaWdyYXRpb24gZ290IGhhbHRlZCBkdWUgdG8gYW4gZXJyb3Igb3IgbWlzcy1jb25maWd1cmF0aW9uLgRwSW5uZXIgZXZlbnRzIG9mIHRoaXMgcGFsbGV0LkkJDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0QE1pZ3JhdGlvbkNvbXB1dGUAAQgYU2lnbmVkAAAAEEF1dG8AAQAATQkMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQURXJyb3IEBFQAARg8TWF4U2lnbmVkTGltaXRzAAAEgE1heCBzaWduZWQgbGltaXRzIG5vdCByZXNwZWN0ZWQuKEtleVRvb0xvbmcAARy0QSBrZXkgd2FzIGxvbmdlciB0aGFuIHRoZSBjb25maWd1cmVkIG1heGltdW0uABEBVGhpcyBtZWFucyB0aGF0IHRoZSBtaWdyYXRpb24gaGFsdGVkIGF0IHRoZSBjdXJyZW50IFtgUHJvZ3Jlc3NgXSBhbmQBAWNhbiBiZSByZXN1bWVkIHdpdGggYSBsYXJnZXIgW2BjcmF0ZTo6Q29uZmlnOjpNYXhLZXlMZW5gXSB2YWx1ZS4hAVJldHJ5aW5nIHdpdGggdGhlIHNhbWUgW2BjcmF0ZTo6Q29uZmlnOjpNYXhLZXlMZW5gXSB2YWx1ZSB3aWxsIG5vdCB3b3JrLkUBVGhlIHZhbHVlIHNob3VsZCBvbmx5IGJlIGluY3JlYXNlZCB0byBhdm9pZCBhIHN0b3JhZ2UgbWlncmF0aW9uIGZvciB0aGUgY3VycmVudGx5kHN0b3JlZCBbYGNyYXRlOjpQcm9ncmVzczo6TGFzdEtleWBdLjhOb3RFbm91Z2hGdW5kcwACBJRzdWJtaXR0ZXIgZG9lcyBub3QgaGF2ZSBlbm91Z2ggZnVuZHMuKEJhZFdpdG5lc3MAAwRoQmFkIHdpdG5lc3MgZGF0YSBwcm92aWRlZC5kU2lnbmVkTWlncmF0aW9uTm90QWxsb3dlZAAEBCUBU2lnbmVkIG1pZ3JhdGlvbiBpcyBub3QgYWxsb3dlZCBiZWNhdXNlIHRoZSBtYXhpbXVtIGxpbWl0IGlzIG5vdCBzZXQgeWV0LjBCYWRDaGlsZFJvb3QABQRgQmFkIGNoaWxkIHJvb3QgcHJvdmlkZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LlEJDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQURXZlbnQEBFQAAVwcQ3JlYXRlZAgBJGRlcG9zaXRvcgQBMFQ6OkFjY291bnRJZAABHHBvb2xfaWQ4ARhQb29sSWQAAARgQSBwb29sIGhhcyBiZWVuIGNyZWF0ZWQuGEJvbmRlZBABGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABHHBvb2xfaWQ4ARhQb29sSWQAARhib25kZWRVAQEwQmFsYW5jZU9mPFQ+AAEYam9pbmVkWQEBEGJvb2wAAQSUQSBtZW1iZXIgaGFzIGJlY2FtZSBib25kZWQgaW4gYSBwb29sLhxQYWlkT3V0DAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAABGHBheW91dFUBATBCYWxhbmNlT2Y8VD4AAgSMQSBwYXlvdXQgaGFzIGJlZW4gbWFkZSB0byBhIG1lbWJlci4gVW5ib25kZWQUARhtZW1iZXIEATBUOjpBY2NvdW50SWQAARxwb29sX2lkOAEYUG9vbElkAAEcYmFsYW5jZVUBATBCYWxhbmNlT2Y8VD4AARhwb2ludHNVAQEwQmFsYW5jZU9mPFQ+AAEMZXJhOAEgRXJhSW5kZXgAAyyYQSBtZW1iZXIgaGFzIHVuYm9uZGVkIGZyb20gdGhlaXIgcG9vbC4AOQEtIGBiYWxhbmNlYCBpcyB0aGUgY29ycmVzcG9uZGluZyBiYWxhbmNlIG9mIHRoZSBudW1iZXIgb2YgcG9pbnRzIHRoYXQgaGFzIGJlZW5VASAgcmVxdWVzdGVkIHRvIGJlIHVuYm9uZGVkICh0aGUgYXJndW1lbnQgb2YgdGhlIGB1bmJvbmRgIHRyYW5zYWN0aW9uKSBmcm9tIHRoZSBib25kZWQcICBwb29sLkUBLSBgcG9pbnRzYCBpcyB0aGUgbnVtYmVyIG9mIHBvaW50cyB0aGF0IGFyZSBpc3N1ZWQgYXMgYSByZXN1bHQgb2YgYGJhbGFuY2VgIGJlaW5nwGRpc3NvbHZlZCBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIHVuYm9uZGluZyBwb29sLuQtIGBlcmFgIGlzIHRoZSBlcmEgaW4gd2hpY2ggdGhlIGJhbGFuY2Ugd2lsbCBiZSB1bmJvbmRlZC5VAUluIHRoZSBhYnNlbmNlIG9mIHNsYXNoaW5nLCB0aGVzZSB2YWx1ZXMgd2lsbCBtYXRjaC4gSW4gdGhlIHByZXNlbmNlIG9mIHNsYXNoaW5nLCB0aGVNAW51bWJlciBvZiBwb2ludHMgdGhhdCBhcmUgaXNzdWVkIGluIHRoZSB1bmJvbmRpbmcgcG9vbCB3aWxsIGJlIGxlc3MgdGhhbiB0aGUgYW1vdW50ZHJlcXVlc3RlZCB0byBiZSB1bmJvbmRlZC4kV2l0aGRyYXduEAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAABHGJhbGFuY2VVAQEwQmFsYW5jZU9mPFQ+AAEYcG9pbnRzVQEBMEJhbGFuY2VPZjxUPgAEGJxBIG1lbWJlciBoYXMgd2l0aGRyYXduIGZyb20gdGhlaXIgcG9vbC4AIQFUaGUgZ2l2ZW4gbnVtYmVyIG9mIGBwb2ludHNgIGhhdmUgYmVlbiBkaXNzb2x2ZWQgaW4gcmV0dXJuIG9mIGBiYWxhbmNlYC4AWQFTaW1pbGFyIHRvIGBVbmJvbmRlZGAgZXZlbnQsIGluIHRoZSBhYnNlbmNlIG9mIHNsYXNoaW5nLCB0aGUgcmF0aW8gb2YgcG9pbnQgdG8gYmFsYW5jZSh3aWxsIGJlIDEuJERlc3Ryb3llZAQBHHBvb2xfaWQ4ARhQb29sSWQABQRoQSBwb29sIGhhcyBiZWVuIGRlc3Ryb3llZC4wU3RhdGVDaGFuZ2VkCAEccG9vbF9pZDgBGFBvb2xJZAABJG5ld19zdGF0ZU0FASRQb29sU3RhdGUABgR8VGhlIHN0YXRlIG9mIGEgcG9vbCBoYXMgY2hhbmdlZDRNZW1iZXJSZW1vdmVkDAEccG9vbF9pZDgBGFBvb2xJZAABGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABQHJlbGVhc2VkX2JhbGFuY2VVAQEwQmFsYW5jZU9mPFQ+AAcUmEEgbWVtYmVyIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBhIHBvb2wuAFEBVGhlIHJlbW92YWwgY2FuIGJlIHZvbHVudGFyeSAod2l0aGRyYXduIGFsbCB1bmJvbmRlZCBmdW5kcykgb3IgaW52b2x1bnRhcnkgKGtpY2tlZCkuSQFBbnkgZnVuZHMgdGhhdCBhcmUgc3RpbGwgZGVsZWdhdGVkIChpLmUuIGRhbmdsaW5nIGRlbGVnYXRpb24pIGFyZSByZWxlYXNlZCBhbmQgYXJliHJlcHJlc2VudGVkIGJ5IGByZWxlYXNlZF9iYWxhbmNlYC4wUm9sZXNVcGRhdGVkDAEQcm9vdI0BAVBPcHRpb248VDo6QWNjb3VudElkPgABHGJvdW5jZXKNAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AASRub21pbmF0b3KNAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4ACAhVAVRoZSByb2xlcyBvZiBhIHBvb2wgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gdGhlIGdpdmVuIG5ldyByb2xlcy4gTm90ZSB0aGF0IHRoZSBkZXBvc2l0b3JEY2FuIG5ldmVyIGNoYW5nZS4sUG9vbFNsYXNoZWQIARxwb29sX2lkOAEYUG9vbElkAAEcYmFsYW5jZVUBATBCYWxhbmNlT2Y8VD4ACQQNAVRoZSBhY3RpdmUgYmFsYW5jZSBvZiBwb29sIGBwb29sX2lkYCBoYXMgYmVlbiBzbGFzaGVkIHRvIGBiYWxhbmNlYC5QVW5ib25kaW5nUG9vbFNsYXNoZWQMARxwb29sX2lkOAEYUG9vbElkAAEMZXJhOAEgRXJhSW5kZXgAARxiYWxhbmNlVQEBMEJhbGFuY2VPZjxUPgAKBCUBVGhlIHVuYm9uZCBwb29sIGF0IGBlcmFgIG9mIHBvb2wgYHBvb2xfaWRgIGhhcyBiZWVuIHNsYXNoZWQgdG8gYGJhbGFuY2VgLlRQb29sQ29tbWlzc2lvblVwZGF0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEcY3VycmVudGUFAXxPcHRpb248KFBlcmJpbGwsIFQ6OkFjY291bnRJZCk+AAsEtEEgcG9vbCdzIGNvbW1pc3Npb24gc2V0dGluZyBoYXMgYmVlbiBjaGFuZ2VkLmBQb29sTWF4Q29tbWlzc2lvblVwZGF0ZWQIARxwb29sX2lkOAEYUG9vbElkAAE4bWF4X2NvbW1pc3Npb24dBQEcUGVyYmlsbAAMBNRBIHBvb2wncyBtYXhpbXVtIGNvbW1pc3Npb24gc2V0dGluZyBoYXMgYmVlbiBjaGFuZ2VkLnxQb29sQ29tbWlzc2lvbkNoYW5nZVJhdGVVcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABLGNoYW5nZV9yYXRlbQUBnENvbW1pc3Npb25DaGFuZ2VSYXRlPEJsb2NrTnVtYmVyRm9yPFQ+PgANBMxBIHBvb2wncyBjb21taXNzaW9uIGBjaGFuZ2VfcmF0ZWAgaGFzIGJlZW4gY2hhbmdlZC6QUG9vbENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb25VcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABKHBlcm1pc3Npb25xBQG8T3B0aW9uPENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb248VDo6QWNjb3VudElkPj4ADgTIUG9vbCBjb21taXNzaW9uIGNsYWltIHBlcm1pc3Npb24gaGFzIGJlZW4gdXBkYXRlZC5UUG9vbENvbW1pc3Npb25DbGFpbWVkCAEccG9vbF9pZDgBGFBvb2xJZAABKGNvbW1pc3Npb25VAQEwQmFsYW5jZU9mPFQ+AA8EhFBvb2wgY29tbWlzc2lvbiBoYXMgYmVlbiBjbGFpbWVkLmRNaW5CYWxhbmNlRGVmaWNpdEFkanVzdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4AEATIVG9wcGVkIHVwIGRlZmljaXQgaW4gZnJvemVuIEVEIG9mIHRoZSByZXdhcmQgcG9vbC5gTWluQmFsYW5jZUV4Y2Vzc0FkanVzdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4AEQS8Q2xhaW1lZCBleGNlc3MgZnJvemVuIEVEIG9mIGFmIHRoZSByZXdhcmQgcG9vbC5wTWVtYmVyQ2xhaW1QZXJtaXNzaW9uVXBkYXRlZAgBGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABKHBlcm1pc3Npb25hBQE8Q2xhaW1QZXJtaXNzaW9uABIEyEEgcG9vbCBtZW1iZXIncyBjbGFpbSBwZXJtaXNzaW9uIGhhcyBiZWVuIHVwZGF0ZWQuPE1ldGFkYXRhVXBkYXRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARhjYWxsZXIEATBUOjpBY2NvdW50SWQAEwR4QSBwb29sJ3MgbWV0YWRhdGEgd2FzIHVwZGF0ZWQuSFBvb2xOb21pbmF0aW9uTWFkZQgBHHBvb2xfaWQ4ARhQb29sSWQAARhjYWxsZXIEATBUOjpBY2NvdW50SWQAFAhZAUEgcG9vbCdzIG5vbWluYXRpbmcgYWNjb3VudCAob3IgdGhlIHBvb2wncyByb290IGFjY291bnQpIGhhcyBub21pbmF0ZWQgYSB2YWxpZGF0b3Igc2V0WG9uIGJlaGFsZiBvZiB0aGUgcG9vbC5QUG9vbE5vbWluYXRvckNoaWxsZWQIARxwb29sX2lkOAEYUG9vbElkAAEYY2FsbGVyBAEwVDo6QWNjb3VudElkABUEuFRoZSBwb29sIGlzIGNoaWxsZWQgaS5lLiBubyBsb25nZXIgbm9taW5hdGluZy5MR2xvYmFsUGFyYW1zVXBkYXRlZBgBNG1pbl9qb2luX2JvbmRVAQEwQmFsYW5jZU9mPFQ+AAE8bWluX2NyZWF0ZV9ib25kVQEBMEJhbGFuY2VPZjxUPgABJG1heF9wb29sc+ABLE9wdGlvbjx1MzI+AAEsbWF4X21lbWJlcnPgASxPcHRpb248dTMyPgABUG1heF9tZW1iZXJzX3Blcl9wb29s4AEsT3B0aW9uPHUzMj4AAVRnbG9iYWxfbWF4X2NvbW1pc3Npb25VCQE8T3B0aW9uPFBlcmJpbGw+ABYEAQFHbG9iYWwgcGFyYW1ldGVycyByZWd1bGF0aW5nIG5vbWluYXRpb24gcG9vbHMgaGF2ZSBiZWVuIHVwZGF0ZWQuBFhFdmVudHMgb2YgdGhpcyBwYWxsZXQuVQkEGE9wdGlvbgQEVAEdBQEIEE5vbmUAAAAQU29tZQQAHQUAAAEAAFkJDEBwYWxsZXRfYmFnc19saXN0GHBhbGxldBRFdmVudAgEVAAESQABCCBSZWJhZ2dlZAwBDHdobwQBMFQ6OkFjY291bnRJZAABEGZyb20oASBUOjpTY29yZQABCHRvKAEgVDo6U2NvcmUAAASkTW92ZWQgYW4gYWNjb3VudCBmcm9tIG9uZSBiYWcgdG8gYW5vdGhlci4wU2NvcmVVcGRhdGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEkbmV3X3Njb3JlKAEgVDo6U2NvcmUAAQTYVXBkYXRlZCB0aGUgc2NvcmUgb2Ygc29tZSBhY2NvdW50IHRvIHRoZSBnaXZlbiBhbW91bnQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0XQkMYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxhwYWxsZXQURXZlbnQEBFQAARAkRGVsZWdhdGVkDAEUYWdlbnQEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEwQmFsYW5jZU9mPFQ+AAAEfEZ1bmRzIGRlbGVnYXRlZCBieSBhIGRlbGVnYXRvci4gUmVsZWFzZWQMARRhZ2VudAQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4AAQR4RnVuZHMgcmVsZWFzZWQgdG8gYSBkZWxlZ2F0b3IuHFNsYXNoZWQMARRhZ2VudAQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4AAgR8RnVuZHMgc2xhc2hlZCBmcm9tIGEgZGVsZWdhdG9yLkhNaWdyYXRlZERlbGVnYXRpb24MARRhZ2VudAQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4AAwTEVW5jbGFpbWVkIGRlbGVnYXRpb24gZnVuZHMgbWlncmF0ZWQgdG8gZGVsZWdhdG9yLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldGEJDHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0FEV2ZW50BARUAAEQVFNlc3Npb25SZXBvcnRSZWNlaXZlZBABJGVuZF9pbmRleDgBMFNlc3Npb25JbmRleAABUGFjdGl2YXRpb25fdGltZXN0YW1wjQUBSE9wdGlvbjwodTY0LCB1MzIpPgABXHZhbGlkYXRvcl9wb2ludHNfY291bnRzOAEMdTMyAAEgbGVmdG92ZXJZAQEQYm9vbAAABIxBIHNhaWQgc2Vzc2lvbiByZXBvcnQgd2FzIHJlY2VpdmVkLjxPZmZlbmNlUmVjZWl2ZWQIATRzbGFzaF9zZXNzaW9uOAEwU2Vzc2lvbkluZGV4AAE4b2ZmZW5jZXNfY291bnQ4AQx1MzIAAQRsQSBuZXcgb2ZmZW5jZSB3YXMgcmVwb3J0ZWQuIEZlZXNQYWlkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEQZmVlc1UBATBCYWxhbmNlT2Y8VD4AAgwBAUZlZXMgd2VyZSBjaGFyZ2VkIGZvciBhIHVzZXIgb3BlcmF0aW9uIChzZXRfa2V5cyBvciBwdXJnZV9rZXlzKS4AGQFUaGUgZmVlIGluY2x1ZGVzIGJvdGggWENNIGRlbGl2ZXJ5IGZlZSBhbmQgcmVsYXkgY2hhaW4gZXhlY3V0aW9uIGNvc3QuKFVuZXhwZWN0ZWQEAGUJAThVbmV4cGVjdGVkS2luZAADCA0BU29tZXRoaW5nIG9jY3VycmVkIHRoYXQgc2hvdWxkIG5ldmVyIGhhcHBlbiB1bmRlciBub3JtYWwgb3BlcmF0aW9uLrxMb2dnZWQgYXMgYW4gZXZlbnQgZm9yIGZhaWwtc2FmZSBvYnNlcnZhYmlsaXR5LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldGUJDHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0OFVuZXhwZWN0ZWRLaW5kAAEYcFNlc3Npb25SZXBvcnRJbnRlZ3JpdHlGYWlsZWQAAABsVmFsaWRhdG9yU2V0SW50ZWdyaXR5RmFpbGVkAAEAOFNlc3Npb25Ta2lwcGVkAAIAXFNlc3Npb25BbHJlYWR5UHJvY2Vzc2VkAAMAWFZhbGlkYXRvclNldFNlbmRGYWlsZWQABABMVmFsaWRhdG9yU2V0RHJvcHBlZAAFAABpCQyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHBhbGxldBRFdmVudAQEVAABFERQaGFzZVRyYW5zaXRpb25lZAgBEGZyb22pBQEgUGhhc2U8VD4EQHRoZSBzb3VyY2UgcGhhc2UBCHRvqQUBIFBoYXNlPFQ+BEBUaGUgdGFyZ2V0IHBoYXNlAAhdAUEgcGhhc2UgdHJhbnNpdGlvbiBoYXBwZW5lZC4gT25seSBjaGVja3MgbWFqb3IgY2hhbmdlcyBpbiB0aGUgdmFyaWFudHMsIG5vdCBtaW5vciBpbm5lchx2YWx1ZXMueFVuZXhwZWN0ZWRUYXJnZXRTbmFwc2hvdEZhaWxlZAABBIBUYXJnZXQgc25hcHNob3QgY3JlYXRpb24gZmFpbGVkLnRVbmV4cGVjdGVkVm90ZXJTbmFwc2hvdEZhaWxlZAACBHxWb3RlciBzbmFwc2hvdCBjcmVhdGlvbiBmYWlsZWQukFVuZXhwZWN0ZWRQaGFzZVRyYW5zaXRpb25PdXRPZldlaWdodBABEGZyb22pBQEgUGhhc2U8VD4AAQh0b6kFASBQaGFzZTxUPgABIHJlcXVpcmVkEQEBGFdlaWdodAABDGhhZBEBARhXZWlnaHQAAwT4UGhhc2UgdHJhbnNpdGlvbiBjb3VsZCBub3QgcHJvY2VlZCBkdWUgdG8gYmVpbmcgb3V0IG9mIHdlaWdodC50VW5leHBlY3RlZFBoYXNlVHJhbnNpdGlvbkhhbHQIASByZXF1aXJlZBEBARhXZWlnaHQAAQxoYWQRAQEYV2VpZ2h0AAQEFQFQaGFzZSB0cmFuc2l0aW9uIGNvdWxkIG5vdCBldmVuIGJlZ2luIGJlY2FzZXUgb2YgYmVpbmcgb3V0IG9mIHdlaWdodC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRtCRSQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzGHBhbGxldBRFdmVudAQEVAABDEhWZXJpZmljYXRpb25GYWlsZWQIADgBJFBhZ2VJbmRleAAAcQkBQEZlYXNpYmlsaXR5RXJyb3IAABCgQSB2ZXJpZmljYXRpb24gZmFpbGVkIGF0IHRoZSBnaXZlbiBwYWdlLgBVAU5PVEU6IGlmIHRoZSBpbmRleCBpcyAwLCB0aGVuIHRoaXMgY291bGQgbWVhbiBlaXRoZXIgdGhlIGZlYXNpYmlsaXR5IG9mIHRoZSBsYXN0IHBhZ2UFAXdhcyB3cm9uZywgb3IgdGhlIGZpbmFsIGNoZWNrcyBvZiBgZmluYWxpemVfdmVyaWZpY2F0aW9uYCBmYWlsZWQuIFZlcmlmaWVkCAA4ASRQYWdlSW5kZXgAADgBDHUzMgABCFkBVGhlIGdpdmVuIHBhZ2Ugb2YgYSBzb2x1dGlvbiBoYXMgYmVlbiB2ZXJpZmllZCwgd2l0aCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHdpbm5lcnMgYmVpbmcwZm91bmQgaW4gaXQuGFF1ZXVlZAgA0QUBNEVsZWN0aW9uU2NvcmUAAHkJAVRPcHRpb248RWxlY3Rpb25TY29yZT4AAgQdAUEgc29sdXRpb24gd2l0aCB0aGUgZ2l2ZW4gc2NvcmUgaGFzIHJlcGxhY2VkIG91ciBjdXJyZW50IGJlc3Qgc29sdXRpb24uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0cQkMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllckBGZWFzaWJpbGl0eUVycm9yAAEsQFdyb25nV2lubmVyQ291bnQAAABMU25hcHNob3RVbmF2YWlsYWJsZQABACxJbnZhbGlkVm90ZQACADBJbnZhbGlkVm90ZXIAAwA0SW52YWxpZFdpbm5lcgAEADBJbnZhbGlkU2NvcmUABQAwSW52YWxpZFJvdW5kAAYALFNjb3JlVG9vTG93AAcAUEZhaWxlZFRvQm91bmRTdXBwb3J0AAgAME5wb3NFbGVjdGlvbgQAdQkBYHNwX25wb3NfZWxlY3Rpb25zOjpFcnJvcgAJAChJbmNvbXBsZXRlAAoAAHUJCERzcF9ucG9zX2VsZWN0aW9ucxRFcnJvcgABKFhTb2x1dGlvbldlaWdodE92ZXJmbG93AAAAWFNvbHV0aW9uVGFyZ2V0T3ZlcmZsb3cAAQBQU29sdXRpb25JbnZhbGlkSW5kZXgAAgBgU29sdXRpb25JbnZhbGlkUGFnZUluZGV4AAMAPEFyaXRobWV0aWNFcnJvcgAEAEhJbnZhbGlkU3VwcG9ydEVkZ2UABQA0VG9vTWFueVZvdGVycwAGADhCb3VuZHNFeGNlZWRlZAAHADhEdXBsaWNhdGVWb3RlcgAIADxEdXBsaWNhdGVUYXJnZXQACQAAeQkEGE9wdGlvbgQEVAHRBQEIEE5vbmUAAAAQU29tZQQA0QUAAAEAAH0JEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkGHBhbGxldBRFdmVudAQEVAABHChSZWdpc3RlcmVkDAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAA0QUBNEVsZWN0aW9uU2NvcmUAAARRAVVwY29taW5nIHN1Ym1pc3Npb24gaGFzIGJlZW4gcmVnaXN0ZXJlZCBmb3IgdGhlIGdpdmVuIGFjY291bnQsIHdpdGggdGhlIGdpdmVuIHNjb3JlLhhTdG9yZWQMADgBDHUzMgAABAEwVDo6QWNjb3VudElkAAA4ASRQYWdlSW5kZXgAAQRdAUEgcGFnZSBvZiBzb2x1dGlvbiBzb2x1dGlvbiB3aXRoIHRoZSBnaXZlbiBpbmRleCBoYXMgYmVlbiBzdG9yZWQgZm9yIHRoZSBnaXZlbiBhY2NvdW50LiBSZXdhcmRlZAwAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQAAFUBATBCYWxhbmNlT2Y8VD4AAgToVGhlIGdpdmVuIGFjY291bnQgaGFzIGJlZW4gcmV3YXJkZWQgd2l0aCB0aGUgZ2l2ZW4gYW1vdW50LhxTbGFzaGVkDAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAAVQEBMEJhbGFuY2VPZjxUPgADBORUaGUgZ2l2ZW4gYWNjb3VudCBoYXMgYmVlbiBzbGFzaGVkIHdpdGggdGhlIGdpdmVuIGFtb3VudC4cRWplY3RlZAgAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQABATUVGhlIGdpdmVuIHNvbHV0aW9uLCBmb3IgdGhlIGdpdmVuIHJvdW5kLCB3YXMgZWplY3RlZC4kRGlzY2FyZGVkCAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAFBJRUaGUgZ2l2ZW4gYWNjb3VudCBoYXMgYmVlbiBkaXNjYXJkZWQuGEJhaWxlZAgAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQABgR0VGhlIGdpdmVuIGFjY291bnQgaGFzIGJhaWxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSBCRBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldBRFdmVudAQEVAABbBxFcmFQYWlkDAEkZXJhX2luZGV4OAEgRXJhSW5kZXgAAUB2YWxpZGF0b3JfcGF5b3V0VQEBMEJhbGFuY2VPZjxUPgABJHJlbWFpbmRlclUBATBCYWxhbmNlT2Y8VD4AABRwVGhlIGVyYSBwYXlvdXQgaGFzIGJlZW4gc2V0LgANAUluIG5vbi1taW50aW5nIG1vZGUsIGB2YWxpZGF0b3JfcGF5b3V0YCBpcyB0aGUgc3Rha2VyIHJld2FyZCBidWRnZXQFAXNuYXBzaG90dGVkIGZyb20gdGhlIGdlbmVyYWwgcG90LCBhbmQgYHJlbWFpbmRlcmAgaXMgYWx3YXlzIHplcm8uIQFJbiBsZWdhY3kgbWludGluZyBtb2RlLCBib3RoIGZpZWxkcyByZWZsZWN0IHRoZSBgRXJhUGF5b3V0YCBjb21wdXRhdGlvbi4gUmV3YXJkZWQMARRzdGFzaAQBMFQ6OkFjY291bnRJZAABEGRlc3S9BgF8UmV3YXJkRGVzdGluYXRpb248VDo6QWNjb3VudElkPgABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4AAQQNAVRoZSBub21pbmF0b3IgaGFzIGJlZW4gcmV3YXJkZWQgYnkgdGhpcyBhbW91bnQgdG8gdGhpcyBkZXN0aW5hdGlvbi4cU2xhc2hlZAgBGHN0YWtlcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4AAgQdAUEgc3Rha2VyICh2YWxpZGF0b3Igb3Igbm9taW5hdG9yKSBoYXMgYmVlbiBzbGFzaGVkIGJ5IHRoZSBnaXZlbiBhbW91bnQuaE9sZFNsYXNoaW5nUmVwb3J0RGlzY2FyZGVkBAE0c2Vzc2lvbl9pbmRleDgBMFNlc3Npb25JbmRleAADCBkBQW4gb2xkIHNsYXNoaW5nIHJlcG9ydCBmcm9tIGEgcHJpb3IgZXJhIHdhcyBkaXNjYXJkZWQgYmVjYXVzZSBpdCBjb3VsZERub3QgYmUgcHJvY2Vzc2VkLhhCb25kZWQIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4ABBDQQW4gYWNjb3VudCBoYXMgYm9uZGVkIHRoaXMgYW1vdW50LiBcW3N0YXNoLCBhbW91bnRcXQBNAU5PVEU6IFRoaXMgZXZlbnQgaXMgb25seSBlbWl0dGVkIHdoZW4gZnVuZHMgYXJlIGJvbmRlZCB2aWEgYSBkaXNwYXRjaGFibGUuIE5vdGFibHksIQFpdCB3aWxsIG5vdCBiZSBlbWl0dGVkIGZvciBzdGFraW5nIHJld2FyZHMgd2hlbiB0aGV5IGFyZSBhZGRlZCB0byBzdGFrZS4gVW5ib25kZWQIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4ABQSQQW4gYWNjb3VudCBoYXMgdW5ib25kZWQgdGhpcyBhbW91bnQuJFdpdGhkcmF3bggBFHN0YXNoBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBMEJhbGFuY2VPZjxUPgAGCFkBQW4gYWNjb3VudCBoYXMgY2FsbGVkIGB3aXRoZHJhd191bmJvbmRlZGAgYW5kIHJlbW92ZWQgdW5ib25kaW5nIGNodW5rcyB3b3J0aCBgQmFsYW5jZWBkZnJvbSB0aGUgdW5sb2NraW5nIHF1ZXVlLjRTdGFrZXJSZW1vdmVkBAEUc3Rhc2gEATBUOjpBY2NvdW50SWQABwhVAUEgc3Vic2VxdWVudCBldmVudCBvZiBgV2l0aGRyYXduYCwgaW5kaWNhdGluZyB0aGF0IGBzdGFzaGAgd2FzIGZ1bGx5IHJlbW92ZWQgZnJvbSB0aGUcc3lzdGVtLhhLaWNrZWQIASRub21pbmF0b3IEATBUOjpBY2NvdW50SWQAARRzdGFzaAQBMFQ6OkFjY291bnRJZAAIBLRBIG5vbWluYXRvciBoYXMgYmVlbiBraWNrZWQgZnJvbSBhIHZhbGlkYXRvci4cQ2hpbGxlZAQBFHN0YXNoBAEwVDo6QWNjb3VudElkAAkEIQFBbiBhY2NvdW50IGhhcyBzdG9wcGVkIHBhcnRpY2lwYXRpbmcgYXMgZWl0aGVyIGEgdmFsaWRhdG9yIG9yIG5vbWluYXRvci40UGF5b3V0U3RhcnRlZBABJGVyYV9pbmRleDgBIEVyYUluZGV4AAE8dmFsaWRhdG9yX3N0YXNoBAEwVDo6QWNjb3VudElkAAEQcGFnZTgBEFBhZ2UAARBuZXh04AEwT3B0aW9uPFBhZ2U+AAoEWQFBIFBhZ2Ugb2Ygc3Rha2VycyByZXdhcmRzIGFyZSBnZXR0aW5nIHBhaWQuIGBuZXh0YCBpcyBgTm9uZWAgaWYgYWxsIHBhZ2VzIGFyZSBjbGFpbWVkLkRWYWxpZGF0b3JQcmVmc1NldAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAEUcHJlZnPBBgE4VmFsaWRhdG9yUHJlZnMACwSYQSB2YWxpZGF0b3IgaGFzIHNldCB0aGVpciBwcmVmZXJlbmNlcy5oU25hcHNob3RWb3RlcnNTaXplRXhjZWVkZWQEARBzaXplOAEMdTMyAAwEaFZvdGVycyBzaXplIGxpbWl0IHJlYWNoZWQubFNuYXBzaG90VGFyZ2V0c1NpemVFeGNlZWRlZAQBEHNpemU4AQx1MzIADQRsVGFyZ2V0cyBzaXplIGxpbWl0IHJlYWNoZWQuIEZvcmNlRXJhBAEQbW9kZYUJARxGb3JjaW5nAA4AZENvbnRyb2xsZXJCYXRjaERlcHJlY2F0ZWQEASBmYWlsdXJlczgBDHUzMgAPBKRSZXBvcnQgb2YgYSBjb250cm9sbGVyIGJhdGNoIGRlcHJlY2F0aW9uLkBDdXJyZW5jeU1pZ3JhdGVkCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAAThmb3JjZV93aXRoZHJhd1UBATBCYWxhbmNlT2Y8VD4AEAhVAVN0YWtpbmcgYmFsYW5jZSBtaWdyYXRlZCBmcm9tIGxvY2tzIHRvIGhvbGRzLCB3aXRoIGFueSBiYWxhbmNlIHRoYXQgY291bGQgbm90IGJlIGhlbGRMaXMgZm9yY2Ugd2l0aGRyYXduLlhQYWdlZEVsZWN0aW9uUHJvY2VlZGVkCAEQcGFnZTgBJFBhZ2VJbmRleAABGHJlc3VsdIkJAUBSZXN1bHQ8dTMyLCB1MzI+ABEkQQFBIHBhZ2UgZnJvbSBhIG11bHRpLXBhZ2UgZWxlY3Rpb24gd2FzIGZldGNoZWQuIEEgbnVtYmVyIG9mIHRoZXNlIGFyZSBmb2xsb3dlZCBieURgU3Rha2Vyc0VsZWN0ZWRgLgDwYE9rKGNvdW50KWAgaW5kaWNhdGVzIHRoZSBnaXZlIG51bWJlciBvZiBzdGFzaGVzIHdlcmUgYWRkZWQuBQFgRXJyKGluZGV4KWAgaW5kaWNhdGVzIHRoYXQgdGhlIHN0YXNoZXMgYWZ0ZXIgaW5kZXggd2VyZSBkcm9wcGVkLkEBYEVycigwKWAgaW5kaWNhdGVzIHRoYXQgYW4gZXJyb3IgaGFwcGVuZWQgYnV0IG5vIHN0YXNoZXMgd2VyZSBkcm9wcGVkIG5vciBhZGRlZC4AUQFUaGUgZXJyb3IgaW5kaWNhdGVzIHRoYXQgYSBudW1iZXIgb2YgdmFsaWRhdG9ycyB3ZXJlIGRyb3BwZWQgZHVlIHRvIGV4Y2VzcyBzaXplLCBidXSMdGhlIG92ZXJhbGwgZWxlY3Rpb24gd2lsbCBjb250aW51ZS48T2ZmZW5jZVJlcG9ydGVkDAEsb2ZmZW5jZV9lcmE4ASBFcmFJbmRleAABJHZhbGlkYXRvcgQBMFQ6OkFjY291bnRJZAABIGZyYWN0aW9uHQUBHFBlcmJpbGwAEghNAUFuIG9mZmVuY2UgZm9yIHRoZSBnaXZlbiB2YWxpZGF0b3IsIGZvciB0aGUgZ2l2ZW4gcGVyY2VudGFnZSBvZiB0aGVpciBzdGFrZSwgYXQgdGhlbGdpdmVuIGVyYSBhcyBiZWVuIHJlcG9ydGVkLjRTbGFzaENvbXB1dGVkEAEsb2ZmZW5jZV9lcmE4ASBFcmFJbmRleAABJHNsYXNoX2VyYTgBIEVyYUluZGV4AAEgb2ZmZW5kZXIEATBUOjpBY2NvdW50SWQAARBwYWdlOAEMdTMyABMEMQFBbiBvZmZlbmNlIGhhcyBiZWVuIHByb2Nlc3NlZCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgc2xhc2ggaGFzIGJlZW4gY29tcHV0ZWQuOFNsYXNoQ2FuY2VsbGVkCAEkc2xhc2hfZXJhOAEgRXJhSW5kZXgAASR2YWxpZGF0b3IEATBUOjpBY2NvdW50SWQAFASYQW4gdW5hcHBsaWVkIHNsYXNoIGhhcyBiZWVuIGNhbmNlbGxlZC44U2Vzc2lvblJvdGF0ZWQMAUBzdGFydGluZ19zZXNzaW9uOAEwU2Vzc2lvbkluZGV4AAEoYWN0aXZlX2VyYTgBIEVyYUluZGV4AAEscGxhbm5lZF9lcmE4ASBFcmFJbmRleAAVEIhTZXNzaW9uIGNoYW5nZSBoYXMgYmVlbiB0cmlnZ2VyZWQuAFkBSWYgcGxhbm5lZF9lcmEgaXMgb25lIGVyYSBhaGVhZCBvZiBhY3RpdmVfZXJhLCBpdCBpbXBsaWVzIG5ldyBlcmEgaXMgYmVpbmcgcGxhbm5lZCBhbmRQZWxlY3Rpb24gaXMgb25nb2luZy4oVW5leHBlY3RlZAQAjQkBRFVuZXhwZWN0ZWRLaW5kPFQ+ABYIDQFTb21ldGhpbmcgb2NjdXJyZWQgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuIHVuZGVyIG5vcm1hbCBvcGVyYXRpb24uvExvZ2dlZCBhcyBhbiBldmVudCBmb3IgZmFpbC1zYWZlIG9ic2VydmFiaWxpdHkuNE9mZmVuY2VUb29PbGQMASxvZmZlbmNlX2VyYTgBIEVyYUluZGV4AAEkdmFsaWRhdG9yBAEwVDo6QWNjb3VudElkAAEgZnJhY3Rpb24dBQEcUGVyYmlsbAAXBD0BQW4gb2ZmZW5jZSB3YXMgcmVwb3J0ZWQgdGhhdCB3YXMgdG9vIG9sZCB0byBiZSBwcm9jZXNzZWQsIGFuZCB0aHVzIHdhcyBkcm9wcGVkLiRFcmFQcnVuZWQEARRpbmRleDgBIEVyYUluZGV4ABgErEFuIG9sZCBlcmEgd2l0aCB0aGUgZ2l2ZW4gaW5kZXggd2FzIHBydW5lZC5YVmFsaWRhdG9ySW5jZW50aXZlUGFpZBABDGVyYTgBIEVyYUluZGV4AAE8dmFsaWRhdG9yX3N0YXNoBAEwVDo6QWNjb3VudElkAAEQZGVzdL0GAXxSZXdhcmREZXN0aW5hdGlvbjxUOjpBY2NvdW50SWQ+AAEYYW1vdW50VQEBMEJhbGFuY2VPZjxUPgAZBPRUaGUgdmFsaWRhdG9yIGhhcyBiZWVuIHBhaWQgdGhlaXIgc2VsZi1zdGFrZSBpbmNlbnRpdmUgYm9udXMubFZhbGlkYXRvckluY2VudGl2ZUNvbmZpZ1NldAwBSG9wdGltdW1fc2VsZl9zdGFrZVUBATBCYWxhbmNlT2Y8VD4AAUxoYXJkX2NhcF9zZWxmX3N0YWtlVQEBMEJhbGFuY2VPZjxUPgABMHNsb3BlX2ZhY3Rvch0FARxQZXJiaWxsABoE+FZhbGlkYXRvciBzZWxmLXN0YWtlIGluY2VudGl2ZSBjb25maWd1cmF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0hQkIUHBhbGxldF9zdGFraW5nX2FzeW5jHEZvcmNpbmcAARAoTm90Rm9yY2luZwAAACBGb3JjZU5ldwABACRGb3JjZU5vbmUAAgAsRm9yY2VBbHdheXMAAwAAiQkEGFJlc3VsdAgEVAE4BEUBOAEICE9rBAA4AAAAAAxFcnIEADgAAAEAAI0JEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0OFVuZXhwZWN0ZWRLaW5kBARUAAEYYEVyYUR1cmF0aW9uQm91bmRFeGNlZWRlZAAAAGhVbmtub3duVmFsaWRhdG9yQWN0aXZhdGlvbgABAGBQYWdlZEVsZWN0aW9uT3V0T2ZXZWlnaHQMARBwYWdlOAEkUGFnZUluZGV4AAEgcmVxdWlyZWQRAQEYV2VpZ2h0AAEMaGFkEQEBGFdlaWdodAACADBNaXNzaW5nUGF5ZWUIAQxlcmE4ASBFcmFJbmRleAABFHN0YXNoBAEwVDo6QWNjb3VudElkAAMAgFZhbGlkYXRvckluY2VudGl2ZVdlaWdodE1pc21hdGNoBAEMZXJhOAEgRXJhSW5kZXgABACAVmFsaWRhdG9ySW5jZW50aXZlVHJhbnNmZXJGYWlsZWQEAQxlcmE4ASBFcmFJbmRleAAFAACRCQx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchhwYWxsZXQURXZlbnQEBFQAARhQUmluZ1Jvb3RzSW5pdGlhbGl6ZWQIARRjb3VudDgBDHUzMgSETnVtYmVyIG9mIHJpbmcgcm9vdHMgaW5pdGlhbGl6ZWQuASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyBLBTZXF1ZW5jZSBudW1iZXIgb2YgdGhlIGluaXRpYWxpemF0aW9uIGJhdGNoLgAEzFJpbmcgcm9vdHMgaGF2ZSBiZWVuIGluaXRpYWxpemVkIGZyb20gdGhlIG5vdGlmaWVyLkBSaW5nUm9vdHNVcGRhdGVkCAEUY291bnQ4AQx1MzIEcE51bWJlciBvZiB1cGRhdGVzIHByb2Nlc3NlZC4BIHNlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIEdFNlcXVlbmNlIG51bWJlciBvZiB0aGUgYmF0Y2guAQSYUmluZyByb290IHVwZGF0ZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZC5YU3Vic2NyaXB0aW9uVGVybWluYXRlZAQBRG5vdGlmaWVyX25vdGlmaWVkWQEBEGJvb2wE0FdoZXRoZXIgdGhlIHVuc3Vic2NyaWJlIFhDTSB3YXMgc3VjY2Vzc2Z1bGx5IHF1ZXVlZC4CBIRTdWJzY3JpcHRpb24gaGFzIGJlZW4gdGVybWluYXRlZC5QTWlzc2luZ1JpbmdzRGV0ZWN0ZWQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgRsUmluZyBjb2xsZWN0aW9uIGlkZW50aWZpZXIuARRjb3VudDgBDHUzMgS4TnVtYmVyIG9mIG5ld2x5IGRldGVjdGVkIG1pc3NpbmcgcmluZyBpbmRpY2VzLgME4E5ldyBtaXNzaW5nIHJpbmcgcm9vdHMgZGV0ZWN0ZWQgZHVyaW5nIGJhdGNoIHByb2Nlc3NpbmcuRFJlcGxheVJlcXVlc3RTZW50CAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIEbFJpbmcgY29sbGVjdGlvbiBpZGVudGlmaWVyLgE0aW5kaWNlc19jb3VudDgBDHUzMgSgTnVtYmVyIG9mIG1pc3NpbmcgaW5kaWNlcyBpbiB0aGlzIGNodW5rLgQEtFJlcGxheSByZXF1ZXN0IHN1Y2Nlc3NmdWxseSBzZW50IHRvIG5vdGlmaWVyLmBEZWxldGVkSW5kaWNlc0F0Q2FwYWNpdHkEAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgRsUmluZyBjb2xsZWN0aW9uIGlkZW50aWZpZXIuBQQNAU1pc3NpbmcgcmluZyBzY2FuIHNraXBwZWQgYmVjYXVzZSBkZWxldGVkX2luZGljZXMgcmVhY2hlZCBjYXBhY2l0eS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSVCQxsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzGHBhbGxldBRFdmVudAQEVAABEDxBbGlhc0FjY291bnRTZXQMARxhY2NvdW50BAEwVDo6QWNjb3VudElkBHBUaGUgYWNjb3VudCB0aGF0IHdhcyBsaW5rZWQuAShjb2xsZWN0aW9uCAEoSWRlbnRpZmllcgRoVGhlIGNvbGxlY3Rpb24gaWRlbnRpZmllci4BFGFsaWFzCAEUQWxpYXMEVFRoZSBjb250ZXh0dWFsIGFsaWFzLgAEpEFuIGFsaWFzIGFjY291bnQgaGFzIGJlZW4gc2V0IG9yIHVwZGF0ZWQuREFsaWFzQWNjb3VudFVuc2V0BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAR4VGhlIGFjY291bnQgdGhhdCB3YXMgdW5saW5rZWQuAQSIQW4gYWxpYXMgYWNjb3VudCBoYXMgYmVlbiByZW1vdmVkLkxTdGFsZUFsaWFzQ2xlYW5lZFVwDAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAR4VGhlIGFjY291bnQgdGhhdCB3YXMgdW5saW5rZWQuAShjb2xsZWN0aW9uCAEoSWRlbnRpZmllcgRoVGhlIGNvbGxlY3Rpb24gaWRlbnRpZmllci4BFGFsaWFzCAEUQWxpYXMEVFRoZSBjb250ZXh0dWFsIGFsaWFzLgIElEEgc3RhbGUgYWxpYXMgbWFwcGluZyB3YXMgY2xlYW5lZCB1cC4sQWxpYXNGZWVTZXQEAQxmZWVVAQEwQmFsYW5jZU9mPFQ+AAMExFRoZSBQR0FTIGZlZSBmb3IgYWxpYXMgcmVnaXN0cmF0aW9ucyB3YXMgY2hhbmdlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSZCQxEaW5kaXZfcGFsbGV0X3BnYXMYcGFsbGV0FEV2ZW50BARUAAEMLFBnYXNDbGFpbWVkFAEUYWxpYXMIARRBbGlhcwABGHRhcmdldAQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBASEBPDxUIGFzIENvbmZpZz46OkZ1bmdpYmxlcyBhcyBmdW5naWJsZXM6Okluc3BlY3Q8VDo6QWNjb3VudElkPj46OgpCYWxhbmNlAAEoY29sbGVjdGlvbv0DAThQZ2FzQ29sbGVjdGlvbgABDGRheTgBDHUzMgAABHRQR0FTIHdhcyBjbGFpbWVkIGJ5IGEgcGVyc29uLkBQZ2FzQXNzZXRDcmVhdGVkAAEEbFRoZSBQR0FTIGFzc2V0IHdhcyBjcmVhdGVkLlxQZ2FzQ2xhaW1SZWNvcmRzQ2xlYW5lZAgBJGRheV9pbmRleDgBDHUzMgABFGNvdW50OAEMdTMyAAIEnE9sZCBQR0FTIGNsYWltIHJlY29yZHMgd2VyZSBjbGVhbmVkIHVwLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJ0JDDRwYWxsZXRfcmV2aXZlGHBhbGxldBRFdmVudAQEVAABDDxDb250cmFjdEVtaXR0ZWQMASBjb250cmFjdDkHARBIMTYwBJBUaGUgY29udHJhY3QgdGhhdCBlbWl0dGVkIHRoZSBldmVudC4BEGRhdGEYARxWZWM8dTg+CDUBRGF0YSBzdXBwbGllZCBieSB0aGUgY29udHJhY3QuIE1ldGFkYXRhIGdlbmVyYXRlZCBkdXJpbmcgY29udHJhY3QgY29tcGlsYXRpb25caXMgbmVlZGVkIHRvIGRlY29kZSBpdC4BGHRvcGljc8ABJFZlYzxIMjU2PgikQSBsaXN0IG9mIHRvcGljcyB1c2VkIHRvIGluZGV4IHRoZSBldmVudC7sTnVtYmVyIG9mIHRvcGljcyBpcyBjYXBwZWQgYnkgW2BsaW1pdHM6Ok5VTV9FVkVOVF9UT1BJQ1NgXS4ABJxBIGN1c3RvbSBldmVudCBlbWl0dGVkIGJ5IHRoZSBjb250cmFjdC4wSW5zdGFudGlhdGVkCAEgZGVwbG95ZXI5BwEQSDE2MAABIGNvbnRyYWN0OQcBEEgxNjAAAQTcQ29udHJhY3QgZGVwbG95ZWQgYnkgZGVwbG95ZXIgYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLkhFdGhFeHRyaW5zaWNSZXZlcnQEAThkaXNwYXRjaF9lcnJvcvkHATREaXNwYXRjaEVycm9yAAIYtEVtaXR0ZWQgd2hlbiBhbiBFdGhlcmV1bSB0cmFuc2FjdGlvbiByZXZlcnRzLgApAUV0aGVyZXVtIHRyYW5zYWN0aW9ucyBhbHdheXMgY29tcGxldGUgc3VjY2Vzc2Z1bGx5IGF0IHRoZSBleHRyaW5zaWMgbGV2ZWws2GFzIGV2ZW4gcmV2ZXJ0ZWQgY2FsbHMgbXVzdCBzdG9yZSB0aGVpciBgUmVjZWlwdEluZm9gLiUBVG8gZGlzdGluZ3Vpc2ggcmV2ZXJ0ZWQgY2FsbHMgZnJvbSBzdWNjZXNzZnVsIG9uZXMsIHRoaXMgZXZlbnQgaXMgZW1pdHRlZIRmb3IgZmFpbGVkIEV0aGVyZXVtIHRyYW5zYWN0aW9ucy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXShCQxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkYcGFsbGV0FEV2ZW50BARUAAEUME5hbWVSZXNlcnZlZBQBJGNhbmRpZGF0ZQQBMFQ6OkFjY291bnRJZASYVGhlIGNhbmRpZGF0ZSB3aG9zZSBuYW1lIHdhcyByZXNlcnZlZC4BIGF0dGVzdGVyBAEwVDo6QWNjb3VudElkBKxUaGUgYXR0ZXN0ZXIgd2hvIHBlcmZvcm1lZCB0aGUgcmVzZXJ2YXRpb24uAShsaXRlX2xhYmVsTQcBJEJhc2VMYWJlbAS4VGhlIGxpdGUtcGVyc29uIGxhYmVsIChgPGRucy1zdGVtPi48ZGlnaXRzPmApLgEgY2hhdF9rZXlRBwEcQ2hhdEtleQTkVGhlIEVDREggY2hhdCBrZXkgc3RvcmVkIGFsb25nc2lkZSB0aGUgbGl0ZS1wZXJzb24gbGFiZWwuAUxyZXNlcnZlZF9iYXNlX2xhYmVsVQcBRE9wdGlvbjxCYXNlTGFiZWw+BAUBVGhlIG9wdGlvbmFsIGJhc2UgbGFiZWwgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSBmdWxsLXBlcnNvbiBjbGFpbWluZy4ABPBBIHVzZXJuYW1lIGhhcyBiZWVuIHJlc2VydmVkIGZvciBhIGNhbmRpZGF0ZSBieSBhbiBhdHRlc3Rlci44TmFtZVJlZ2lzdGVyZWQQARRhbGlhcwgBFEFsaWFzBJhUaGUgYWxpYXMgZGVyaXZlZCBmcm9tIHRoZSByaW5nIHByb29mLgEcYWNjb3VudAQBMFQ6OkFjY291bnRJZASwVGhlIGFjY291bnQgdGhhdCBpbml0aWF0ZWQgdGhlIHJlZ2lzdHJhdGlvbi4BFGxhYmVsTQcBJEJhc2VMYWJlbASEVGhlIHJlZ2lzdGVyZWQgZnVsbC1wZXJzb24gbGFiZWwuARBsaW5rWQcBEExpbmsE5EhvdyB0aGUgZnVsbC1wZXJzb24gbGFiZWwgcmVsYXRlcyB0byBhIGxpdGUtcGVyc29uIGxhYmVsLgEE0EEgdXNlcm5hbWUgaGFzIGJlZW4gcmVnaXN0ZXJlZCBieSBhIHZlcmlmaWVkIHBlcnNvbi50QXR0ZXN0YXRpb25BbGxvd2FuY2VJbmNyZWFzZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkBFRUaGUgYXR0ZXN0ZXIgYWNjb3VudC4BFGNvdW50OAEMdTMyBIRUaGUgbnVtYmVyIG9mIGF0dGVzdGF0aW9ucyBhZGRlZC4CBMxBdHRlc3RhdGlvbiBhbGxvd2FuY2Ugd2FzIGluY3JlYXNlZCBmb3IgYW4gYWNjb3VudC54QWxsQXR0ZXN0YXRpb25BbGxvd2FuY2VDbGVhcmVkBAEgYXR0ZXN0ZXIEATBUOjpBY2NvdW50SWQEVFRoZSBhdHRlc3RlciBhY2NvdW50LgME8EFsbCBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgaGFzIGJlZW4gcmVtb3ZlZCBmb3IgdGhlIGF0dGVzdGVyLlBEaXNwYXRjaGVyQWRkcmVzc1NldAQBHGFkZHJlc3M5BwEQSDE2MARkVGhlIG5ldyBjb250cmFjdCBhZGRyZXNzLgQE1FRoZSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYCBjb250cmFjdCBhZGRyZXNzIHdhcyBzZXQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0pQkMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0FEV2ZW50BARUAAEEMFVzYWdlQ2xlYW5lZAQBGGVudGl0eWEHAUxUOjpSZXN0cmljdGVkRW50aXR5AAAEfFVzYWdlIGZvciBhbiBlbnRpdHkgaXMgY2xlYW5lZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSpCQwscGFsbGV0X3N1ZG8YcGFsbGV0FEV2ZW50BARUAAEQFFN1ZGlkBAEsc3Vkb19yZXN1bHQdCAE4RGlzcGF0Y2hSZXN1bHQEtFRoZSByZXN1bHQgb2YgdGhlIGNhbGwgbWFkZSBieSB0aGUgc3VkbyB1c2VyLgAEcEEgc3VkbyBjYWxsIGp1c3QgdG9vayBwbGFjZS4oS2V5Q2hhbmdlZAgBDG9sZI0BAVBPcHRpb248VDo6QWNjb3VudElkPgS0VGhlIG9sZCBzdWRvIGtleSAoaWYgb25lIHdhcyBwcmV2aW91c2x5IHNldCkuAQxuZXcEATBUOjpBY2NvdW50SWQEiFRoZSBuZXcgc3VkbyBrZXkgKGlmIG9uZSB3YXMgc2V0KS4BBHhUaGUgc3VkbyBrZXkgaGFzIGJlZW4gdXBkYXRlZC4oS2V5UmVtb3ZlZAACBIBUaGUga2V5IHdhcyBwZXJtYW5lbnRseSByZW1vdmVkLihTdWRvQXNEb25lBAEsc3Vkb19yZXN1bHQdCAE4RGlzcGF0Y2hSZXN1bHQEtFRoZSByZXN1bHQgb2YgdGhlIGNhbGwgbWFkZSBieSB0aGUgc3VkbyB1c2VyLgMEyEEgW3N1ZG9fYXNdKFBhbGxldDo6c3Vkb19hcykgY2FsbCBqdXN0IHRvb2sgcGxhY2UuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0rQkMVHBhbGxldF9wZ2FzX2FsbG93YW5jZRhwYWxsZXQURXZlbnQEBFQAAQQsUEdBU0ZlZVBhaWQIAQx3aG8EATBUOjpBY2NvdW50SWQAAShhY3R1YWxfZmVlVQEBMEJhbGFuY2VPZjxUPgAACEUBQSB0cmFuc2FjdGlvbiBmZWUgYGFjdHVhbF9mZWVgIGhhcyBiZWVuIHBhaWQgYnkgYHdob2AgaW4gUEdBUyBhbmQgYnVybmVkLiBNaXJyb3Jz6FtgcGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQ6OkV2ZW50OjpUcmFuc2FjdGlvbkZlZVBhaWRgXS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSxCQgwZnJhbWVfc3lzdGVtFFBoYXNlAAEMOEFwcGx5RXh0cmluc2ljBAA4AQx1MzIAAAAwRmluYWxpemF0aW9uAAEAOEluaXRpYWxpemF0aW9uAAIAALUJAAACzAC5CQgwZnJhbWVfc3lzdGVtWExhc3RSdW50aW1lVXBncmFkZUluZm8AAAgBMHNwZWNfdmVyc2lvbmABTGNvZGVjOjpDb21wYWN0PHUzMj4AASRzcGVjX25hbWW9CQFEQ293PCdzdGF0aWMsIHN0cj4AAL0JBAxDb3cEBFQBwQkABADBCQAAAMEJAAAFAgDFCQgwZnJhbWVfc3lzdGVtYENvZGVVcGdyYWRlQXV0aG9yaXphdGlvbgQEVAAACAEkY29kZV9oYXNoPAEcVDo6SGFzaAABNGNoZWNrX3ZlcnNpb25ZAQEQYm9vbAAAyQkMMGZyYW1lX3N5c3RlbRhsaW1pdHMwQmxvY2tXZWlnaHRzAAAMAShiYXNlX2Jsb2NrEQEBGFdlaWdodAABJG1heF9ibG9jaxEBARhXZWlnaHQAASRwZXJfY2xhc3PNCQGEUGVyRGlzcGF0Y2hDbGFzczxXZWlnaHRzUGVyQ2xhc3M+AADNCQw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUAdEJAAwBGG5vcm1hbNEJAQRUAAEsb3BlcmF0aW9uYWzRCQEEVAABJG1hbmRhdG9yedEJAQRUAADRCQwwZnJhbWVfc3lzdGVtGGxpbWl0czxXZWlnaHRzUGVyQ2xhc3MAABABOGJhc2VfZXh0cmluc2ljEQEBGFdlaWdodAABNG1heF9leHRyaW5zaWMNAQE4T3B0aW9uPFdlaWdodD4AASRtYXhfdG90YWwNAQE4T3B0aW9uPFdlaWdodD4AASByZXNlcnZlZA0BAThPcHRpb248V2VpZ2h0PgAA1QkMMGZyYW1lX3N5c3RlbRhsaW1pdHMsQmxvY2tMZW5ndGgAAAgBDG1heNkJAVRQZXJEaXNwYXRjaENsYXNzPHUzMj4AATxtYXhfaGVhZGVyX3NpemXgASxPcHRpb248dTMyPgAA2QkMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAE4AAwBGG5vcm1hbDgBBFQAASxvcGVyYXRpb25hbDgBBFQAASRtYW5kYXRvcnk4AQRUAADdCQgoc3Bfd2VpZ2h0czxSdW50aW1lRGJXZWlnaHQAAAgBEHJlYWQoAQx1NjQAARR3cml0ZSgBDHU2NAAA4QkIKHNwX3ZlcnNpb244UnVudGltZVZlcnNpb24AACABJHNwZWNfbmFtZb0JAURDb3c8J3N0YXRpYywgc3RyPgABJGltcGxfbmFtZb0JAURDb3c8J3N0YXRpYywgc3RyPgABRGF1dGhvcmluZ192ZXJzaW9uOAEMdTMyAAEwc3BlY192ZXJzaW9uOAEMdTMyAAEwaW1wbF92ZXJzaW9uOAEMdTMyAAEQYXBpc+UJARxBcGlzVmVjAAFMdHJhbnNhY3Rpb25fdmVyc2lvbjgBDHUzMgABOHN5c3RlbV92ZXJzaW9uDAEIdTgAAOUJBAxDb3cEBFQB6QkABADpCQAAAOkJAAAC7QkA7QkAAAQIWQI4APEJDDBmcmFtZV9zeXN0ZW0YcGFsbGV0FEVycm9yBARUAAEkPEludmFsaWRTcGVjTmFtZQAACBEBVGhlIG5hbWUgb2Ygc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBtYXRjaCBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS5oU3BlY1ZlcnNpb25OZWVkc1RvSW5jcmVhc2UAAQhBAVRoZSBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaXMgbm90IGFsbG93ZWQgdG8gZGVjcmVhc2UgYmV0d2VlbiB0aGUgY3VycmVudCBydW50aW1lUGFuZCB0aGUgbmV3IHJ1bnRpbWUudEZhaWxlZFRvRXh0cmFjdFJ1bnRpbWVWZXJzaW9uAAIM7EZhaWxlZCB0byBleHRyYWN0IHRoZSBydW50aW1lIHZlcnNpb24gZnJvbSB0aGUgbmV3IHJ1bnRpbWUuAAkBRWl0aGVyIGNhbGxpbmcgYENvcmVfdmVyc2lvbmAgb3IgZGVjb2RpbmcgYFJ1bnRpbWVWZXJzaW9uYCBmYWlsZWQuTE5vbkRlZmF1bHRDb21wb3NpdGUAAwT8U3VpY2lkZSBjYWxsZWQgd2hlbiB0aGUgYWNjb3VudCBoYXMgbm9uLWRlZmF1bHQgY29tcG9zaXRlIGRhdGEuPE5vblplcm9SZWZDb3VudAAEBDUBVGhlcmUgaXMgYSBub24temVybyByZWZlcmVuY2UgY291bnQgcHJldmVudGluZyB0aGUgYWNjb3VudCBmcm9tIGJlaW5nIHB1cmdlZC4wQ2FsbEZpbHRlcmVkAAUE0FRoZSBvcmlnaW4gZmlsdGVyIHByZXZlbnQgdGhlIGNhbGwgdG8gYmUgZGlzcGF0Y2hlZC5sTXVsdGlCbG9ja01pZ3JhdGlvbnNPbmdvaW5nAAYEVQFBIG11bHRpLWJsb2NrIG1pZ3JhdGlvbiBpcyBvbmdvaW5nIGFuZCBwcmV2ZW50cyB0aGUgY3VycmVudCBjb2RlIGZyb20gYmVpbmcgcmVwbGFjZWQuRE5vdGhpbmdBdXRob3JpemVkAAcEWE5vIHVwZ3JhZGUgYXV0aG9yaXplZC4wVW5hdXRob3JpemVkAAgElFRoZSBzdWJtaXR0ZWQgY29kZSBpcyBub3QgYXV0aG9yaXplZC4EbEVycm9yIGZvciB0aGUgU3lzdGVtIHBhbGxldPUJEChzcF9ydW50aW1lHGdlbmVyaWMUYmxvY2sUQmxvY2sIGEhlYWRlcgFcJEV4dHJpbnNpYwH5CQAIARhoZWFkZXJcARhIZWFkZXIAAShleHRyaW5zaWNzCQoBOFZlYzxFeHRyaW5zaWM+AAD5CRAoc3BfcnVudGltZRxnZW5lcmljTHVuY2hlY2tlZF9leHRyaW5zaWNIVW5jaGVja2VkRXh0cmluc2ljEBxBZGRyZXNzAQAQQ2FsbAEgJFNpZ25hdHVyZQGhBBRFeHRyYQH9CQAEABgAAAD9CQh0Y3VtdWx1c19wYWxsZXRfd2VpZ2h0X3JlY2xhaW1QU3RvcmFnZVdlaWdodFJlY2xhaW0IBFQABFMBAQoABAABCgEEUwAAAQoAAAQwBQqZB50HoQelB6kHrQe1B7kHvQfBB8kHAAUKAAAEFGkHcQd1B4EHjQcACQoAAAL5CQANCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbTBibG9ja193ZWlnaHQ8QmxvY2tXZWlnaHRNb2RlBARUAAEMIEZ1bGxDb3JlBAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAAARFBvdGVudGlhbEZ1bGxDb3JlDAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAFcZmlyc3RfdHJhbnNhY3Rpb25faW5kZXjgASxPcHRpb248dTMyPgABNHRhcmdldF93ZWlnaHQRAQEYV2VpZ2h0AAEAOEZyYWN0aW9uT2ZDb3JlCAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAFcZmlyc3RfdHJhbnNhY3Rpb25faW5kZXjgASxPcHRpb248dTMyPgACAAARCgAAAhUKABUKDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudCBBbmNlc3RvcgQESAE8AAwBOHVzZWRfYmFuZHdpZHRoGQoBNFVzZWRCYW5kd2lkdGgAAThwYXJhX2hlYWRfaGFzaPkEASRPcHRpb248SD4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWwtCgGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AABkKDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudDRVc2VkQmFuZHdpZHRoAAAMATR1bXBfbXNnX2NvdW50OAEMdTMyAAE8dW1wX3RvdGFsX2J5dGVzOAEMdTMyAAE0aHJtcF9vdXRnb2luZx0KAYxCVHJlZU1hcDxQYXJhSWQsIEhybXBDaGFubmVsVXBkYXRlPgAAHQoEIEJUcmVlTWFwCARLAZwEVgEhCgAEACUKAAAAIQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50REhybXBDaGFubmVsVXBkYXRlAAAIASRtc2dfY291bnQ4AQx1MzIAASx0b3RhbF9ieXRlczgBDHUzMgAAJQoAAAIpCgApCgAABAicIQoALQoEGE9wdGlvbgQEVAExCgEIEE5vbmUAAAAQU29tZQQAMQoAAAEAADEKDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5OFVwZ3JhZGVHb0FoZWFkAAEIFEFib3J0AAAAHEdvQWhlYWQAAQAANQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50OFNlZ21lbnRUcmFja2VyBARIATwADAE4dXNlZF9iYW5kd2lkdGgZCgE0VXNlZEJhbmR3aWR0aAABOGhybXBfd2F0ZXJtYXJr4AGAT3B0aW9uPHJlbGF5X2NoYWluOjpCbG9ja051bWJlcj4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWwtCgGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AADkKBBhPcHRpb24EBFQBPQoBCBBOb25lAAAAEFNvbWUEAD0KAAABAAA9CgxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUhVcGdyYWRlUmVzdHJpY3Rpb24AAQQcUHJlc2VudAAAAABBCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdFhNZXNzYWdpbmdTdGF0ZVNuYXBzaG90AAAQATBkbXFfbXFjX2hlYWQ8AURyZWxheV9jaGFpbjo6SGFzaAABnHJlbGF5X2Rpc3BhdGNoX3F1ZXVlX3JlbWFpbmluZ19jYXBhY2l0eUUKAYxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQABQGluZ3Jlc3NfY2hhbm5lbHNJCgGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgABPGVncmVzc19jaGFubmVsc0kKAYhWZWM8KFBhcmFJZCwgQWJyaWRnZWRIcm1wQ2hhbm5lbCk+AABFCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdIxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQAACAE8cmVtYWluaW5nX2NvdW50OAEMdTMyAAE4cmVtYWluaW5nX3NpemU4AQx1MzIAAEkKAAACTQoATQoAAAQInFEKAFEKDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5TEFicmlkZ2VkSHJtcENoYW5uZWwAABgBMG1heF9jYXBhY2l0eTgBDHUzMgABOG1heF90b3RhbF9zaXplOAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZTgBDHUzMgABJG1zZ19jb3VudDgBDHUzMgABKHRvdGFsX3NpemU4AQx1MzIAASBtcWNfaGVhZPkEATBPcHRpb248SGFzaD4AAFUKDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5ZEFicmlkZ2VkSG9zdENvbmZpZ3VyYXRpb24AACgBNG1heF9jb2RlX3NpemU4AQx1MzIAAUhtYXhfaGVhZF9kYXRhX3NpemU4AQx1MzIAAVhtYXhfdXB3YXJkX3F1ZXVlX2NvdW50OAEMdTMyAAFUbWF4X3Vwd2FyZF9xdWV1ZV9zaXplOAEMdTMyAAFcbWF4X3Vwd2FyZF9tZXNzYWdlX3NpemU4AQx1MzIAAZBtYXhfdXB3YXJkX21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGU4AQx1MzIAAYhocm1wX21heF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAFsdmFsaWRhdGlvbl91cGdyYWRlX2Nvb2xkb3duOAEsQmxvY2tOdW1iZXIAAWB2YWxpZGF0aW9uX3VwZ3JhZGVfZGVsYXk4ASxCbG9ja051bWJlcgABUGFzeW5jX2JhY2tpbmdfcGFyYW1zWQoBSEFzeW5jQmFja2luZ1BhcmFtcwAAWQoQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk0YXN5bmNfYmFja2luZ0hBc3luY0JhY2tpbmdQYXJhbXMAAAgBTG1heF9jYW5kaWRhdGVfZGVwdGg4AQx1MzIAAVBhbGxvd2VkX2FuY2VzdHJ5X2xlbjgBDHUzMgAAXQoIlGN1bXVsdXNfcHJpbWl0aXZlc19wYXJhY2hhaW5faW5oZXJlbnRETWVzc2FnZVF1ZXVlQ2hhaW4AAAQAPAEkUmVsYXlIYXNoAABhCgQgQlRyZWVNYXAIBEsBnARWAV0KAAQAZQoAAABlCgAAAmkKAGkKAAAECJxdCgBtCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRASW5ib3VuZE1lc3NhZ2VJZAAACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEscmV2ZXJzZV9pZHg4AQx1MzIAAHEKAAACdQoAdQoIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0xPdXRib3VuZEhybXBNZXNzYWdlBAhJZAGcAAgBJHJlY2lwaWVudJwBCElkAAEQZGF0YRgBTGFsbG9jOjp2ZWM6OlZlYzx1OD4AAHkKCHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtLFBvVk1lc3NhZ2VzAAAYAWhyZWxheV9zdG9yYWdlX3Jvb3Rfb3JfaGFzaDwBRHJlbGF5X2NoYWluOjpIYXNoAAE0Y29yZV9zZWxlY3RvcgwBCHU4AAEwYnVuZGxlX2luZGV4DAEIdTgAATR1bXBfbXNnX2NvdW50OAEMdTMyAAFMaHJtcF9vdXRib3VuZF9jb3VudDgBDHUzMgABYGhybXBfb3V0Ym91bmRfcmVjaXBpZW50c30KASxWZWM8UGFyYUlkPgAAfQoAAAKcAIEKDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFcnJvcgQEVAABGExPdmVybGFwcGluZ1VwZ3JhZGVzAAAEGQFBdHRlbXB0IHRvIHVwZ3JhZGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3aGlsZSBleGlzdGluZyB1cGdyYWRlIHBlbmRpbmcuUFByb2hpYml0ZWRCeVBvbGthZG90AAEETQFQb2xrYWRvdCBjdXJyZW50bHkgcHJvaGliaXRzIHRoaXMgcGFyYWNoYWluIGZyb20gdXBncmFkaW5nIGl0cyB2YWxpZGF0aW9uIGZ1bmN0aW9uLhhUb29CaWcAAghFAVRoZSBzdXBwbGllZCB2YWxpZGF0aW9uIGZ1bmN0aW9uIGhhcyBjb21waWxlZCBpbnRvIGEgYmxvYiBsYXJnZXIgdGhhbiBQb2xrYWRvdCBpczx3aWxsaW5nIHRvIHJ1bi5oVmFsaWRhdGlvbkRhdGFOb3RBdmFpbGFibGUAAwQdAVRoZSBpbmhlcmVudCB3aGljaCBzdXBwbGllcyB0aGUgdmFsaWRhdGlvbiBkYXRhIGRpZCBub3QgcnVuIHRoaXMgYmxvY2sudEhvc3RDb25maWd1cmF0aW9uTm90QXZhaWxhYmxlAAQEKQFUaGUgaW5oZXJlbnQgd2hpY2ggc3VwcGxpZXMgdGhlIGhvc3QgY29uZmlndXJhdGlvbiBkaWQgbm90IHJ1biB0aGlzIGJsb2NrLjBOb3RTY2hlZHVsZWQABQTYTm8gdmFsaWRhdGlvbiBmdW5jdGlvbiB1cGdyYWRlIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LoUKCDxwYWxsZXRfcHJlaW1hZ2VAT2xkUmVxdWVzdFN0YXR1cwgkQWNjb3VudElkAQQcQmFsYW5jZQFVAQEILFVucmVxdWVzdGVkCAEcZGVwb3NpdMUFAVAoQWNjb3VudElkLCBCYWxhbmNlKQABDGxlbjgBDHUzMgAAACRSZXF1ZXN0ZWQMARxkZXBvc2l0iQoBcE9wdGlvbjwoQWNjb3VudElkLCBCYWxhbmNlKT4AARRjb3VudDgBDHUzMgABDGxlbuABLE9wdGlvbjx1MzI+AAEAAIkKBBhPcHRpb24EBFQBxQUBCBBOb25lAAAAEFNvbWUEAMUFAAABAACNCgg8cGFsbGV0X3ByZWltYWdlNFJlcXVlc3RTdGF0dXMIJEFjY291bnRJZAEEGFRpY2tldAGRCgEILFVucmVxdWVzdGVkCAEYdGlja2V0lQoBTChBY2NvdW50SWQsIFRpY2tldCkAAQxsZW44AQx1MzIAAAAkUmVxdWVzdGVkDAEwbWF5YmVfdGlja2V0mQoBbE9wdGlvbjwoQWNjb3VudElkLCBUaWNrZXQpPgABFGNvdW50OAEMdTMyAAEkbWF5YmVfbGVu4AEsT3B0aW9uPHUzMj4AAQAAkQoUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQAVQEBKEY6OkJhbGFuY2UAAJUKAAAECASRCgCZCgQYT3B0aW9uBARUAZUKAQgQTm9uZQAAABBTb21lBACVCgAAAQAAnQoAAAQIPDgAoQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAClCgw8cGFsbGV0X3ByZWltYWdlGHBhbGxldBRFcnJvcgQEVAABIBhUb29CaWcAAASgUHJlaW1hZ2UgaXMgdG9vIGxhcmdlIHRvIHN0b3JlIG9uLWNoYWluLjBBbHJlYWR5Tm90ZWQAAQSkUHJlaW1hZ2UgaGFzIGFscmVhZHkgYmVlbiBub3RlZCBvbi1jaGFpbi40Tm90QXV0aG9yaXplZAACBMhUaGUgdXNlciBpcyBub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgYWN0aW9uLiBOb3ROb3RlZAADBPxUaGUgcHJlaW1hZ2UgY2Fubm90IGJlIHJlbW92ZWQgc2luY2UgaXQgaGFzIG5vdCB5ZXQgYmVlbiBub3RlZC4kUmVxdWVzdGVkAAQECQFBIHByZWltYWdlIG1heSBub3QgYmUgcmVtb3ZlZCB3aGVuIHRoZXJlIGFyZSBvdXRzdGFuZGluZyByZXF1ZXN0cy4wTm90UmVxdWVzdGVkAAUELQFUaGUgcHJlaW1hZ2UgcmVxdWVzdCBjYW5ub3QgYmUgcmVtb3ZlZCBzaW5jZSBubyBvdXRzdGFuZGluZyByZXF1ZXN0cyBleGlzdC4cVG9vTWFueQAGBFUBTW9yZSB0aGFuIGBNQVhfSEFTSF9VUEdSQURFX0JVTEtfQ09VTlRgIGhhc2hlcyB3ZXJlIHJlcXVlc3RlZCB0byBiZSB1cGdyYWRlZCBhdCBvbmNlLhhUb29GZXcABwTkVG9vIGZldyBoYXNoZXMgd2VyZSByZXF1ZXN0ZWQgdG8gYmUgdXBncmFkZWQgKGkuZS4gemVybykuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LqkKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBrQoEUwAABAC1CgEYVmVjPFQ+AACtCgQYT3B0aW9uBARUAbEKAQgQTm9uZQAAABBTb21lBACxCgAAAQAAsQoIQHBhbGxldF9zY2hlZHVsZXIkU2NoZWR1bGVkFBBOYW1lAQgQQ2FsbAHtBCxCbG9ja051bWJlcgE4NFBhbGxldHNPcmlnaW4B1QMkQWNjb3VudElkAQQAFAEgbWF5YmVfaWQ9BwEwT3B0aW9uPE5hbWU+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxs7QQBEENhbGwAAThtYXliZV9wZXJpb2RpY8gBlE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyPj4AARhvcmlnaW7VAwE0UGFsbGV0c09yaWdpbgAAtQoAAAKtCgC5CghAcGFsbGV0X3NjaGVkdWxlcixSZXRyeUNvbmZpZwQYUGVyaW9kATgADAE0dG90YWxfcmV0cmllcwwBCHU4AAEkcmVtYWluaW5nDAEIdTgAARhwZXJpb2Q4ARhQZXJpb2QAAL0KDEBwYWxsZXRfc2NoZWR1bGVyGHBhbGxldBRFcnJvcgQEVAABFEBGYWlsZWRUb1NjaGVkdWxlAAAEZEZhaWxlZCB0byBzY2hlZHVsZSBhIGNhbGwgTm90Rm91bmQAAQR8Q2Fubm90IGZpbmQgdGhlIHNjaGVkdWxlZCBjYWxsLlxUYXJnZXRCbG9ja051bWJlckluUGFzdAACBKRHaXZlbiB0YXJnZXQgYmxvY2sgbnVtYmVyIGlzIGluIHRoZSBwYXN0LkhSZXNjaGVkdWxlTm9DaGFuZ2UAAwTwUmVzY2hlZHVsZSBmYWlsZWQgYmVjYXVzZSBpdCBkb2VzIG5vdCBjaGFuZ2Ugc2NoZWR1bGVkIHRpbWUuFE5hbWVkAAQE0EF0dGVtcHQgdG8gdXNlIGEgbm9uLW5hbWVkIGZ1bmN0aW9uIG9uIGEgbmFtZWQgdGFzay4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuwQoMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFcnJvcgQEVAABBBxPbmdvaW5nAAAE6FRoZSBvcGVyYXRpb24gY2Fubm90IGNvbXBsZXRlIHNpbmNlIHNvbWUgTUJNcyBhcmUgb25nb2luZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuxQoIRHBhbGxldF9taWdyYXRpb25zME1ibUlzT25nb2luZwABDAxZZXMAAAAITm8AAQAUU3R1Y2sAAgAAyQoEGE9wdGlvbgQEVAHNCgEIEE5vbmUAAAAQU29tZQQAzQoAAAEAAM0KCERwYWxsZXRfbWlncmF0aW9ucyxNYm1Qcm9ncmVzcwAAEAFEY3VycmVudF9taWdyYXRpb244AQx1MzIAAUB0b3RhbF9taWdyYXRpb25zOAEMdTMyAAFcY3VycmVudF9taWdyYXRpb25fc3RlcHM4AQx1MzIAAWxjdXJyZW50X21pZ3JhdGlvbl9tYXhfc3RlcHPgASxPcHRpb248dTMyPgAA0QoIRHBhbGxldF9taWdyYXRpb25zJE1ibVN0YXR1cwAADAEcb25nb2luZ8UKATBNYm1Jc09uZ29pbmcAASBwcm9ncmVzc8kKAUxPcHRpb248TWJtUHJvZ3Jlc3M+AAEgcHJlZml4ZXM0ATBWZWM8VmVjPHU4Pj4AANUKDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQB2QoEUwAABADhCgEYVmVjPFQ+AADZCgw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLEJhbGFuY2VMb2NrBBxCYWxhbmNlAVUBAAwBCGlkWQIBOExvY2tJZGVudGlmaWVyAAEYYW1vdW50VQEBHEJhbGFuY2UAARxyZWFzb25z3QoBHFJlYXNvbnMAAN0KDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMcUmVhc29ucwABDAxGZWUAAAAQTWlzYwABAAxBbGwAAgAA4QoAAALZCgDlCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAekKBFMAAAQA7QoBGFZlYzxUPgAA6QoMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxSZXNlcnZlRGF0YQhEUmVzZXJ2ZUlkZW50aWZpZXIBWQIcQmFsYW5jZQFVAQAIAQhpZFkCAURSZXNlcnZlSWRlbnRpZmllcgABGGFtb3VudFUBARxCYWxhbmNlAADtCgAAAukKAPEKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB9QoEUwAABAD5CgEYVmVjPFQ+AAD1ChQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2MgSWRBbW91bnQICElkAVUIHEJhbGFuY2UBVQEACAEIaWRVCAEISWQAARhhbW91bnRVAQEcQmFsYW5jZQAA+QoAAAL1CgD9CgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQELBFMAAAQAEQsBGFZlYzxUPgAAAQsUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjIElkQW1vdW50CAhJZAEFCxxCYWxhbmNlAVUBAAgBCGlkBQsBCElkAAEYYW1vdW50VQEBHEJhbGFuY2UAAAULCHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lTFJ1bnRpbWVGcmVlemVSZWFzb24AAQg8Tm9taW5hdGlvblBvb2xzBAAJCwGUcGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkZyZWV6ZVJlYXNvbgBQABhSZXZpdmUEAA0LAWxwYWxsZXRfcmV2aXZlOjpGcmVlemVSZWFzb24AZAAACQsMXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldDBGcmVlemVSZWFzb24AAQQ4UG9vbE1pbkJhbGFuY2UAAAAADQsMNHBhbGxldF9yZXZpdmUYcGFsbGV0MEZyZWV6ZVJlYXNvbgABBDhQR2FzTWluQmFsYW5jZQAAAAARCwAAAgELABULDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0FEVycm9yCARUAARJAAEwOFZlc3RpbmdCYWxhbmNlAAAEnFZlc3RpbmcgYmFsYW5jZSB0b28gaGlnaCB0byBzZW5kIHZhbHVlLlRMaXF1aWRpdHlSZXN0cmljdGlvbnMAAQTIQWNjb3VudCBsaXF1aWRpdHkgcmVzdHJpY3Rpb25zIHByZXZlbnQgd2l0aGRyYXdhbC5MSW5zdWZmaWNpZW50QmFsYW5jZQACBHhCYWxhbmNlIHRvbyBsb3cgdG8gc2VuZCB2YWx1ZS5IRXhpc3RlbnRpYWxEZXBvc2l0AAME7FZhbHVlIHRvbyBsb3cgdG8gY3JlYXRlIGFjY291bnQgZHVlIHRvIGV4aXN0ZW50aWFsIGRlcG9zaXQuNEV4cGVuZGFiaWxpdHkABASQVHJhbnNmZXIvcGF5bWVudCB3b3VsZCBraWxsIGFjY291bnQuXEV4aXN0aW5nVmVzdGluZ1NjaGVkdWxlAAUEzEEgdmVzdGluZyBzY2hlZHVsZSBhbHJlYWR5IGV4aXN0cyBmb3IgdGhpcyBhY2NvdW50LixEZWFkQWNjb3VudAAGBIxCZW5lZmljaWFyeSBhY2NvdW50IG11c3QgcHJlLWV4aXN0LjxUb29NYW55UmVzZXJ2ZXMABwS4TnVtYmVyIG9mIG5hbWVkIHJlc2VydmVzIGV4Y2VlZCBgTWF4UmVzZXJ2ZXNgLjBUb29NYW55SG9sZHMACAT4TnVtYmVyIG9mIGhvbGRzIGV4Y2VlZCBgVmFyaWFudENvdW50T2Y8VDo6UnVudGltZUhvbGRSZWFzb24+YC44VG9vTWFueUZyZWV6ZXMACQSYTnVtYmVyIG9mIGZyZWV6ZXMgZXhjZWVkIGBNYXhGcmVlemVzYC5MSXNzdWFuY2VEZWFjdGl2YXRlZAAKBAEBVGhlIGlzc3VhbmNlIGNhbm5vdCBiZSBtb2RpZmllZCBzaW5jZSBpdCBpcyBhbHJlYWR5IGRlYWN0aXZhdGVkLiREZWx0YVplcm8ACwRkVGhlIGRlbHRhIGNhbm5vdCBiZSB6ZXJvLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4ZCwhocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQgUmVsZWFzZXMAAQgkVjFBbmNpZW50AAAACFYyAAEAAB0LEDRmcmFtZV9zdXBwb3J0GHRyYWl0cxxzdG9yYWdlGE5vRHJvcAQEVAEhCwAEACELAQRUAAAhCxg0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlJGltYmFsYW5jZSRJbWJhbGFuY2UMBEIBVQEYT25Ecm9wADhPcHBvc2l0ZU9uRHJvcAAABAEYYW1vdW50VQEBBEIAACULDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBaQEEUwAABAApCwEYVmVjPFQ+AAApCwAAAmkBAC0LCDhwYWxsZXRfdmVzdGluZyBSZWxlYXNlcwABCAhWMAAAAAhWMQABAAAxCww4cGFsbGV0X3Zlc3RpbmcYcGFsbGV0FEVycm9yBARUAAEUKE5vdFZlc3RpbmcAAASEVGhlIGFjY291bnQgZ2l2ZW4gaXMgbm90IHZlc3RpbmcuVEF0TWF4VmVzdGluZ1NjaGVkdWxlcwABCCUBVGhlIGFjY291bnQgYWxyZWFkeSBoYXMgYE1heFZlc3RpbmdTY2hlZHVsZXNgIGNvdW50IG9mIHNjaGVkdWxlcyBhbmQgdGh1c1EBY2Fubm90IGFkZCBhbm90aGVyIG9uZS4gQ29uc2lkZXIgbWVyZ2luZyBleGlzdGluZyBzY2hlZHVsZXMgaW4gb3JkZXIgdG8gYWRkIGFub3RoZXIuJEFtb3VudExvdwACBAUBQW1vdW50IGJlaW5nIHRyYW5zZmVycmVkIGlzIHRvbyBsb3cgdG8gY3JlYXRlIGEgdmVzdGluZyBzY2hlZHVsZS5gU2NoZWR1bGVJbmRleE91dE9mQm91bmRzAAME0EFuIGluZGV4IHdhcyBvdXQgb2YgYm91bmRzIG9mIHRoZSB2ZXN0aW5nIHNjaGVkdWxlcy5USW52YWxpZFNjaGVkdWxlUGFyYW1zAAQEDQFGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHNjaGVkdWxlIGJlY2F1c2Ugc29tZSBwYXJhbWV0ZXIgd2FzIGludmFsaWQuBHRFcnJvciBmb3IgdGhlIHZlc3RpbmcgcGFsbGV0LjULEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXMYcGFsbGV0FEVycm9yBARUAAEYYEludmFsaWRFdGhlcmV1bVNpZ25hdHVyZQAABGxJbnZhbGlkIEV0aGVyZXVtIHNpZ25hdHVyZS5AU2lnbmVySGFzTm9DbGFpbQABBHhFdGhlcmV1bSBhZGRyZXNzIGhhcyBubyBjbGFpbS5AU2VuZGVySGFzTm9DbGFpbQACBLBBY2NvdW50IElEIHNlbmRpbmcgdHJhbnNhY3Rpb24gaGFzIG5vIGNsYWltLjBQb3RVbmRlcmZsb3cAAwhJAVRoZXJlJ3Mgbm90IGVub3VnaCBpbiB0aGUgcG90IHRvIHBheSBvdXQgc29tZSB1bnZlc3RlZCBhbW91bnQuIEdlbmVyYWxseSBpbXBsaWVzIGEwbG9naWMgZXJyb3IuQEludmFsaWRTdGF0ZW1lbnQABASQQSBuZWVkZWQgc3RhdGVtZW50IHdhcyBub3QgaW5jbHVkZWQuTFZlc3RlZEJhbGFuY2VFeGlzdHMABQSkVGhlIGFjY291bnQgYWxyZWFkeSBoYXMgYSB2ZXN0ZWQgYmFsYW5jZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuOQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAXQEBGFZlYzxUPgAAPQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFBCwRTAAAEAEULARhWZWM8VD4AAEELDGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldDRDYW5kaWRhdGVJbmZvCCRBY2NvdW50SWQBBBxCYWxhbmNlAVUBAAgBDHdobwQBJEFjY291bnRJZAABHGRlcG9zaXRVAQEcQmFsYW5jZQAARQsAAAJBCwBJCwg0ZnJhbWVfc3VwcG9ydCBQYWxsZXRJZAAABABZAgEcW3U4OyA4XQAATQsMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEVycm9yBARUAAFERFRvb01hbnlDYW5kaWRhdGVzAAAEjFRoZSBwYWxsZXQgaGFzIHRvbyBtYW55IGNhbmRpZGF0ZXMuXFRvb0Zld0VsaWdpYmxlQ29sbGF0b3JzAAEErExlYXZpbmcgd291bGQgcmVzdWx0IGluIHRvbyBmZXcgY2FuZGlkYXRlcy5AQWxyZWFkeUNhbmRpZGF0ZQACBHxBY2NvdW50IGlzIGFscmVhZHkgYSBjYW5kaWRhdGUuME5vdENhbmRpZGF0ZQADBGxBY2NvdW50IGlzIG5vdCBhIGNhbmRpZGF0ZS5QVG9vTWFueUludnVsbmVyYWJsZXMABASEVGhlcmUgYXJlIHRvbyBtYW55IEludnVsbmVyYWJsZXMuTEFscmVhZHlJbnZ1bG5lcmFibGUABQSMQWNjb3VudCBpcyBhbHJlYWR5IGFuIEludnVsbmVyYWJsZS48Tm90SW52dWxuZXJhYmxlAAYEfEFjY291bnQgaXMgbm90IGFuIEludnVsbmVyYWJsZS5cTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQABwScQWNjb3VudCBoYXMgbm8gYXNzb2NpYXRlZCB2YWxpZGF0b3IgSUQuWFZhbGlkYXRvck5vdFJlZ2lzdGVyZWQACASMVmFsaWRhdG9yIElEIGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZC5sSW5zZXJ0VG9DYW5kaWRhdGVMaXN0RmFpbGVkAAkEnENvdWxkIG5vdCBpbnNlcnQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LnRSZW1vdmVGcm9tQ2FuZGlkYXRlTGlzdEZhaWxlZAAKBKRDb3VsZCBub3QgcmVtb3ZlIGZyb20gdGhlIGNhbmRpZGF0ZSBsaXN0LjREZXBvc2l0VG9vTG93AAsE9E5ldyBkZXBvc2l0IGFtb3VudCB3b3VsZCBiZSBiZWxvdyB0aGUgbWluaW11bSBjYW5kaWRhY3kgYm9uZC5kVXBkYXRlQ2FuZGlkYXRlTGlzdEZhaWxlZAAMBJBDb3VsZCBub3QgdXBkYXRlIHRoZSBjYW5kaWRhdGUgbGlzdC5ASW5zdWZmaWNpZW50Qm9uZAANBCkBRGVwb3NpdCBhbW91bnQgaXMgdG9vIGxvdyB0byB0YWtlIHRoZSB0YXJnZXQncyBzbG90IGluIHRoZSBjYW5kaWRhdGUgbGlzdC5QVGFyZ2V0SXNOb3RDYW5kaWRhdGUADgQtAVRoZSB0YXJnZXQgYWNjb3VudCB0byBiZSByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgaXMgbm90IGEgY2FuZGlkYXRlLkBJZGVudGljYWxEZXBvc2l0AA8EDQFUaGUgdXBkYXRlZCBkZXBvc2l0IGFtb3VudCBpcyBlcXVhbCB0byB0aGUgYW1vdW50IGFscmVhZHkgcmVzZXJ2ZWQuQEludmFsaWRVbnJlc2VydmUAEAQ9AUNhbm5vdCBsb3dlciBjYW5kaWRhY3kgYm9uZCB3aGlsZSBvY2N1cHlpbmcgYSBmdXR1cmUgY29sbGF0b3Igc2xvdCBpbiB0aGUgbGlzdC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuUQsAAAJVCwBVCwAABAgEmQEAWQsAAAJdCwBdCwAABAg4YQsAYQsMKHNwX3N0YWtpbmccb2ZmZW5jZTxPZmZlbmNlU2V2ZXJpdHkAAAQAHQUBHFBlcmJpbGwAAGULAAAECGkLGABpCwwcc3BfY29yZRhjcnlwdG8kS2V5VHlwZUlkAAAEAHABHFt1ODsgNF0AAG0LDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXJyb3IEBFQAARQwSW52YWxpZFByb29mAAAEYEludmFsaWQgb3duZXJzaGlwIHByb29mLlxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAABBJxObyBhc3NvY2lhdGVkIHZhbGlkYXRvciBJRCBmb3IgYWNjb3VudC40RHVwbGljYXRlZEtleQACBGRSZWdpc3RlcmVkIGR1cGxpY2F0ZSBrZXkuGE5vS2V5cwADBKRObyBrZXlzIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBhY2NvdW50LiROb0FjY291bnQABAQZAUtleSBzZXR0aW5nIGFjY291bnQgaXMgbm90IGxpdmUsIHNvIGl0J3MgaW1wb3NzaWJsZSB0byBhc3NvY2lhdGUga2V5cy4EdEVycm9yIGZvciB0aGUgc2Vzc2lvbiBwYWxsZXQucQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGdAQRTAAAEAHULARhWZWM8VD4AAHULAAACnQEAeQsISHNwX2NvbnNlbnN1c19zbG90cxBTbG90AAAEACgBDHU2NAAAfQsAAAQIeQs4AIELDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAGcBFMAAAQAhQsBLEJUcmVlU2V0PFQ+AACFCwQgQlRyZWVTZXQEBFQBnAAEAH0KAAAAiQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGNCwRTAAAEAJkLARhWZWM8VD4AAI0LCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlWE91dGJvdW5kQ2hhbm5lbERldGFpbHMAABgBJHJlY2lwaWVudJwBGFBhcmFJZAABFHN0YXRlkQsBNE91dGJvdW5kU3RhdGUAATRzaWduYWxzX2V4aXN0WQEBEGJvb2wAASxmaXJzdF9pbmRleNEDAQx1MTYAAShsYXN0X2luZGV40QMBDHUxNgABFGZsYWdzlQsBUE91dGJvdW5kQ2hhbm5lbEZsYWdzAACRCwhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTRPdXRib3VuZFN0YXRlAAEICE9rAAAAJFN1c3BlbmRlZAABAACVCwhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZVBPdXRib3VuZENoYW5uZWxGbGFncwAABAEQYml0czgBDHUzMgAAmQsAAAKNCwCdCwAABAic0QMAoQsMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAClCwhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTxRdWV1ZUNvbmZpZ0RhdGEAAAwBRHN1c3BlbmRfdGhyZXNob2xkOAEMdTMyAAE4ZHJvcF90aHJlc2hvbGQ4AQx1MzIAAUByZXN1bWVfdGhyZXNob2xkOAEMdTMyAACpCwxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQURXJyb3IEBFQAARQ4QmFkUXVldWVDb25maWcAAAQRAVNldHRpbmcgdGhlIHF1ZXVlIGNvbmZpZyBmYWlsZWQgc2luY2Ugb25lIG9mIGl0cyB2YWx1ZXMgd2FzIGludmFsaWQuQEFscmVhZHlTdXNwZW5kZWQAAQSMVGhlIGV4ZWN1dGlvbiBpcyBhbHJlYWR5IHN1c3BlbmRlZC44QWxyZWFkeVJlc3VtZWQAAgSEVGhlIGV4ZWN1dGlvbiBpcyBhbHJlYWR5IHJlc3VtZWQudFRvb01hbnlBY3RpdmVPdXRib3VuZENoYW5uZWxzAAMEsFRoZXJlIGFyZSB0b28gbWFueSBhY3RpdmUgb3V0Ym91bmQgY2hhbm5lbHMuGFRvb0JpZwAEBFxUaGUgbWVzc2FnZSBpcyB0b28gYmlnLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6tCwwocGFsbGV0X3hjbRhwYWxsZXQsUXVlcnlTdGF0dXMELEJsb2NrTnVtYmVyATgBDBxQZW5kaW5nEAEkcmVzcG9uZGVyqQEBRFZlcnNpb25lZExvY2F0aW9uAAFMbWF5YmVfbWF0Y2hfcXVlcmllcrELAWRPcHRpb248VmVyc2lvbmVkTG9jYXRpb24+AAEwbWF5YmVfbm90aWZ5tQsBQE9wdGlvbjwodTgsIHU4KT4AARx0aW1lb3V0OAEsQmxvY2tOdW1iZXIAAAA8VmVyc2lvbk5vdGlmaWVyCAEYb3JpZ2luqQEBRFZlcnNpb25lZExvY2F0aW9uAAEkaXNfYWN0aXZlWQEBEGJvb2wAAQAUUmVhZHkIASByZXNwb25zZb0LAURWZXJzaW9uZWRSZXNwb25zZQABCGF0OAEsQmxvY2tOdW1iZXIAAgAAsQsEGE9wdGlvbgQEVAGpAQEIEE5vbmUAAAAQU29tZQQAqQEAAAEAALULBBhPcHRpb24EBFQBuQsBCBBOb25lAAAAEFNvbWUEALkLAAABAAC5CwAABAgMDAC9CwgMeGNtRFZlcnNpb25lZFJlc3BvbnNlAAEMCFYzBABhAgEwdjM6OlJlc3BvbnNlAAMACFY0BADNAgEwdjQ6OlJlc3BvbnNlAAQACFY1BAAZAwEwdjU6OlJlc3BvbnNlAAUAAMELAAAECDipAQDFCwAABAwoEQE4AMkLDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBzQsEUwAABADRCwEYVmVjPFQ+AADNCwAABAipATgA0QsAAALNCwDVCwwocGFsbGV0X3hjbRhwYWxsZXRUVmVyc2lvbk1pZ3JhdGlvblN0YWdlAAEQXE1pZ3JhdGVTdXBwb3J0ZWRWZXJzaW9uAAAAXE1pZ3JhdGVWZXJzaW9uTm90aWZpZXJzAAEAUE5vdGlmeUN1cnJlbnRUYXJnZXRzBABJAQE8T3B0aW9uPFZlYzx1OD4+AAIAaE1pZ3JhdGVBbmROb3RpZnlPbGRUYXJnZXRzAAMAANkLAAAEDDgEoQMA3QsMKHBhbGxldF94Y20YcGFsbGV0aFJlbW90ZUxvY2tlZEZ1bmdpYmxlUmVjb3JkCEhDb25zdW1lcklkZW50aWZpZXIBEDBNYXhDb25zdW1lcnMAABABGGFtb3VudFUBARB1MTI4AAEUb3duZXKpAQFEVmVyc2lvbmVkTG9jYXRpb24AARhsb2NrZXKpAQFEVmVyc2lvbmVkTG9jYXRpb24AASRjb25zdW1lcnPhCwHQQm91bmRlZFZlYzwoQ29uc3VtZXJJZGVudGlmaWVyLCB1MTI4KSwgTWF4Q29uc3VtZXJzPgAA4QsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHlCwRTAAAEAOkLARhWZWM8VD4AAOULAAAECBBVAQDpCwAAAuULAO0LDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB8QsEUwAABAD1CwEYVmVjPFQ+AADxCwAABAhVAakBAPULAAAC8QsA+QsIKHBhbGxldF94Y21YQXV0aG9yaXplZEFsaWFzZXNFbnRyeQgYVGlja2V0Af0LDE1BWAEBDAAIASBhbGlhc2VycwUMAXhCb3VuZGVkVmVjPE9yaWdpbkFsaWFzZXIsIE1BWD4AARh0aWNrZXT9CwEYVGlja2V0AAD9CxQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlREhvbGRDb25zaWRlcmF0aW9uFARBAARGAARSAAREAAhGcAAABABVAQEoRjo6QmFsYW5jZQAAAQwMKHBhbGxldF94Y20YcGFsbGV0UE1heEF1dGhvcml6ZWRBbGlhc2VzAAAAAAUMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCQwEUwAABAANDAEYVmVjPFQ+AAAJDAxAeGNtX3J1bnRpbWVfYXBpc0hhdXRob3JpemVkX2FsaWFzZXM0T3JpZ2luQWxpYXNlcgAACAEgbG9jYXRpb26pAQFEVmVyc2lvbmVkTG9jYXRpb24AARhleHBpcnn8ASxPcHRpb248dTY0PgAADQwAAAIJDAARDAwocGFsbGV0X3hjbRhwYWxsZXQURXJyb3IEBFQAAXAsVW5yZWFjaGFibGUAAAhdAVRoZSBkZXNpcmVkIGRlc3RpbmF0aW9uIHdhcyB1bnJlYWNoYWJsZSwgZ2VuZXJhbGx5IGJlY2F1c2UgdGhlcmUgaXMgYSBubyB3YXkgb2Ygcm91dGluZxh0byBpdC4sU2VuZEZhaWx1cmUAAQhBAVRoZXJlIHdhcyBzb21lIG90aGVyIGlzc3VlIChpLmUuIG5vdCB0byBkbyB3aXRoIHJvdXRpbmcpIGluIHNlbmRpbmcgdGhlIG1lc3NhZ2UuyFBlcmhhcHMgYSBsYWNrIG9mIHNwYWNlIGZvciBidWZmZXJpbmcgdGhlIG1lc3NhZ2UuIEZpbHRlcmVkAAIEnFRoZSBtZXNzYWdlIGV4ZWN1dGlvbiBmYWlscyB0aGUgZmlsdGVyLkhVbndlaWdoYWJsZU1lc3NhZ2UAAwS0VGhlIG1lc3NhZ2UncyB3ZWlnaHQgY291bGQgbm90IGJlIGRldGVybWluZWQuYERlc3RpbmF0aW9uTm90SW52ZXJ0aWJsZQAEBNxUaGUgZGVzdGluYXRpb24gYExvY2F0aW9uYCBwcm92aWRlZCBjYW5ub3QgYmUgaW52ZXJ0ZWQuFEVtcHR5AAUEgFRoZSBhc3NldHMgdG8gYmUgc2VudCBhcmUgZW1wdHkuOENhbm5vdFJlYW5jaG9yAAYENQFDb3VsZCBub3QgcmUtYW5jaG9yIHRoZSBhc3NldHMgdG8gZGVjbGFyZSB0aGUgZmVlcyBmb3IgdGhlIGRlc3RpbmF0aW9uIGNoYWluLjRUb29NYW55QXNzZXRzAAcExFRvbyBtYW55IGFzc2V0cyBoYXZlIGJlZW4gYXR0ZW1wdGVkIGZvciB0cmFuc2Zlci40SW52YWxpZE9yaWdpbgAIBHhPcmlnaW4gaXMgaW52YWxpZCBmb3Igc2VuZGluZy4oQmFkVmVyc2lvbgAJBCEBVGhlIHZlcnNpb24gb2YgdGhlIGBWZXJzaW9uZWRgIHZhbHVlIHVzZWQgaXMgbm90IGFibGUgdG8gYmUgaW50ZXJwcmV0ZWQuLEJhZExvY2F0aW9uAAoIQQFUaGUgZ2l2ZW4gbG9jYXRpb24gY291bGQgbm90IGJlIHVzZWQgKGUuZy4gYmVjYXVzZSBpdCBjYW5ub3QgYmUgZXhwcmVzc2VkIGluIHRoZWBkZXNpcmVkIHZlcnNpb24gb2YgWENNKS44Tm9TdWJzY3JpcHRpb24ACwS8VGhlIHJlZmVyZW5jZWQgc3Vic2NyaXB0aW9uIGNvdWxkIG5vdCBiZSBmb3VuZC5EQWxyZWFkeVN1YnNjcmliZWQADAQRAVRoZSBsb2NhdGlvbiBpcyBpbnZhbGlkIHNpbmNlIGl0IGFscmVhZHkgaGFzIGEgc3Vic2NyaXB0aW9uIGZyb20gdXMuWENhbm5vdENoZWNrT3V0VGVsZXBvcnQADQQpAUNvdWxkIG5vdCBjaGVjay1vdXQgdGhlIGFzc2V0cyBmb3IgdGVsZXBvcnRhdGlvbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4uKExvd0JhbGFuY2UADgRBAVRoZSBvd25lciBkb2VzIG5vdCBvd24gKGFsbCkgb2YgdGhlIGFzc2V0IHRoYXQgdGhleSB3aXNoIHRvIGRvIHRoZSBvcGVyYXRpb24gb24uMFRvb01hbnlMb2NrcwAPBMBUaGUgYXNzZXQgb3duZXIgaGFzIHRvbyBtYW55IGxvY2tzIG9uIHRoZSBhc3NldC5MQWNjb3VudE5vdFNvdmVyZWlnbgAQBDEBVGhlIGdpdmVuIGFjY291bnQgaXMgbm90IGFuIGlkZW50aWZpYWJsZSBzb3ZlcmVpZ24gYWNjb3VudCBmb3IgYW55IGxvY2F0aW9uLihGZWVzTm90TWV0ABEEKQFUaGUgb3BlcmF0aW9uIHJlcXVpcmVkIGZlZXMgdG8gYmUgcGFpZCB3aGljaCB0aGUgaW5pdGlhdG9yIGNvdWxkIG5vdCBtZWV0LjBMb2NrTm90Rm91bmQAEgT0QSByZW1vdGUgbG9jayB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGRhdGEgY291bGQgbm90IGJlIGZvdW5kLhRJblVzZQATBEkBVGhlIHVubG9jayBvcGVyYXRpb24gY2Fubm90IHN1Y2NlZWQgYmVjYXVzZSB0aGVyZSBhcmUgc3RpbGwgY29uc3VtZXJzIG9mIHRoZSBsb2NrLmhJbnZhbGlkQXNzZXRVbmtub3duUmVzZXJ2ZQAVBPBJbnZhbGlkIGFzc2V0LCByZXNlcnZlIGNoYWluIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIGZvciBpdC54SW52YWxpZEFzc2V0VW5zdXBwb3J0ZWRSZXNlcnZlABYERQFJbnZhbGlkIGFzc2V0LCBkbyBub3Qgc3VwcG9ydCByZW1vdGUgYXNzZXQgcmVzZXJ2ZXMgd2l0aCBkaWZmZXJlbnQgZmVlcyByZXNlcnZlcy48VG9vTWFueVJlc2VydmVzABcESQFUb28gbWFueSBhc3NldHMgd2l0aCBkaWZmZXJlbnQgcmVzZXJ2ZSBsb2NhdGlvbnMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuYExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZQAYBHxMb2NhbCBYQ00gZXhlY3V0aW9uIGluY29tcGxldGUuYFRvb01hbnlBdXRob3JpemVkQWxpYXNlcwAZBLhUb28gbWFueSBsb2NhdGlvbnMgYXV0aG9yaXplZCB0byBhbGlhcyBvcmlnaW4uNEV4cGlyZXNJblBhc3QAGgSMRXhwaXJ5IGJsb2NrIG51bWJlciBpcyBpbiB0aGUgcGFzdC40QWxpYXNOb3RGb3VuZAAbBNBUaGUgYWxpYXMgdG8gcmVtb3ZlIGF1dGhvcml6YXRpb24gZm9yIHdhcyBub3QgZm91bmQuhExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZVdpdGhFcnJvcggBFGluZGV4DAFASW5zdHJ1Y3Rpb25JbmRleAABFGVycm9yFQwBOEV4ZWN1dGlvbkVycm9yABwINQFMb2NhbCBYQ00gZXhlY3V0aW9uIGluY29tcGxldGUgd2l0aCB0aGUgYWN0dWFsIFhDTSBlcnJvciBhbmQgdGhlIGluZGV4IG9mIHRoZYhpbnN0cnVjdGlvbiB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LhUMDChwYWxsZXRfeGNtGGVycm9yczhFeGVjdXRpb25FcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIANFRvb01hbnlBc3NldHMAIwBMVW5oYW5kbGVkWGNtVmVyc2lvbgAkAEhXZWlnaHRMaW1pdFJlYWNoZWQAJQAcQmFycmllcgAmAExXZWlnaHROb3RDb21wdXRhYmxlACcAREV4Y2VlZHNTdGFja0xpbWl0ACgAABkMCGBicF94Y21fYnJpZGdlX2h1Yl9yb3V0ZXIsQnJpZGdlU3RhdGUAAAgBTGRlbGl2ZXJ5X2ZlZV9mYWN0b3INBQEkRml4ZWRVMTI4AAEwaXNfY29uZ2VzdGVkWQEBEGJvb2wAAB0MCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZSRCb29rU3RhdGUENE1lc3NhZ2VPcmlnaW4BsQMAGAEUYmVnaW44ASRQYWdlSW5kZXgAAQxlbmQ4ASRQYWdlSW5kZXgAARRjb3VudDgBJFBhZ2VJbmRleAABQHJlYWR5X25laWdoYm91cnMhDAGET3B0aW9uPE5laWdoYm91cnM8TWVzc2FnZU9yaWdpbj4+AAE0bWVzc2FnZV9jb3VudCgBDHU2NAABEHNpemUoAQx1NjQAACEMBBhPcHRpb24EBFQBJQwBCBBOb25lAAAAEFNvbWUEACUMAAABAAAlDAhQcGFsbGV0X21lc3NhZ2VfcXVldWUoTmVpZ2hib3VycwQ0TWVzc2FnZU9yaWdpbgGxAwAIARBwcmV2sQMBNE1lc3NhZ2VPcmlnaW4AARBuZXh0sQMBNE1lc3NhZ2VPcmlnaW4AACkMAAAECLEDOAAtDAhQcGFsbGV0X21lc3NhZ2VfcXVldWUQUGFnZQgQU2l6ZQE4IEhlYXBTaXplAAAYASRyZW1haW5pbmc4ARBTaXplAAE4cmVtYWluaW5nX3NpemU4ARBTaXplAAEsZmlyc3RfaW5kZXg4ARBTaXplAAEUZmlyc3Q4ARBTaXplAAEQbGFzdDgBEFNpemUAARBoZWFwMQwBnEJvdW5kZWRWZWM8dTgsIEludG9VMzI8SGVhcFNpemUsIFNpemU+PgAAMQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAA1DAxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0FEVycm9yBARUAAEkLE5vdFJlYXBhYmxlAAAISQFQYWdlIGlzIG5vdCByZWFwYWJsZSBiZWNhdXNlIGl0IGhhcyBpdGVtcyByZW1haW5pbmcgdG8gYmUgcHJvY2Vzc2VkIGFuZCBpcyBub3Qgb2xkHGVub3VnaC4YTm9QYWdlAAEEhFBhZ2UgdG8gYmUgcmVhcGVkIGRvZXMgbm90IGV4aXN0LiROb01lc3NhZ2UAAgSoVGhlIHJlZmVyZW5jZWQgbWVzc2FnZSBjb3VsZCBub3QgYmUgZm91bmQuQEFscmVhZHlQcm9jZXNzZWQAAwQBAVRoZSBtZXNzYWdlIHdhcyBhbHJlYWR5IHByb2Nlc3NlZCBhbmQgY2Fubm90IGJlIHByb2Nlc3NlZCBhZ2Fpbi4YUXVldWVkAAQErFRoZSBtZXNzYWdlIGlzIHF1ZXVlZCBmb3IgZnV0dXJlIGV4ZWN1dGlvbi5ISW5zdWZmaWNpZW50V2VpZ2h0AAUEGQFUaGVyZSBpcyB0ZW1wb3JhcmlseSBub3QgZW5vdWdoIHdlaWdodCB0byBjb250aW51ZSBzZXJ2aWNpbmcgbWVzc2FnZXMuYFRlbXBvcmFyaWx5VW5wcm9jZXNzYWJsZQAGEKhUaGlzIG1lc3NhZ2UgaXMgdGVtcG9yYXJpbHkgdW5wcm9jZXNzYWJsZS4AWQFTdWNoIGVycm9ycyBhcmUgZXhwZWN0ZWQsIGJ1dCBub3QgZ3VhcmFudGVlZCwgdG8gcmVzb2x2ZSB0aGVtc2VsdmVzIGV2ZW50dWFsbHkgdGhyb3VnaCRyZXRyeWluZy4sUXVldWVQYXVzZWQABwzsVGhlIHF1ZXVlIGlzIHBhdXNlZCBhbmQgbm8gbWVzc2FnZSBjYW4gYmUgZXhlY3V0ZWQgZnJvbSBpdC4AHQFUaGlzIGNhbiBjaGFuZ2UgYXQgYW55IHRpbWUgYW5kIG1heSByZXNvbHZlIGluIHRoZSBmdXR1cmUgYnkgcmUtdHJ5aW5nLkxSZWN1cnNpdmVEaXNhbGxvd2VkAAgEMQFBbm90aGVyIGNhbGwgaXMgaW4gcHJvZ3Jlc3MgYW5kIG5lZWRzIHRvIGZpbmlzaCBiZWZvcmUgdGhpcyBjYWxsIGNhbiBoYXBwZW4uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LjkMDIRzbm93YnJpZGdlX3BhbGxldF9zeXN0ZW1fZnJvbnRlbmQYcGFsbGV0FEVycm9yBARUAAE0aFVuc3VwcG9ydGVkTG9jYXRpb25WZXJzaW9uAAAEiENvbnZlcnQgdmVyc2lvbmVkIGxvY2F0aW9uIGZhaWx1cmVESW52YWxpZEFzc2V0T3duZXIAAQQZAUNoZWNrIGxvY2F0aW9uIGZhaWx1cmUsIHNob3VsZCBzdGFydCBmcm9tIHRoZSBkaXNwYXRjaCBvcmlnaW4gYXMgb3duZXIsU2VuZEZhaWx1cmUAAgRgU2VuZCB4Y20gbWVzc2FnZSBmYWlsdXJlKEZlZXNOb3RNZXQAAwRoV2l0aGRyYXcgZmVlIGFzc2V0IGZhaWx1cmVgTG9jYXRpb25Db252ZXJzaW9uRmFpbGVkAAQEmENvbnZlcnQgdG8gcmVhbmNob3JlZCBsb2NhdGlvbiBmYWlsdXJlGEhhbHRlZAAFBGBNZXNzYWdlIGV4cG9ydCBpcyBoYWx0ZWQsVW5yZWFjaGFibGUABghdAVRoZSBkZXNpcmVkIGRlc3RpbmF0aW9uIHdhcyB1bnJlYWNoYWJsZSwgZ2VuZXJhbGx5IGJlY2F1c2UgdGhlcmUgaXMgYSBubyB3YXkgb2Ygcm91dGluZxh0byBpdC5AVW5zdXBwb3J0ZWRBc3NldAAHBLhUaGUgYXNzZXQgcHJvdmlkZWQgZm9yIHRoZSB0aXAgaXMgdW5zdXBwb3J0ZWQuNFdpdGhkcmF3RXJyb3IACARkVW5hYmxlIHRvIHdpdGhkcmF3IGFzc2V0LjhJbnZhbGlkQWNjb3VudAAJBLRBY2NvdW50IGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBsb2NhdGlvbi4kU3dhcEVycm9yAAoEyFByb3ZpZGVkIHRpcCBhc3NldCBjb3VsZCBub3QgYmUgc3dhcHBlZCBmb3IgZXRoZXIuJEJ1cm5FcnJvcgALBGhFdGhlciBjb3VsZCBub3QgYmUgYnVybmVkLjRUaXBBbW91bnRaZXJvAAwEZFRoZSB0aXAgcHJvdmlkZWQgaXMgemVyby4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuPQwMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFcnJvcgQEVAABBDBUb29NYW55Q2FsbHMAAARcVG9vIG1hbnkgY2FsbHMgYmF0Y2hlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuQQwAAAQIBAgARQwIPHBhbGxldF9tdWx0aXNpZyBNdWx0aXNpZxAsQmxvY2tOdW1iZXIBOBxCYWxhbmNlAVUBJEFjY291bnRJZAEEME1heEFwcHJvdmFscwAAEAEQd2hlbhUEAVhUaW1lcG9pbnQ8QmxvY2tOdW1iZXI+AAEcZGVwb3NpdFUBARxCYWxhbmNlAAEkZGVwb3NpdG9yBAEkQWNjb3VudElkAAEkYXBwcm92YWxzSQwBjEJvdW5kZWRWZWM8QWNjb3VudElkLCBNYXhBcHByb3ZhbHM+AABJDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABABdAQEYVmVjPFQ+AABNDAw8cGFsbGV0X211bHRpc2lnGHBhbGxldBRFcnJvcgQEVAABOEBNaW5pbXVtVGhyZXNob2xkAAAEfFRocmVzaG9sZCBtdXN0IGJlIDIgb3IgZ3JlYXRlci48QWxyZWFkeUFwcHJvdmVkAAEErENhbGwgaXMgYWxyZWFkeSBhcHByb3ZlZCBieSB0aGlzIHNpZ25hdG9yeS5ETm9BcHByb3ZhbHNOZWVkZWQAAgScQ2FsbCBkb2Vzbid0IG5lZWQgYW55IChtb3JlKSBhcHByb3ZhbHMuRFRvb0Zld1NpZ25hdG9yaWVzAAMEqFRoZXJlIGFyZSB0b28gZmV3IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LkhUb29NYW55U2lnbmF0b3JpZXMABASsVGhlcmUgYXJlIHRvbyBtYW55IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LlRTaWduYXRvcmllc091dE9mT3JkZXIABQQNAVRoZSBzaWduYXRvcmllcyB3ZXJlIHByb3ZpZGVkIG91dCBvZiBvcmRlcjsgdGhleSBzaG91bGQgYmUgb3JkZXJlZC5MU2VuZGVySW5TaWduYXRvcmllcwAGBA0BVGhlIHNlbmRlciB3YXMgY29udGFpbmVkIGluIHRoZSBvdGhlciBzaWduYXRvcmllczsgaXQgc2hvdWxkbid0IGJlLiBOb3RGb3VuZAAHBKBNdWx0aXNpZyBvcGVyYXRpb24gbm90IGZvdW5kIGluIHN0b3JhZ2UuIE5vdE93bmVyAAgIUQFPbmx5IHRoZSBhY2NvdW50IHRoYXQgb3JpZ2luYWxseSBjcmVhdGVkIHRoZSBtdWx0aXNpZyBpcyBhYmxlIHRvIGNhbmNlbCBpdCBvciB1cGRhdGU0aXRzIGRlcG9zaXRzLixOb1RpbWVwb2ludAAJBB0BTm8gdGltZXBvaW50IHdhcyBnaXZlbiwgeWV0IHRoZSBtdWx0aXNpZyBvcGVyYXRpb24gaXMgYWxyZWFkeSB1bmRlcndheS44V3JvbmdUaW1lcG9pbnQACgQtAUEgZGlmZmVyZW50IHRpbWVwb2ludCB3YXMgZ2l2ZW4gdG8gdGhlIG11bHRpc2lnIG9wZXJhdGlvbiB0aGF0IGlzIHVuZGVyd2F5LkxVbmV4cGVjdGVkVGltZXBvaW50AAsE9EEgdGltZXBvaW50IHdhcyBnaXZlbiwgeWV0IG5vIG11bHRpc2lnIG9wZXJhdGlvbiBpcyB1bmRlcndheS48TWF4V2VpZ2h0VG9vTG93AAwE0FRoZSBtYXhpbXVtIHdlaWdodCBpbmZvcm1hdGlvbiBwcm92aWRlZCB3YXMgdG9vIGxvdy40QWxyZWFkeVN0b3JlZAANBKBUaGUgZGF0YSB0byBiZSBzdG9yZWQgaXMgYWxyZWFkeSBzdG9yZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LlEMAAAECFUMVQEAVQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFZDARTAAAEAF0MARhWZWM8VD4AAFkMCDBwYWxsZXRfcHJveHk8UHJveHlEZWZpbml0aW9uDCRBY2NvdW50SWQBBCRQcm94eVR5cGUBIQQsQmxvY2tOdW1iZXIBOAAMASBkZWxlZ2F0ZQQBJEFjY291bnRJZAABKHByb3h5X3R5cGUhBAEkUHJveHlUeXBlAAEUZGVsYXk4ASxCbG9ja051bWJlcgAAXQwAAAJZDABhDAAABAhlDFUBAGUMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBaQwEUwAABABtDAEYVmVjPFQ+AABpDAgwcGFsbGV0X3Byb3h5MEFubm91bmNlbWVudAwkQWNjb3VudElkAQQQSGFzaAE8LEJsb2NrTnVtYmVyATgADAEQcmVhbAQBJEFjY291bnRJZAABJGNhbGxfaGFzaDwBEEhhc2gAARhoZWlnaHQ4ASxCbG9ja051bWJlcgAAbQwAAAJpDABxDAwwcGFsbGV0X3Byb3h5GHBhbGxldBRFcnJvcgQEVAABIBxUb29NYW55AAAEIQFUaGVyZSBhcmUgdG9vIG1hbnkgcHJveGllcyByZWdpc3RlcmVkIG9yIHRvbyBtYW55IGFubm91bmNlbWVudHMgcGVuZGluZy4gTm90Rm91bmQAAQR0UHJveHkgcmVnaXN0cmF0aW9uIG5vdCBmb3VuZC4gTm90UHJveHkAAgTMU2VuZGVyIGlzIG5vdCBhIHByb3h5IG9mIHRoZSBhY2NvdW50IHRvIGJlIHByb3hpZWQuLFVucHJveHlhYmxlAAMEIQFBIGNhbGwgd2hpY2ggaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIHByb3h5IHR5cGUncyBmaWx0ZXIgd2FzIGF0dGVtcHRlZC4kRHVwbGljYXRlAAQEbEFjY291bnQgaXMgYWxyZWFkeSBhIHByb3h5LjBOb1Blcm1pc3Npb24ABQQVAUNhbGwgbWF5IG5vdCBiZSBtYWRlIGJ5IHByb3h5IGJlY2F1c2UgaXQgbWF5IGVzY2FsYXRlIGl0cyBwcml2aWxlZ2VzLixVbmFubm91bmNlZAAGBNBBbm5vdW5jZW1lbnQsIGlmIG1hZGUgYXQgYWxsLCB3YXMgbWFkZSB0b28gcmVjZW50bHkuLE5vU2VsZlByb3h5AAcEZENhbm5vdCBhZGQgc2VsZiBhcyBwcm94eS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQudQwAAAQMBFUBWQEAeQwMOHBhbGxldF9pbmRpY2VzGHBhbGxldBRFcnJvcgQEVAABFCxOb3RBc3NpZ25lZAAABIxUaGUgaW5kZXggd2FzIG5vdCBhbHJlYWR5IGFzc2lnbmVkLiBOb3RPd25lcgABBKRUaGUgaW5kZXggaXMgYXNzaWduZWQgdG8gYW5vdGhlciBhY2NvdW50LhRJblVzZQACBHBUaGUgaW5kZXggd2FzIG5vdCBhdmFpbGFibGUuLE5vdFRyYW5zZmVyAAMEyFRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFjY291bnRzIGFyZSBpZGVudGljYWwuJFBlcm1hbmVudAAEBNBUaGUgaW5kZXggaXMgcGVybWFuZW50IGFuZCBtYXkgbm90IGJlIGZyZWVkL2NoYW5nZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Ln0MDDRwYWxsZXRfYXNzZXRzFHR5cGVzMEFzc2V0RGV0YWlscwwcQmFsYW5jZQFVASRBY2NvdW50SWQBBDhEZXBvc2l0QmFsYW5jZQFVAQAwARRvd25lcgQBJEFjY291bnRJZAABGGlzc3VlcgQBJEFjY291bnRJZAABFGFkbWluBAEkQWNjb3VudElkAAEcZnJlZXplcgQBJEFjY291bnRJZAABGHN1cHBseVUBARxCYWxhbmNlAAEcZGVwb3NpdFUBAThEZXBvc2l0QmFsYW5jZQABLG1pbl9iYWxhbmNlVQEBHEJhbGFuY2UAATRpc19zdWZmaWNpZW50WQEBEGJvb2wAASBhY2NvdW50czgBDHUzMgABLHN1ZmZpY2llbnRzOAEMdTMyAAEkYXBwcm92YWxzOAEMdTMyAAEYc3RhdHVzgQwBLEFzc2V0U3RhdHVzAACBDAw0cGFsbGV0X2Fzc2V0cxR0eXBlcyxBc3NldFN0YXR1cwABDBBMaXZlAAAAGEZyb3plbgABAChEZXN0cm95aW5nAAIAAIUMAAAECDgEAIkMDDRwYWxsZXRfYXNzZXRzFHR5cGVzMEFzc2V0QWNjb3VudBAcQmFsYW5jZQFVAThEZXBvc2l0QmFsYW5jZQFVARRFeHRyYQEQJEFjY291bnRJZAEEABABHGJhbGFuY2VVAQEcQmFsYW5jZQABGHN0YXR1c40MATRBY2NvdW50U3RhdHVzAAEYcmVhc29ukQwBqEV4aXN0ZW5jZVJlYXNvbjxEZXBvc2l0QmFsYW5jZSwgQWNjb3VudElkPgABFGV4dHJhEAEURXh0cmEAAI0MDDRwYWxsZXRfYXNzZXRzFHR5cGVzNEFjY291bnRTdGF0dXMAAQwYTGlxdWlkAAAAGEZyb3plbgABABxCbG9ja2VkAAIAAJEMDDRwYWxsZXRfYXNzZXRzFHR5cGVzPEV4aXN0ZW5jZVJlYXNvbggcQmFsYW5jZQFVASRBY2NvdW50SWQBBAEUIENvbnN1bWVyAAAAKFN1ZmZpY2llbnQAAQAsRGVwb3NpdEhlbGQEAFUBARxCYWxhbmNlAAIAPERlcG9zaXRSZWZ1bmRlZAADACxEZXBvc2l0RnJvbQgABAEkQWNjb3VudElkAABVAQEcQmFsYW5jZQAEAACVDAAABAw4BAQAmQwMNHBhbGxldF9hc3NldHMUdHlwZXMgQXBwcm92YWwIHEJhbGFuY2UBVQE4RGVwb3NpdEJhbGFuY2UBVQEACAEYYW1vdW50VQEBHEJhbGFuY2UAARxkZXBvc2l0VQEBOERlcG9zaXRCYWxhbmNlAACdDAw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBc3NldE1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQFVATRCb3VuZGVkU3RyaW5nAaEMABQBHGRlcG9zaXRVAQE4RGVwb3NpdEJhbGFuY2UAARBuYW1loQwBNEJvdW5kZWRTdHJpbmcAARhzeW1ib2yhDAE0Qm91bmRlZFN0cmluZwABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5ZAQEQYm9vbAAAoQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAClDAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXJyb3IIBFQABEkAAWAoQmFsYW5jZUxvdwAABBUBQWNjb3VudCBiYWxhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0cmFuc2ZlciBhbW91bnQuJE5vQWNjb3VudAABBJBUaGUgYWNjb3VudCB0byBhbHRlciBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4cVW5rbm93bgADBHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi4YRnJvemVuAAQEdFRoZSBvcmlnaW4gYWNjb3VudCBpcyBmcm96ZW4uFEluVXNlAAUEeFRoZSBhc3NldCBJRCBpcyBhbHJlYWR5IHRha2VuLihCYWRXaXRuZXNzAAYEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLjhNaW5CYWxhbmNlWmVybwAHBIxNaW5pbXVtIGJhbGFuY2Ugc2hvdWxkIGJlIG5vbi16ZXJvLkxVbmF2YWlsYWJsZUNvbnN1bWVyAAgMWQFVbmFibGUgdG8gaW5jcmVtZW50IHRoZSBjb25zdW1lciByZWZlcmVuY2UgY291bnRlcnMgb24gdGhlIGFjY291bnQuIEVpdGhlciBubyBwcm92aWRlck0BcmVmZXJlbmNlIGV4aXN0cyB0byBhbGxvdyBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgYSBub24tc2VsZi1zdWZmaWNpZW50IGFzc2V0LCBvciBvbmXwZmV3ZXIgdGhlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGhhcyBiZWVuIHJlYWNoZWQuLEJhZE1ldGFkYXRhAAkEXEludmFsaWQgbWV0YWRhdGEgZ2l2ZW4uKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLiBXb3VsZERpZQALBDUBVGhlIHNvdXJjZSBhY2NvdW50IHdvdWxkIG5vdCBzdXJ2aXZlIHRoZSB0cmFuc2ZlciBhbmQgaXQgbmVlZHMgdG8gc3RheSBhbGl2ZS40QWxyZWFkeUV4aXN0cwAMBIRUaGUgYXNzZXQtYWNjb3VudCBhbHJlYWR5IGV4aXN0cy4kTm9EZXBvc2l0AA0E1FRoZSBhc3NldC1hY2NvdW50IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRlcG9zaXQuJFdvdWxkQnVybgAOBMRUaGUgb3BlcmF0aW9uIHdvdWxkIHJlc3VsdCBpbiBmdW5kcyBiZWluZyBidXJuZWQuJExpdmVBc3NldAAPCFkBVGhlIGFzc2V0IGlzIGEgbGl2ZSBhc3NldCBhbmQgaXMgYWN0aXZlbHkgYmVpbmcgdXNlZC4gVXN1YWxseSBlbWl0IGZvciBvcGVyYXRpb25zIHN1Y2gdAWFzIGBzdGFydF9kZXN0cm95YCB3aGljaCByZXF1aXJlIHRoZSBhc3NldCB0byBiZSBpbiBhIGRlc3Ryb3lpbmcgc3RhdGUuMEFzc2V0Tm90TGl2ZQAQBMhUaGUgYXNzZXQgaXMgbm90IGxpdmUsIGFuZCBsaWtlbHkgYmVpbmcgZGVzdHJveWVkLjxJbmNvcnJlY3RTdGF0dXMAEQSwVGhlIGFzc2V0IHN0YXR1cyBpcyBub3QgdGhlIGV4cGVjdGVkIHN0YXR1cy4kTm90RnJvemVuABIE2FRoZSBhc3NldCBzaG91bGQgYmUgZnJvemVuIGJlZm9yZSB0aGUgZ2l2ZW4gb3BlcmF0aW9uLjhDYWxsYmFja0ZhaWxlZAATBIRDYWxsYmFjayBhY3Rpb24gcmVzdWx0ZWQgaW4gZXJyb3IoQmFkQXNzZXRJZAAUBMhUaGUgYXNzZXQgSUQgbXVzdCBiZSBlcXVhbCB0byB0aGUgW2BOZXh0QXNzZXRJZGBdLjxDb250YWluc0ZyZWV6ZXMAFQRNAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGZyZWV6ZXMuNENvbnRhaW5zSG9sZHMAFgRFAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGhvbGRzLjxUb29NYW55UmVzZXJ2ZXMAFwSAVHJpZWQgc2V0dGluZyB0b28gbWFueSByZXNlcnZlcy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuqQwEGE9wdGlvbgQEVAF9DAEIEE5vbmUAAAAQU29tZQQAfQwAAAEAAK0MBBhPcHRpb24EBFQBnQwBCBBOb25lAAAAEFNvbWUEAJ0MAAABAACxDAw4cGFsbGV0X3VuaXF1ZXMUdHlwZXNEQ29sbGVjdGlvbkRldGFpbHMIJEFjY291bnRJZAEEOERlcG9zaXRCYWxhbmNlAVUBACgBFG93bmVyBAEkQWNjb3VudElkAAEYaXNzdWVyBAEkQWNjb3VudElkAAEUYWRtaW4EASRBY2NvdW50SWQAARxmcmVlemVyBAEkQWNjb3VudElkAAE0dG90YWxfZGVwb3NpdFUBAThEZXBvc2l0QmFsYW5jZQABMGZyZWVfaG9sZGluZ1kBARBib29sAAEUaXRlbXM4AQx1MzIAAThpdGVtX21ldGFkYXRhczgBDHUzMgABKGF0dHJpYnV0ZXM4AQx1MzIAASRpc19mcm96ZW5ZAQEQYm9vbAAAtQwAAAQMBDg4ALkMDDhwYWxsZXRfdW5pcXVlcxR0eXBlcyxJdGVtRGV0YWlscwgkQWNjb3VudElkAQQ4RGVwb3NpdEJhbGFuY2UBVQEAEAEUb3duZXIEASRBY2NvdW50SWQAASBhcHByb3ZlZI0BAURPcHRpb248QWNjb3VudElkPgABJGlzX2Zyb3plblkBARBib29sAAEcZGVwb3NpdFUBAThEZXBvc2l0QmFsYW5jZQAAvQwMOHBhbGxldF91bmlxdWVzFHR5cGVzSENvbGxlY3Rpb25NZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBVQEsU3RyaW5nTGltaXQAAAwBHGRlcG9zaXRVAQE4RGVwb3NpdEJhbGFuY2UAARBkYXRhRQQBbEJvdW5kZWRWZWM8dTgsIFN0cmluZ0xpbWl0PgABJGlzX2Zyb3plblkBARBib29sAADBDAw4cGFsbGV0X3VuaXF1ZXMUdHlwZXMwSXRlbU1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQFVASxTdHJpbmdMaW1pdAAADAEcZGVwb3NpdFUBAThEZXBvc2l0QmFsYW5jZQABEGRhdGFFBAFsQm91bmRlZFZlYzx1OCwgU3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuWQEBEGJvb2wAAMUMAAAEDDjgwQMAyQwAAAQIeFUBAM0MAAAECFUBjQEA0QwMOHBhbGxldF91bmlxdWVzGHBhbGxldBRFcnJvcggEVAAESQABWDBOb1Blcm1pc3Npb24AAAToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLkRVbmtub3duQ29sbGVjdGlvbgABBHRUaGUgZ2l2ZW4gaXRlbSBJRCBpcyB1bmtub3duLjRBbHJlYWR5RXhpc3RzAAIEuFRoZSBpdGVtIElEIGhhcyBhbHJlYWR5IGJlZW4gdXNlZCBmb3IgYW4gaXRlbS4oV3JvbmdPd25lcgADBOhUaGUgb3duZXIgdHVybmVkIG91dCB0byBiZSBkaWZmZXJlbnQgdG8gd2hhdCB3YXMgZXhwZWN0ZWQuKEJhZFdpdG5lc3MABARsSW52YWxpZCB3aXRuZXNzIGRhdGEgZ2l2ZW4uFEluVXNlAAUEdFRoZSBpdGVtIElEIGlzIGFscmVhZHkgdGFrZW4uGEZyb3plbgAGBIRUaGUgaXRlbSBvciBjb2xsZWN0aW9uIGlzIGZyb3plbi40V3JvbmdEZWxlZ2F0ZQAHBPRUaGUgZGVsZWdhdGUgdHVybmVkIG91dCB0byBiZSBkaWZmZXJlbnQgdG8gd2hhdCB3YXMgZXhwZWN0ZWQuKE5vRGVsZWdhdGUACAR4VGhlcmUgaXMgbm8gZGVsZWdhdGUgYXBwcm92ZWQuKFVuYXBwcm92ZWQACQTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLihVbmFjY2VwdGVkAAoEJQFUaGUgbmFtZWQgb3duZXIgaGFzIG5vdCBzaWduZWQgb3duZXJzaGlwIG9mIHRoZSBjb2xsZWN0aW9uIGlzIGFjY2VwdGFibGUuGExvY2tlZAALBExUaGUgaXRlbSBpcyBsb2NrZWQuQE1heFN1cHBseVJlYWNoZWQADARsQWxsIGl0ZW1zIGhhdmUgYmVlbiBtaW50ZWQuTE1heFN1cHBseUFscmVhZHlTZXQADQSQVGhlIG1heCBzdXBwbHkgaGFzIGFscmVhZHkgYmVlbiBzZXQuRE1heFN1cHBseVRvb1NtYWxsAA4EQQFUaGUgcHJvdmlkZWQgbWF4IHN1cHBseSBpcyBsZXNzIHRvIHRoZSBhbW91bnQgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGFscmVhZHkgaGFzLixVbmtub3duSXRlbQAPBHRUaGUgZ2l2ZW4gaXRlbSBJRCBpcyB1bmtub3duLihOb3RGb3JTYWxlABAEVEl0ZW0gaXMgbm90IGZvciBzYWxlLiRCaWRUb29Mb3cAEQRwVGhlIHByb3ZpZGVkIGJpZCBpcyB0b28gbG93LihOb01ldGFkYXRhABIEVE5vIG1ldGFkYXRhIGlzIGZvdW5kLjRXcm9uZ01ldGFkYXRhABMEoFdyb25nIG1ldGFkYXRhIGtleS92YWx1ZSBieXRlcyBzdXBwbGllZC5EQXR0cmlidXRlTm90Rm91bmQAFARoQW4gYXR0cmlidXRlIGlzIG5vdCBmb3VuZC44V3JvbmdBdHRyaWJ1dGUAFQSkV3JvbmcgYXR0cmlidXRlIGtleS92YWx1ZSBieXRlcyBzdXBwbGllZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu1QwMLHBhbGxldF9uZnRzFHR5cGVzRENvbGxlY3Rpb25EZXRhaWxzCCRBY2NvdW50SWQBBDhEZXBvc2l0QmFsYW5jZQFVAQAYARRvd25lcgQBJEFjY291bnRJZAABNG93bmVyX2RlcG9zaXRVAQE4RGVwb3NpdEJhbGFuY2UAARRpdGVtczgBDHUzMgABOGl0ZW1fbWV0YWRhdGFzOAEMdTMyAAEwaXRlbV9jb25maWdzOAEMdTMyAAEoYXR0cmlidXRlczgBDHUzMgAA2QwMLHBhbGxldF9uZnRzFHR5cGVzIEJpdEZsYWdzBARUAd0MAAQADAE4Q29sbGVjdGlvblJvbGUAAN0MDCxwYWxsZXRfbmZ0cxR0eXBlczhDb2xsZWN0aW9uUm9sZQABDBhJc3N1ZXIAAQAcRnJlZXplcgACABRBZG1pbgAEAADhDAwscGFsbGV0X25mdHMUdHlwZXMsSXRlbURldGFpbHMMJEFjY291bnRJZAEEHERlcG9zaXQB5QwkQXBwcm92YWxzAekMAAwBFG93bmVyBAEkQWNjb3VudElkAAEkYXBwcm92YWxz6QwBJEFwcHJvdmFscwABHGRlcG9zaXTlDAEcRGVwb3NpdAAA5QwMLHBhbGxldF9uZnRzFHR5cGVzLEl0ZW1EZXBvc2l0CDhEZXBvc2l0QmFsYW5jZQFVASRBY2NvdW50SWQBBAAIARxhY2NvdW50BAEkQWNjb3VudElkAAEYYW1vdW50VQEBOERlcG9zaXRCYWxhbmNlAADpDAxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX21hcDxCb3VuZGVkQlRyZWVNYXAMBEsBBARWAeAEUwAABADtDAE4QlRyZWVNYXA8SywgVj4AAO0MBCBCVHJlZU1hcAgESwEEBFYB4AAEAPEMAAAA8QwAAAL1DAD1DAAABAgE4AD5DAwscGFsbGV0X25mdHMUdHlwZXNIQ29sbGVjdGlvbk1ldGFkYXRhCBxEZXBvc2l0AVUBLFN0cmluZ0xpbWl0AAAIARxkZXBvc2l0VQEBHERlcG9zaXQAARBkYXRhQQEBbEJvdW5kZWRWZWM8dTgsIFN0cmluZ0xpbWl0PgAA/QwMLHBhbGxldF9uZnRzFHR5cGVzMEl0ZW1NZXRhZGF0YQgcRGVwb3NpdAEBDSxTdHJpbmdMaW1pdAAACAEcZGVwb3NpdAENARxEZXBvc2l0AAEQZGF0YUEBAWxCb3VuZGVkVmVjPHU4LCBTdHJpbmdMaW1pdD4AAAENDCxwYWxsZXRfbmZ0cxR0eXBlc0xJdGVtTWV0YWRhdGFEZXBvc2l0CDhEZXBvc2l0QmFsYW5jZQFVASRBY2NvdW50SWQBBAAIARxhY2NvdW50jQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEYYW1vdW50VQEBOERlcG9zaXRCYWxhbmNlAAAFDQAABBA44H0EeAAJDQAABAhBAQ0NAA0NDCxwYWxsZXRfbmZ0cxR0eXBlc0BBdHRyaWJ1dGVEZXBvc2l0CDhEZXBvc2l0QmFsYW5jZQFVASRBY2NvdW50SWQBBAAIARxhY2NvdW50jQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEYYW1vdW50VQEBOERlcG9zaXRCYWxhbmNlAAARDQxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX3NldDxCb3VuZGVkQlRyZWVTZXQIBFQBBARTAAAEABUNASxCVHJlZVNldDxUPgAAFQ0EIEJUcmVlU2V0BARUAQQABABdAQAAABkNDCxwYWxsZXRfbmZ0cxR0eXBlcyxQZW5kaW5nU3dhcBAwQ29sbGVjdGlvbklkATgYSXRlbUlkAThYSXRlbVByaWNlV2l0aERpcmVjdGlvbgGVBCBEZWFkbGluZQE4ABABSGRlc2lyZWRfY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABMGRlc2lyZWRfaXRlbeABOE9wdGlvbjxJdGVtSWQ+AAEUcHJpY2WRBAF4T3B0aW9uPEl0ZW1QcmljZVdpdGhEaXJlY3Rpb24+AAEgZGVhZGxpbmU4ASBEZWFkbGluZQAAHQ0MLHBhbGxldF9uZnRzFHR5cGVzIEJpdEZsYWdzBARUASENAAQAKAE0UGFsbGV0RmVhdHVyZQAAIQ0MLHBhbGxldF9uZnRzFHR5cGVzNFBhbGxldEZlYXR1cmUAARAcVHJhZGluZwABAChBdHRyaWJ1dGVzAAIAJEFwcHJvdmFscwAEABRTd2FwcwAIAAAlDQwscGFsbGV0X25mdHMYcGFsbGV0FEVycm9yCARUAARJAAG0ME5vUGVybWlzc2lvbgAABOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uRFVua25vd25Db2xsZWN0aW9uAAEEdFRoZSBnaXZlbiBpdGVtIElEIGlzIHVua25vd24uNEFscmVhZHlFeGlzdHMAAgS4VGhlIGl0ZW0gSUQgaGFzIGFscmVhZHkgYmVlbiB1c2VkIGZvciBhbiBpdGVtLjxBcHByb3ZhbEV4cGlyZWQAAwQ5AVRoZSBhcHByb3ZhbCBoYWQgYSBkZWFkbGluZSB0aGF0IGV4cGlyZWQsIHNvIHRoZSBhcHByb3ZhbCBpc24ndCB2YWxpZCBhbnltb3JlLihXcm9uZ093bmVyAAQE6FRoZSBvd25lciB0dXJuZWQgb3V0IHRvIGJlIGRpZmZlcmVudCB0byB3aGF0IHdhcyBleHBlY3RlZC4oQmFkV2l0bmVzcwAFBBUBVGhlIHdpdG5lc3MgZGF0YSBnaXZlbiBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgY2hhaW4uRENvbGxlY3Rpb25JZEluVXNlAAYEfENvbGxlY3Rpb24gSUQgaXMgYWxyZWFkeSB0YWtlbi5QSXRlbXNOb25UcmFuc2ZlcmFibGUABwTISXRlbXMgd2l0aGluIHRoYXQgY29sbGVjdGlvbiBhcmUgbm9uLXRyYW5zZmVyYWJsZS4sTm90RGVsZWdhdGUACAScVGhlIHByb3ZpZGVkIGFjY291bnQgaXMgbm90IGEgZGVsZWdhdGUuNFdyb25nRGVsZWdhdGUACQT0VGhlIGRlbGVnYXRlIHR1cm5lZCBvdXQgdG8gYmUgZGlmZmVyZW50IHRvIHdoYXQgd2FzIGV4cGVjdGVkLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4oVW5hY2NlcHRlZAALBBkBVGhlIG5hbWVkIG93bmVyIGhhcyBub3Qgc2lnbmVkIG93bmVyc2hpcCBhY2NlcHRhbmNlIG9mIHRoZSBjb2xsZWN0aW9uLihJdGVtTG9ja2VkAAwEmFRoZSBpdGVtIGlzIGxvY2tlZCAobm9uLXRyYW5zZmVyYWJsZSkuUExvY2tlZEl0ZW1BdHRyaWJ1dGVzAA0EdEl0ZW0ncyBhdHRyaWJ1dGVzIGFyZSBsb2NrZWQuaExvY2tlZENvbGxlY3Rpb25BdHRyaWJ1dGVzAA4EjENvbGxlY3Rpb24ncyBhdHRyaWJ1dGVzIGFyZSBsb2NrZWQuSExvY2tlZEl0ZW1NZXRhZGF0YQAPBGhJdGVtJ3MgbWV0YWRhdGEgaXMgbG9ja2VkLmBMb2NrZWRDb2xsZWN0aW9uTWV0YWRhdGEAEASAQ29sbGVjdGlvbidzIG1ldGFkYXRhIGlzIGxvY2tlZC5ATWF4U3VwcGx5UmVhY2hlZAARBGxBbGwgaXRlbXMgaGF2ZSBiZWVuIG1pbnRlZC48TWF4U3VwcGx5TG9ja2VkABIEuFRoZSBtYXggc3VwcGx5IGlzIGxvY2tlZCBhbmQgY2FuJ3QgYmUgY2hhbmdlZC5ETWF4U3VwcGx5VG9vU21hbGwAEwRJAVRoZSBwcm92aWRlZCBtYXggc3VwcGx5IGlzIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBhbHJlYWR5IGhhcy4sVW5rbm93bkl0ZW0AFAR0VGhlIGdpdmVuIGl0ZW0gSUQgaXMgdW5rbm93bi4sVW5rbm93blN3YXAAFQRMU3dhcCBkb2Vzbid0IGV4aXN0LkBNZXRhZGF0YU5vdEZvdW5kABYEjFRoZSBnaXZlbiBpdGVtIGhhcyBubyBtZXRhZGF0YSBzZXQuREF0dHJpYnV0ZU5vdEZvdW5kABcEmFRoZSBwcm92aWRlZCBhdHRyaWJ1dGUgY2FuJ3QgYmUgZm91bmQuKE5vdEZvclNhbGUAGARUSXRlbSBpcyBub3QgZm9yIHNhbGUuJEJpZFRvb0xvdwAZBHBUaGUgcHJvdmlkZWQgYmlkIGlzIHRvbyBsb3cuUFJlYWNoZWRBcHByb3ZhbExpbWl0ABoEoFRoZSBpdGVtIGhhcyByZWFjaGVkIGl0cyBhcHByb3ZhbCBsaW1pdC48RGVhZGxpbmVFeHBpcmVkABsEhFRoZSBkZWFkbGluZSBoYXMgYWxyZWFkeSBleHBpcmVkLjRXcm9uZ0R1cmF0aW9uABwEMQFUaGUgZHVyYXRpb24gcHJvdmlkZWQgc2hvdWxkIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTWF4RGVhZGxpbmVEdXJhdGlvbmAuOE1ldGhvZERpc2FibGVkAB0EqFRoZSBtZXRob2QgaXMgZGlzYWJsZWQgYnkgc3lzdGVtIHNldHRpbmdzLjBXcm9uZ1NldHRpbmcAHgSIVGhlIHByb3ZpZGVkIHNldHRpbmcgY2FuJ3QgYmUgc2V0LlhJbmNvbnNpc3RlbnRJdGVtQ29uZmlnAB8EFQFJdGVtJ3MgY29uZmlnIGFscmVhZHkgZXhpc3RzIGFuZCBzaG91bGQgYmUgZXF1YWwgdG8gdGhlIHByb3ZpZGVkIG9uZS4gTm9Db25maWcAIATIQ29uZmlnIGZvciBhIGNvbGxlY3Rpb24gb3IgYW4gaXRlbSBjYW4ndCBiZSBmb3VuZC48Um9sZXNOb3RDbGVhcmVkACEEcFNvbWUgcm9sZXMgd2VyZSBub3QgY2xlYXJlZC44TWludE5vdFN0YXJ0ZWQAIgRkTWludCBoYXMgbm90IHN0YXJ0ZWQgeWV0LiRNaW50RW5kZWQAIwRcTWludCBoYXMgYWxyZWFkeSBlbmRlZC44QWxyZWFkeUNsYWltZWQAJATAVGhlIHByb3ZpZGVkIEl0ZW0gd2FzIGFscmVhZHkgdXNlZCBmb3IgY2xhaW1pbmcuNEluY29ycmVjdERhdGEAJQR8VGhlIHByb3ZpZGVkIGRhdGEgaXMgaW5jb3JyZWN0LixXcm9uZ09yaWdpbgAmBKxUaGUgZXh0cmluc2ljIHdhcyBzZW50IGJ5IHRoZSB3cm9uZyBvcmlnaW4uOFdyb25nU2lnbmF0dXJlACcEkFRoZSBwcm92aWRlZCBzaWduYXR1cmUgaXMgaW5jb3JyZWN0LkRJbmNvcnJlY3RNZXRhZGF0YQAoBKBUaGUgcHJvdmlkZWQgbWV0YWRhdGEgbWlnaHQgYmUgdG9vIGxvbmcuZE1heEF0dHJpYnV0ZXNMaW1pdFJlYWNoZWQAKQScQ2FuJ3Qgc2V0IG1vcmUgYXR0cmlidXRlcyBwZXIgb25lIGNhbGwuOFdyb25nTmFtZXNwYWNlACoE0FRoZSBwcm92aWRlZCBuYW1lc3BhY2UgaXNuJ3Qgc3VwcG9ydGVkIGluIHRoaXMgY2FsbC5IQ29sbGVjdGlvbk5vdEVtcHR5ACsEjENhbid0IGRlbGV0ZSBub24tZW1wdHkgY29sbGVjdGlvbnMuPFdpdG5lc3NSZXF1aXJlZAAsBJBUaGUgd2l0bmVzcyBkYXRhIHNob3VsZCBiZSBwcm92aWRlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuKQ0AAAQI/QEEAC0NAAAEDP0BBAQAMQ0MNHBhbGxldF9hc3NldHMUdHlwZXM0QXNzZXRNZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBVQE0Qm91bmRlZFN0cmluZwE1DQAUARxkZXBvc2l0VQEBOERlcG9zaXRCYWxhbmNlAAEQbmFtZTUNATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9sNQ0BNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVuWQEBEGJvb2wAADUNDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAOQ0MNHBhbGxldF9hc3NldHMYcGFsbGV0FEVycm9yCARUAARJAAFgKEJhbGFuY2VMb3cAAAQVAUFjY291bnQgYmFsYW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdHJhbnNmZXIgYW1vdW50LiROb0FjY291bnQAAQSQVGhlIGFjY291bnQgdG8gYWx0ZXIgZG9lcyBub3QgZXhpc3QuME5vUGVybWlzc2lvbgACBOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uHFVua25vd24AAwR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uGEZyb3plbgAEBHRUaGUgb3JpZ2luIGFjY291bnQgaXMgZnJvemVuLhRJblVzZQAFBHhUaGUgYXNzZXQgSUQgaXMgYWxyZWFkeSB0YWtlbi4oQmFkV2l0bmVzcwAGBGxJbnZhbGlkIHdpdG5lc3MgZGF0YSBnaXZlbi44TWluQmFsYW5jZVplcm8ABwSMTWluaW11bSBiYWxhbmNlIHNob3VsZCBiZSBub24temVyby5MVW5hdmFpbGFibGVDb25zdW1lcgAIDFkBVW5hYmxlIHRvIGluY3JlbWVudCB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIGNvdW50ZXJzIG9uIHRoZSBhY2NvdW50LiBFaXRoZXIgbm8gcHJvdmlkZXJNAXJlZmVyZW5jZSBleGlzdHMgdG8gYWxsb3cgYSBub24temVybyBiYWxhbmNlIG9mIGEgbm9uLXNlbGYtc3VmZmljaWVudCBhc3NldCwgb3Igb25l8GZld2VyIHRoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBoYXMgYmVlbiByZWFjaGVkLixCYWRNZXRhZGF0YQAJBFxJbnZhbGlkIG1ldGFkYXRhIGdpdmVuLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4gV291bGREaWUACwQ1AVRoZSBzb3VyY2UgYWNjb3VudCB3b3VsZCBub3Qgc3Vydml2ZSB0aGUgdHJhbnNmZXIgYW5kIGl0IG5lZWRzIHRvIHN0YXkgYWxpdmUuNEFscmVhZHlFeGlzdHMADASEVGhlIGFzc2V0LWFjY291bnQgYWxyZWFkeSBleGlzdHMuJE5vRGVwb3NpdAANBNRUaGUgYXNzZXQtYWNjb3VudCBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBkZXBvc2l0LiRXb3VsZEJ1cm4ADgTEVGhlIG9wZXJhdGlvbiB3b3VsZCByZXN1bHQgaW4gZnVuZHMgYmVpbmcgYnVybmVkLiRMaXZlQXNzZXQADwhZAVRoZSBhc3NldCBpcyBhIGxpdmUgYXNzZXQgYW5kIGlzIGFjdGl2ZWx5IGJlaW5nIHVzZWQuIFVzdWFsbHkgZW1pdCBmb3Igb3BlcmF0aW9ucyBzdWNoHQFhcyBgc3RhcnRfZGVzdHJveWAgd2hpY2ggcmVxdWlyZSB0aGUgYXNzZXQgdG8gYmUgaW4gYSBkZXN0cm95aW5nIHN0YXRlLjBBc3NldE5vdExpdmUAEATIVGhlIGFzc2V0IGlzIG5vdCBsaXZlLCBhbmQgbGlrZWx5IGJlaW5nIGRlc3Ryb3llZC48SW5jb3JyZWN0U3RhdHVzABEEsFRoZSBhc3NldCBzdGF0dXMgaXMgbm90IHRoZSBleHBlY3RlZCBzdGF0dXMuJE5vdEZyb3plbgASBNhUaGUgYXNzZXQgc2hvdWxkIGJlIGZyb3plbiBiZWZvcmUgdGhlIGdpdmVuIG9wZXJhdGlvbi44Q2FsbGJhY2tGYWlsZWQAEwSEQ2FsbGJhY2sgYWN0aW9uIHJlc3VsdGVkIGluIGVycm9yKEJhZEFzc2V0SWQAFATIVGhlIGFzc2V0IElEIG11c3QgYmUgZXF1YWwgdG8gdGhlIFtgTmV4dEFzc2V0SWRgXS48Q29udGFpbnNGcmVlemVzABUETQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBmcmVlemVzLjRDb250YWluc0hvbGRzABYERQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBob2xkcy48VG9vTWFueVJlc2VydmVzABcEgFRyaWVkIHNldHRpbmcgdG9vIG1hbnkgcmVzZXJ2ZXMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lj0NBBhPcHRpb24EBFQBMQ0BCBBOb25lAAAAEFNvbWUEADENAAABAABBDQw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBc3NldE1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQFVATRCb3VuZGVkU3RyaW5nAUUNABQBHGRlcG9zaXRVAQE4RGVwb3NpdEJhbGFuY2UAARBuYW1lRQ0BNEJvdW5kZWRTdHJpbmcAARhzeW1ib2xFDQE0Qm91bmRlZFN0cmluZwABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5ZAQEQYm9vbAAARQ0MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABJDQw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXJyb3IIBFQABEkAAWAoQmFsYW5jZUxvdwAABBUBQWNjb3VudCBiYWxhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0cmFuc2ZlciBhbW91bnQuJE5vQWNjb3VudAABBJBUaGUgYWNjb3VudCB0byBhbHRlciBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4cVW5rbm93bgADBHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi4YRnJvemVuAAQEdFRoZSBvcmlnaW4gYWNjb3VudCBpcyBmcm96ZW4uFEluVXNlAAUEeFRoZSBhc3NldCBJRCBpcyBhbHJlYWR5IHRha2VuLihCYWRXaXRuZXNzAAYEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLjhNaW5CYWxhbmNlWmVybwAHBIxNaW5pbXVtIGJhbGFuY2Ugc2hvdWxkIGJlIG5vbi16ZXJvLkxVbmF2YWlsYWJsZUNvbnN1bWVyAAgMWQFVbmFibGUgdG8gaW5jcmVtZW50IHRoZSBjb25zdW1lciByZWZlcmVuY2UgY291bnRlcnMgb24gdGhlIGFjY291bnQuIEVpdGhlciBubyBwcm92aWRlck0BcmVmZXJlbmNlIGV4aXN0cyB0byBhbGxvdyBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgYSBub24tc2VsZi1zdWZmaWNpZW50IGFzc2V0LCBvciBvbmXwZmV3ZXIgdGhlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGhhcyBiZWVuIHJlYWNoZWQuLEJhZE1ldGFkYXRhAAkEXEludmFsaWQgbWV0YWRhdGEgZ2l2ZW4uKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLiBXb3VsZERpZQALBDUBVGhlIHNvdXJjZSBhY2NvdW50IHdvdWxkIG5vdCBzdXJ2aXZlIHRoZSB0cmFuc2ZlciBhbmQgaXQgbmVlZHMgdG8gc3RheSBhbGl2ZS40QWxyZWFkeUV4aXN0cwAMBIRUaGUgYXNzZXQtYWNjb3VudCBhbHJlYWR5IGV4aXN0cy4kTm9EZXBvc2l0AA0E1FRoZSBhc3NldC1hY2NvdW50IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRlcG9zaXQuJFdvdWxkQnVybgAOBMRUaGUgb3BlcmF0aW9uIHdvdWxkIHJlc3VsdCBpbiBmdW5kcyBiZWluZyBidXJuZWQuJExpdmVBc3NldAAPCFkBVGhlIGFzc2V0IGlzIGEgbGl2ZSBhc3NldCBhbmQgaXMgYWN0aXZlbHkgYmVpbmcgdXNlZC4gVXN1YWxseSBlbWl0IGZvciBvcGVyYXRpb25zIHN1Y2gdAWFzIGBzdGFydF9kZXN0cm95YCB3aGljaCByZXF1aXJlIHRoZSBhc3NldCB0byBiZSBpbiBhIGRlc3Ryb3lpbmcgc3RhdGUuMEFzc2V0Tm90TGl2ZQAQBMhUaGUgYXNzZXQgaXMgbm90IGxpdmUsIGFuZCBsaWtlbHkgYmVpbmcgZGVzdHJveWVkLjxJbmNvcnJlY3RTdGF0dXMAEQSwVGhlIGFzc2V0IHN0YXR1cyBpcyBub3QgdGhlIGV4cGVjdGVkIHN0YXR1cy4kTm90RnJvemVuABIE2FRoZSBhc3NldCBzaG91bGQgYmUgZnJvemVuIGJlZm9yZSB0aGUgZ2l2ZW4gb3BlcmF0aW9uLjhDYWxsYmFja0ZhaWxlZAATBIRDYWxsYmFjayBhY3Rpb24gcmVzdWx0ZWQgaW4gZXJyb3IoQmFkQXNzZXRJZAAUBMhUaGUgYXNzZXQgSUQgbXVzdCBiZSBlcXVhbCB0byB0aGUgW2BOZXh0QXNzZXRJZGBdLjxDb250YWluc0ZyZWV6ZXMAFQRNAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGZyZWV6ZXMuNENvbnRhaW5zSG9sZHMAFgRFAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGhvbGRzLjxUb29NYW55UmVzZXJ2ZXMAFwSAVHJpZWQgc2V0dGluZyB0b28gbWFueSByZXNlcnZlcy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuTQ0EGE9wdGlvbgQEVAFBDQEIEE5vbmUAAAAQU29tZQQAQQ0AAAEAAFENDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhR0eXBlcyBQb29sSW5mbwQsUG9vbEFzc2V0SWQBOAAEASBscF90b2tlbjgBLFBvb2xBc3NldElkAABVDQxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24YcGFsbGV0FEVycm9yBARUAAFgQEludmFsaWRBc3NldFBhaXIAAAS4UHJvdmlkZWQgYXNzZXQgcGFpciBpcyBub3Qgc3VwcG9ydGVkIGZvciBwb29sLihQb29sRXhpc3RzAAEEUFBvb2wgYWxyZWFkeSBleGlzdHMuSFdyb25nRGVzaXJlZEFtb3VudAACBHREZXNpcmVkIGFtb3VudCBjYW4ndCBiZSB6ZXJvLmBBbW91bnRPbmVMZXNzVGhhbk1pbmltYWwAAwhJAVByb3ZpZGVkIGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0L2Fzc2V0J3M8bWluaW1hbCBhbW91bnQuYEFtb3VudFR3b0xlc3NUaGFuTWluaW1hbAAECEkBUHJvdmlkZWQgYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQvYXNzZXQnczxtaW5pbWFsIGFtb3VudC5oUmVzZXJ2ZUxlZnRMZXNzVGhhbk1pbmltYWwABQhNAVJlc2VydmUgbmVlZHMgdG8gYWx3YXlzIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdC9hc3NldCdzPG1pbmltYWwgYW1vdW50LkBBbW91bnRPdXRUb29IaWdoAAYEyERlc2lyZWQgYW1vdW50IGNhbid0IGJlIGVxdWFsIHRvIHRoZSBwb29sIHJlc2VydmUuMFBvb2xOb3RGb3VuZAAHBFxUaGUgcG9vbCBkb2Vzbid0IGV4aXN0LiBPdmVyZmxvdwAIBFRBbiBvdmVyZmxvdyBoYXBwZW5lZC6AQXNzZXRPbmVEZXBvc2l0RGlkTm90TWVldE1pbmltdW0ACQQpAVRoZSBtaW5pbWFsIGFtb3VudCByZXF1aXJlbWVudCBmb3IgdGhlIGZpcnN0IHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQugEFzc2V0VHdvRGVwb3NpdERpZE5vdE1lZXRNaW5pbXVtAAoELQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBzZWNvbmQgdG9rZW4gaW4gdGhlIHBhaXIgd2Fzbid0IG1ldC6MQXNzZXRPbmVXaXRoZHJhd2FsRGlkTm90TWVldE1pbmltdW0ACwQpAVRoZSBtaW5pbWFsIGFtb3VudCByZXF1aXJlbWVudCBmb3IgdGhlIGZpcnN0IHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQujEFzc2V0VHdvV2l0aGRyYXdhbERpZE5vdE1lZXRNaW5pbXVtAAwELQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBzZWNvbmQgdG9rZW4gaW4gdGhlIHBhaXIgd2Fzbid0IG1ldC5wT3B0aW1hbEFtb3VudExlc3NUaGFuRGVzaXJlZAANBLxPcHRpbWFsIGNhbGN1bGF0ZWQgYW1vdW50IGlzIGxlc3MgdGhhbiBkZXNpcmVkLmxJbnN1ZmZpY2llbnRMaXF1aWRpdHlNaW50ZWQADgR4SW5zdWZmaWNpZW50IGxpcXVpZGl0eSBtaW50ZWQuNFplcm9MaXF1aWRpdHkADwSIUmVxdWVzdGVkIGxpcXVpZGl0eSBjYW4ndCBiZSB6ZXJvLihaZXJvQW1vdW50ABAEVEFtb3VudCBjYW4ndCBiZSB6ZXJvLoxQcm92aWRlZE1pbmltdW1Ob3RTdWZmaWNpZW50Rm9yU3dhcAARBOxDYWxjdWxhdGVkIGFtb3VudCBvdXQgaXMgbGVzcyB0aGFuIHByb3ZpZGVkIG1pbmltdW0gYW1vdW50LoxQcm92aWRlZE1heGltdW1Ob3RTdWZmaWNpZW50Rm9yU3dhcAASBMxQcm92aWRlZCBtYXhpbXVtIGFtb3VudCBpcyBub3Qgc3VmZmljaWVudCBmb3Igc3dhcC4sSW52YWxpZFBhdGgAEwTUVGhlIHByb3ZpZGVkIHBhdGggbXVzdCBjb25zaXN0cyBvZiAyIGFzc2V0cyBhdCBsZWFzdC40Tm9uVW5pcXVlUGF0aAAUBMRUaGUgcHJvdmlkZWQgcGF0aCBtdXN0IGNvbnNpc3RzIG9mIHVuaXF1ZSBhc3NldHMuUEluY29ycmVjdFBvb2xBc3NldElkABUE7El0IHdhcyBub3QgcG9zc2libGUgdG8gZ2V0IG9yIGluY3JlbWVudCB0aGUgSWQgb2YgdGhlIHBvb2wuMEJlbG93TWluaW11bQAWBPBUaGUgZGVzdGluYXRpb24gYWNjb3VudCBjYW5ub3QgZXhpc3Qgd2l0aCB0aGUgc3dhcHBlZCBmdW5kcy4kUG9vbEVtcHR5ABcEMQFUaGUgcG9vbCBleGlzdHMgYnV0IGhhcyBubyBsaXF1aWRpdHkgKGF0IGxlYXN0IG9uZSBvZiB0aGUgcmVzZXJ2ZXMgaXMgemVybykuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LlkNBBhSZXN1bHQIBFQBXQ0ERQFVDQEICE9rBABdDQAAAAAMRXJyBABVDQAAAQAAXQ0AAAQIVQFVAQBhDQxUcGFsbGV0X2Fzc2V0c19mcmVlemVyGHBhbGxldBRFcnJvcggEVAAESQABBDhUb29NYW55RnJlZXplcwAABOhOdW1iZXIgb2YgZnJlZXplcyBvbiBhbiBhY2NvdW50IHdvdWxkIGV4Y2VlZCBgTWF4RnJlZXplc2AuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmUNDFBwYWxsZXRfYXNzZXRzX2hvbGRlchhwYWxsZXQURXJyb3IIBFQABEkAAQQwVG9vTWFueUhvbGRzAAAEMQFOdW1iZXIgb2YgaG9sZHMgb24gYW4gYWNjb3VudCB3b3VsZCBleGNlZWQgdGhlIGNvdW50IG9mIGBSdW50aW1lSG9sZFJlYXNvbmAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmkNCDxwYWxsZXRfdHJlYXN1cnkgUHJvcG9zYWwIJEFjY291bnRJZAEEHEJhbGFuY2UBVQEAEAEgcHJvcG9zZXIEASRBY2NvdW50SWQAARR2YWx1ZVUBARxCYWxhbmNlAAEsYmVuZWZpY2lhcnkEASRBY2NvdW50SWQAARBib25kVQEBHEJhbGFuY2UAAG0NDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAEEEARhWZWM8VD4AAHENCDxwYWxsZXRfdHJlYXN1cnksU3BlbmRTdGF0dXMUJEFzc2V0S2luZAHNBDBBc3NldEJhbGFuY2UBVQEsQmVuZWZpY2lhcnkB0QQsQmxvY2tOdW1iZXIBOCRQYXltZW50SWQBKAAYAShhc3NldF9raW5kzQQBJEFzc2V0S2luZAABGGFtb3VudFUBATBBc3NldEJhbGFuY2UAASxiZW5lZmljaWFyedEEASxCZW5lZmljaWFyeQABKHZhbGlkX2Zyb204ASxCbG9ja051bWJlcgABJGV4cGlyZV9hdDgBLEJsb2NrTnVtYmVyAAEYc3RhdHVzdQ0BXFBheW1lbnRTdGF0ZTxQYXltZW50SWQ+AAB1DQg8cGFsbGV0X3RyZWFzdXJ5MFBheW1lbnRTdGF0ZQQISWQBKAEMHFBlbmRpbmcAAAAkQXR0ZW1wdGVkBAEIaWQoAQhJZAABABhGYWlsZWQAAgAAeQ0MPHBhbGxldF90cmVhc3VyeRhwYWxsZXQURXJyb3IIBFQABEkAASwwSW52YWxpZEluZGV4AAAErE5vIHByb3Bvc2FsLCBib3VudHkgb3Igc3BlbmQgYXQgdGhhdCBpbmRleC5AVG9vTWFueUFwcHJvdmFscwABBIBUb28gbWFueSBhcHByb3ZhbHMgaW4gdGhlIHF1ZXVlLlhJbnN1ZmZpY2llbnRQZXJtaXNzaW9uAAIIRQFUaGUgc3BlbmQgb3JpZ2luIGlzIHZhbGlkIGJ1dCB0aGUgYW1vdW50IGl0IGlzIGFsbG93ZWQgdG8gc3BlbmQgaXMgbG93ZXIgdGhhbiB0aGVMYW1vdW50IHRvIGJlIHNwZW50LkxQcm9wb3NhbE5vdEFwcHJvdmVkAAMEfFByb3Bvc2FsIGhhcyBub3QgYmVlbiBhcHByb3ZlZC5YRmFpbGVkVG9Db252ZXJ0QmFsYW5jZQAEBFEBVGhlIGJhbGFuY2Ugb2YgdGhlIGFzc2V0IGtpbmQgaXMgbm90IGNvbnZlcnRpYmxlIHRvIHRoZSBiYWxhbmNlIG9mIHRoZSBuYXRpdmUgYXNzZXQuMFNwZW5kRXhwaXJlZAAFBLBUaGUgc3BlbmQgaGFzIGV4cGlyZWQgYW5kIGNhbm5vdCBiZSBjbGFpbWVkLixFYXJseVBheW91dAAGBKRUaGUgc3BlbmQgaXMgbm90IHlldCBlbGlnaWJsZSBmb3IgcGF5b3V0LkBBbHJlYWR5QXR0ZW1wdGVkAAcEnFRoZSBwYXltZW50IGhhcyBhbHJlYWR5IGJlZW4gYXR0ZW1wdGVkLixQYXlvdXRFcnJvcgAIBMxUaGVyZSB3YXMgc29tZSBpc3N1ZSB3aXRoIHRoZSBtZWNoYW5pc20gb2YgcGF5bWVudC4wTm90QXR0ZW1wdGVkAAkEpFRoZSBwYXlvdXQgd2FzIG5vdCB5ZXQgYXR0ZW1wdGVkL2NsYWltZWQuMEluY29uY2x1c2l2ZQAKBMRUaGUgcGF5bWVudCBoYXMgbmVpdGhlciBmYWlsZWQgbm9yIHN1Y2NlZWRlZCB5ZXQuBHhFcnJvciBmb3IgdGhlIHRyZWFzdXJ5IHBhbGxldC59DQAABAgE0QMAgQ0MYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlGFZvdGluZxQcQmFsYW5jZQFVASRBY2NvdW50SWQBBCxCbG9ja051bWJlcgE4JFBvbGxJbmRleAE4IE1heFZvdGVzAAEIHENhc3RpbmcEAIUNAchDYXN0aW5nPEJhbGFuY2UsIEJsb2NrTnVtYmVyLCBQb2xsSW5kZXgsIE1heFZvdGVzPgAAAChEZWxlZ2F0aW5nBACdDQGsRGVsZWdhdGluZzxCYWxhbmNlLCBBY2NvdW50SWQsIEJsb2NrTnVtYmVyPgABAACFDQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUcQ2FzdGluZxAcQmFsYW5jZQFVASxCbG9ja051bWJlcgE4JFBvbGxJbmRleAE4IE1heFZvdGVzAAAMARR2b3Rlc4kNAdxCb3VuZGVkVmVjPChQb2xsSW5kZXgsIEFjY291bnRWb3RlPEJhbGFuY2U+KSwgTWF4Vm90ZXM+AAEsZGVsZWdhdGlvbnOVDQFQRGVsZWdhdGlvbnM8QmFsYW5jZT4AARRwcmlvcpkNAXxQcmlvckxvY2s8QmxvY2tOdW1iZXIsIEJhbGFuY2U+AACJDQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAY0NBFMAAAQAkQ0BGFZlYzxUPgAAjQ0AAAQIONkEAJENAAACjQ0AlQ0MYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxR0eXBlcyxEZWxlZ2F0aW9ucwQcQmFsYW5jZQFVAQAIARR2b3Rlc1UBARxCYWxhbmNlAAEcY2FwaXRhbFUBARxCYWxhbmNlAACZDQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUkUHJpb3JMb2NrCCxCbG9ja051bWJlcgE4HEJhbGFuY2UBVQEACAA4ASxCbG9ja051bWJlcgAAVQEBHEJhbGFuY2UAAJ0NDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZShEZWxlZ2F0aW5nDBxCYWxhbmNlAVUBJEFjY291bnRJZAEELEJsb2NrTnVtYmVyATgAFAEcYmFsYW5jZVUBARxCYWxhbmNlAAEYdGFyZ2V0BAEkQWNjb3VudElkAAEoY29udmljdGlvbuEEAShDb252aWN0aW9uAAEsZGVsZWdhdGlvbnOVDQFQRGVsZWdhdGlvbnM8QmFsYW5jZT4AARRwcmlvcpkNAXxQcmlvckxvY2s8QmxvY2tOdW1iZXIsIEJhbGFuY2U+AAChDQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAaUNBFMAAAQAqQ0BGFZlYzxUPgAApQ0AAAQI0QNVAQCpDQAAAqUNAK0NDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcYcGFsbGV0FEVycm9yCARUAARJAAEwKE5vdE9uZ29pbmcAAARQUG9sbCBpcyBub3Qgb25nb2luZy4gTm90Vm90ZXIAAQSsVGhlIGdpdmVuIGFjY291bnQgZGlkIG5vdCB2b3RlIG9uIHRoZSBwb2xsLjBOb1Blcm1pc3Npb24AAgTIVGhlIGFjdG9yIGhhcyBubyBwZXJtaXNzaW9uIHRvIGNvbmR1Y3QgdGhlIGFjdGlvbi48Tm9QZXJtaXNzaW9uWWV0AAMEWQFUaGUgYWN0b3IgaGFzIG5vIHBlcm1pc3Npb24gdG8gY29uZHVjdCB0aGUgYWN0aW9uIHJpZ2h0IG5vdyBidXQgd2lsbCBkbyBpbiB0aGUgZnV0dXJlLkRBbHJlYWR5RGVsZWdhdGluZwAEBIhUaGUgYWNjb3VudCBpcyBhbHJlYWR5IGRlbGVnYXRpbmcuNEFscmVhZHlWb3RpbmcABQhVAVRoZSBhY2NvdW50IGN1cnJlbnRseSBoYXMgdm90ZXMgYXR0YWNoZWQgdG8gaXQgYW5kIHRoZSBvcGVyYXRpb24gY2Fubm90IHN1Y2NlZWQgdW50aWygdGhlc2UgYXJlIHJlbW92ZWQgdGhyb3VnaCBgcmVtb3ZlX3ZvdGVgLkRJbnN1ZmZpY2llbnRGdW5kcwAGBPxUb28gaGlnaCBhIGJhbGFuY2Ugd2FzIHByb3ZpZGVkIHRoYXQgdGhlIGFjY291bnQgY2Fubm90IGFmZm9yZC40Tm90RGVsZWdhdGluZwAHBKBUaGUgYWNjb3VudCBpcyBub3QgY3VycmVudGx5IGRlbGVnYXRpbmcuIE5vbnNlbnNlAAgElERlbGVnYXRpb24gdG8gb25lc2VsZiBtYWtlcyBubyBzZW5zZS48TWF4Vm90ZXNSZWFjaGVkAAkEgE1heGltdW0gbnVtYmVyIG9mIHZvdGVzIHJlYWNoZWQuLENsYXNzTmVlZGVkAAoEOQFUaGUgY2xhc3MgbXVzdCBiZSBzdXBwbGllZCBzaW5jZSBpdCBpcyBub3QgZWFzaWx5IGRldGVybWluYWJsZSBmcm9tIHRoZSBzdGF0ZS4gQmFkQ2xhc3MACwSEVGhlIGNsYXNzIElEIHN1cHBsaWVkIGlzIGludmFsaWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LrENDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzOFJlZmVyZW5kdW1JbmZvIBxUcmFja0lkAdEDNFJ1bnRpbWVPcmlnaW4B1QMYTW9tZW50ATgQQ2FsbAHtBBxCYWxhbmNlAVUBFFRhbGx5ARkJJEFjY291bnRJZAEEPFNjaGVkdWxlQWRkcmVzcwHMARgcT25nb2luZwQAtQ0BjQFSZWZlcmVuZHVtU3RhdHVzPFRyYWNrSWQsIFJ1bnRpbWVPcmlnaW4sIE1vbWVudCwgQ2FsbCwgQmFsYW5jZSwgVGFsbHksCkFjY291bnRJZCwgU2NoZWR1bGVBZGRyZXNzLD4AAAAgQXBwcm92ZWQMADgBGE1vbWVudAAAvQ0BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAC9DQGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAQAgUmVqZWN0ZWQMADgBGE1vbWVudAAAvQ0BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAC9DQGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAgAkQ2FuY2VsbGVkDAA4ARhNb21lbnQAAL0NAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAAvQ0BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAMAIFRpbWVkT3V0DAA4ARhNb21lbnQAAL0NAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAAvQ0BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAQAGEtpbGxlZAQAOAEYTW9tZW50AAUAALUNDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzQFJlZmVyZW5kdW1TdGF0dXMgHFRyYWNrSWQB0QM0UnVudGltZU9yaWdpbgHVAxhNb21lbnQBOBBDYWxsAe0EHEJhbGFuY2UBVQEUVGFsbHkBGQkkQWNjb3VudElkAQQ8U2NoZWR1bGVBZGRyZXNzAcwALAEUdHJhY2vRAwEcVHJhY2tJZAABGG9yaWdpbtUDATRSdW50aW1lT3JpZ2luAAEgcHJvcG9zYWztBAEQQ2FsbAABJGVuYWN0bWVudPUEAVBEaXNwYXRjaFRpbWU8TW9tZW50PgABJHN1Ym1pdHRlZDgBGE1vbWVudAABSHN1Ym1pc3Npb25fZGVwb3NpdLkNAWxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4AAUBkZWNpc2lvbl9kZXBvc2l0vQ0BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAEgZGVjaWRpbmfBDQF4T3B0aW9uPERlY2lkaW5nU3RhdHVzPE1vbWVudD4+AAEUdGFsbHkZCQEUVGFsbHkAASBpbl9xdWV1ZVkBARBib29sAAEUYWxhcm3JDQGET3B0aW9uPChNb21lbnQsIFNjaGVkdWxlQWRkcmVzcyk+AAC5DQxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlcxxEZXBvc2l0CCRBY2NvdW50SWQBBBxCYWxhbmNlAVUBAAgBDHdobwQBJEFjY291bnRJZAABGGFtb3VudFUBARxCYWxhbmNlAAC9DQQYT3B0aW9uBARUAbkNAQgQTm9uZQAAABBTb21lBAC5DQAAAQAAwQ0EGE9wdGlvbgQEVAHFDQEIEE5vbmUAAAAQU29tZQQAxQ0AAAEAAMUNDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzOERlY2lkaW5nU3RhdHVzBCxCbG9ja051bWJlcgE4AAgBFHNpbmNlOAEsQmxvY2tOdW1iZXIAAShjb25maXJtaW5n4AFMT3B0aW9uPEJsb2NrTnVtYmVyPgAAyQ0EGE9wdGlvbgQEVAHNDQEIEE5vbmUAAAAQU29tZQQAzQ0AAAEAAM0NAAAECDjMANENDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB1Q0EUwAABADZDQEYVmVjPFQ+AADVDQAABAg4VQEA2Q0AAALVDQDdDQAAAuENAOENAAAECNED5Q0A5Q0MQHBhbGxldF9yZWZlcmVuZGEUdHlwZXMwVHJhY2tEZXRhaWxzDBxCYWxhbmNlAVUBGE1vbWVudAE4EE5hbWUBwQkAJAEQbmFtZcEJARBOYW1lAAEwbWF4X2RlY2lkaW5nOAEMdTMyAAFAZGVjaXNpb25fZGVwb3NpdFUBARxCYWxhbmNlAAE4cHJlcGFyZV9wZXJpb2Q4ARhNb21lbnQAATxkZWNpc2lvbl9wZXJpb2Q4ARhNb21lbnQAAThjb25maXJtX3BlcmlvZDgBGE1vbWVudAABUG1pbl9lbmFjdG1lbnRfcGVyaW9kOAEYTW9tZW50AAEwbWluX2FwcHJvdmFs6Q0BFEN1cnZlAAEsbWluX3N1cHBvcnTpDQEUQ3VydmUAAOkNDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzFEN1cnZlAAEMQExpbmVhckRlY3JlYXNpbmcMARhsZW5ndGgdBQEcUGVyYmlsbAABFGZsb29yHQUBHFBlcmJpbGwAARBjZWlsHQUBHFBlcmJpbGwAAABEU3RlcHBlZERlY3JlYXNpbmcQARRiZWdpbh0FARxQZXJiaWxsAAEMZW5kHQUBHFBlcmJpbGwAARBzdGVwHQUBHFBlcmJpbGwAARhwZXJpb2QdBQEcUGVyYmlsbAABAChSZWNpcHJvY2FsDAEYZmFjdG9y7Q0BIEZpeGVkSTY0AAEgeF9vZmZzZXTtDQEgRml4ZWRJNjQAASB5X29mZnNldO0NASBGaXhlZEk2NAACAADtDQw0c3BfYXJpdGhtZXRpYyxmaXhlZF9wb2ludCBGaXhlZEk2NAAABADxDQEMaTY0AADxDQAABQwA9Q0MQHBhbGxldF9yZWZlcmVuZGEYcGFsbGV0FEVycm9yCARUAARJAAE4KE5vdE9uZ29pbmcAAARoUmVmZXJlbmR1bSBpcyBub3Qgb25nb2luZy4oSGFzRGVwb3NpdAABBLhSZWZlcmVuZHVtJ3MgZGVjaXNpb24gZGVwb3NpdCBpcyBhbHJlYWR5IHBhaWQuIEJhZFRyYWNrAAIEnFRoZSB0cmFjayBpZGVudGlmaWVyIGdpdmVuIHdhcyBpbnZhbGlkLhBGdWxsAAMEMQFUaGVyZSBhcmUgYWxyZWFkeSBhIGZ1bGwgY29tcGxlbWVudCBvZiByZWZlcmVuZGEgaW4gcHJvZ3Jlc3MgZm9yIHRoaXMgdHJhY2suKFF1ZXVlRW1wdHkABASAVGhlIHF1ZXVlIG9mIHRoZSB0cmFjayBpcyBlbXB0eS40QmFkUmVmZXJlbmR1bQAFBORUaGUgcmVmZXJlbmR1bSBpbmRleCBwcm92aWRlZCBpcyBpbnZhbGlkIGluIHRoaXMgY29udGV4dC4sTm90aGluZ1RvRG8ABgSsVGhlcmUgd2FzIG5vdGhpbmcgdG8gZG8gaW4gdGhlIGFkdmFuY2VtZW50LhxOb1RyYWNrAAcEoE5vIHRyYWNrIGV4aXN0cyBmb3IgdGhlIHByb3Bvc2FsIG9yaWdpbi4oVW5maW5pc2hlZAAIBAEBQW55IGRlcG9zaXQgY2Fubm90IGJlIHJlZnVuZGVkIHVudGlsIGFmdGVyIHRoZSBkZWNpc2lvbiBpcyBvdmVyLjBOb1Blcm1pc3Npb24ACQSoVGhlIGRlcG9zaXQgcmVmdW5kZXIgaXMgbm90IHRoZSBkZXBvc2l0b3IuJE5vRGVwb3NpdAAKBMxUaGUgZGVwb3NpdCBjYW5ub3QgYmUgcmVmdW5kZWQgc2luY2Ugbm9uZSB3YXMgbWFkZS4kQmFkU3RhdHVzAAsE0FRoZSByZWZlcmVuZHVtIHN0YXR1cyBpcyBpbnZhbGlkIGZvciB0aGlzIG9wZXJhdGlvbi5AUHJlaW1hZ2VOb3RFeGlzdAAMBHBUaGUgcHJlaW1hZ2UgZG9lcyBub3QgZXhpc3QuhFByZWltYWdlU3RvcmVkV2l0aERpZmZlcmVudExlbmd0aAANBBUBVGhlIHByZWltYWdlIGlzIHN0b3JlZCB3aXRoIGEgZGlmZmVyZW50IGxlbmd0aCB0aGFuIHRoZSBvbmUgcHJvdmlkZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LvkNDEBwYWxsZXRfd2hpdGVsaXN0GHBhbGxldBRFcnJvcgQEVAABFExVbmF2YWlsYWJsZVByZUltYWdlAAAEyFRoZSBwcmVpbWFnZSBvZiB0aGUgY2FsbCBoYXNoIGNvdWxkIG5vdCBiZSBsb2FkZWQuPFVuZGVjb2RhYmxlQ2FsbAABBHhUaGUgY2FsbCBjb3VsZCBub3QgYmUgZGVjb2RlZC5gSW52YWxpZENhbGxXZWlnaHRXaXRuZXNzAAIE7FRoZSB3ZWlnaHQgb2YgdGhlIGRlY29kZWQgY2FsbCB3YXMgaGlnaGVyIHRoYW4gdGhlIHdpdG5lc3MuUENhbGxJc05vdFdoaXRlbGlzdGVkAAMEdFRoZSBjYWxsIHdhcyBub3Qgd2hpdGVsaXN0ZWQuWENhbGxBbHJlYWR5V2hpdGVsaXN0ZWQABASgVGhlIGNhbGwgd2FzIGFscmVhZHkgd2hpdGVsaXN0ZWQ7IE5vLU9wLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC79DQg8cGFsbGV0X2JvdW50aWVzGEJvdW50eQwkQWNjb3VudElkAQQcQmFsYW5jZQFVASxCbG9ja051bWJlcgE4ABgBIHByb3Bvc2VyBAEkQWNjb3VudElkAAEUdmFsdWVVAQEcQmFsYW5jZQABDGZlZVUBARxCYWxhbmNlAAE8Y3VyYXRvcl9kZXBvc2l0VQEBHEJhbGFuY2UAARBib25kVQEBHEJhbGFuY2UAARhzdGF0dXMBDgGQQm91bnR5U3RhdHVzPEFjY291bnRJZCwgQmxvY2tOdW1iZXI+AAABDgg8cGFsbGV0X2JvdW50aWVzMEJvdW50eVN0YXR1cwgkQWNjb3VudElkAQQsQmxvY2tOdW1iZXIBOAEcIFByb3Bvc2VkAAAAIEFwcHJvdmVkAAEAGEZ1bmRlZAACADxDdXJhdG9yUHJvcG9zZWQEARxjdXJhdG9yBAEkQWNjb3VudElkAAMAGEFjdGl2ZQgBHGN1cmF0b3IEASRBY2NvdW50SWQAASh1cGRhdGVfZHVlOAEsQmxvY2tOdW1iZXIABAA0UGVuZGluZ1BheW91dAwBHGN1cmF0b3IEASRBY2NvdW50SWQAASxiZW5lZmljaWFyeQQBJEFjY291bnRJZAABJHVubG9ja19hdDgBLEJsb2NrTnVtYmVyAAUATEFwcHJvdmVkV2l0aEN1cmF0b3IEARxjdXJhdG9yBAEkQWNjb3VudElkAAYAAAUODExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAACQ4MPHBhbGxldF9ib3VudGllcxhwYWxsZXQURXJyb3IIBFQABEkAATBwSW5zdWZmaWNpZW50UHJvcG9zZXJzQmFsYW5jZQAABHhQcm9wb3NlcidzIGJhbGFuY2UgaXMgdG9vIGxvdy4wSW52YWxpZEluZGV4AAEEkE5vIHByb3Bvc2FsIG9yIGJvdW50eSBhdCB0aGF0IGluZGV4LjBSZWFzb25Ub29CaWcAAgSEVGhlIHJlYXNvbiBnaXZlbiBpcyBqdXN0IHRvbyBiaWcuQFVuZXhwZWN0ZWRTdGF0dXMAAwSAVGhlIGJvdW50eSBzdGF0dXMgaXMgdW5leHBlY3RlZC44UmVxdWlyZUN1cmF0b3IABARcUmVxdWlyZSBib3VudHkgY3VyYXRvci4wSW52YWxpZFZhbHVlAAUEVEludmFsaWQgYm91bnR5IHZhbHVlLihJbnZhbGlkRmVlAAYETEludmFsaWQgYm91bnR5IGZlZS40UGVuZGluZ1BheW91dAAHCGxBIGJvdW50eSBwYXlvdXQgaXMgcGVuZGluZy74VG8gY2FuY2VsIHRoZSBib3VudHksIHlvdSBtdXN0IHVuYXNzaWduIGFuZCBzbGFzaCB0aGUgY3VyYXRvci4kUHJlbWF0dXJlAAgERQFUaGUgYm91bnRpZXMgY2Fubm90IGJlIGNsYWltZWQvY2xvc2VkIGJlY2F1c2UgaXQncyBzdGlsbCBpbiB0aGUgY291bnRkb3duIHBlcmlvZC5QSGFzQWN0aXZlQ2hpbGRCb3VudHkACQQFAVRoZSBib3VudHkgY2Fubm90IGJlIGNsb3NlZCBiZWNhdXNlIGl0IGhhcyBhY3RpdmUgY2hpbGQgYm91bnRpZXMuNFRvb01hbnlRdWV1ZWQACgSYVG9vIG1hbnkgYXBwcm92YWxzIGFyZSBhbHJlYWR5IHF1ZXVlZC4sTm90UHJvcG9zZXIACwScVXNlciBpcyBub3QgdGhlIHByb3Bvc2VyIG9mIHRoZSBib3VudHkuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lg0OCFRwYWxsZXRfY2hpbGRfYm91bnRpZXMsQ2hpbGRCb3VudHkMJEFjY291bnRJZAEEHEJhbGFuY2UBVQEsQmxvY2tOdW1iZXIBOAAUATRwYXJlbnRfYm91bnR5OAEsQm91bnR5SW5kZXgAARR2YWx1ZVUBARxCYWxhbmNlAAEMZmVlVQEBHEJhbGFuY2UAATxjdXJhdG9yX2RlcG9zaXRVAQEcQmFsYW5jZQABGHN0YXR1cxEOAaRDaGlsZEJvdW50eVN0YXR1czxBY2NvdW50SWQsIEJsb2NrTnVtYmVyPgAAEQ4IVHBhbGxldF9jaGlsZF9ib3VudGllc0RDaGlsZEJvdW50eVN0YXR1cwgkQWNjb3VudElkAQQsQmxvY2tOdW1iZXIBOAEQFEFkZGVkAAAAPEN1cmF0b3JQcm9wb3NlZAQBHGN1cmF0b3IEASRBY2NvdW50SWQAAQAYQWN0aXZlBAEcY3VyYXRvcgQBJEFjY291bnRJZAACADRQZW5kaW5nUGF5b3V0DAEcY3VyYXRvcgQBJEFjY291bnRJZAABLGJlbmVmaWNpYXJ5BAEkQWNjb3VudElkAAEkdW5sb2NrX2F0OAEsQmxvY2tOdW1iZXIAAwAAFQ4MVHBhbGxldF9jaGlsZF9ib3VudGllcxhwYWxsZXQURXJyb3IEBFQAAQxUUGFyZW50Qm91bnR5Tm90QWN0aXZlAAAEpFRoZSBwYXJlbnQgYm91bnR5IGlzIG5vdCBpbiBhY3RpdmUgc3RhdGUuZEluc3VmZmljaWVudEJvdW50eUJhbGFuY2UAAQTkVGhlIGJvdW50eSBiYWxhbmNlIGlzIG5vdCBlbm91Z2ggdG8gYWRkIG5ldyBjaGlsZC1ib3VudHkuUFRvb01hbnlDaGlsZEJvdW50aWVzAAIEDQFOdW1iZXIgb2YgY2hpbGQgYm91bnRpZXMgZXhjZWVkcyBsaW1pdCBgTWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudGAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LhkODERwYWxsZXRfYXNzZXRfcmF0ZRhwYWxsZXQURXJyb3IEBFQAAQxAVW5rbm93bkFzc2V0S2luZAAABHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi40QWxyZWFkeUV4aXN0cwABBFEBVGhlIGdpdmVuIGFzc2V0IElEIGFscmVhZHkgaGFzIGFuIGFzc2lnbmVkIGNvbnZlcnNpb24gcmF0ZSBhbmQgY2Fubm90IGJlIHJlLWNyZWF0ZWQuIE92ZXJmbG93AAIEzE92ZXJmbG93IG9jdXJyZWQgd2hlbiBjYWxjdWxhdGluZyB0aGUgaW52ZXJzZSByYXRlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4dDghscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGEJvdW50eRgkQWNjb3VudElkAQQcQmFsYW5jZQFVASRBc3NldEtpbmQBzQQQSGFzaAE8JFBheW1lbnRJZAEoLEJlbmVmaWNpYXJ5AdEEABABKGFzc2V0X2tpbmTNBAEkQXNzZXRLaW5kAAEUdmFsdWVVAQEcQmFsYW5jZQABIG1ldGFkYXRhPAEQSGFzaAABGHN0YXR1cyEOAbxCb3VudHlTdGF0dXM8QWNjb3VudElkLCBQYXltZW50SWQsIEJlbmVmaWNpYXJ5PgAAIQ4IbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczBCb3VudHlTdGF0dXMMJEFjY291bnRJZAEEJFBheW1lbnRJZAEoLEJlbmVmaWNpYXJ5AdEEARhARnVuZGluZ0F0dGVtcHRlZAgBHGN1cmF0b3IEASRBY2NvdW50SWQAAThwYXltZW50X3N0YXR1cyUOAVxQYXltZW50U3RhdGU8UGF5bWVudElkPgAAABhGdW5kZWQEARxjdXJhdG9yBAEkQWNjb3VudElkAAEAREN1cmF0b3JVbmFzc2lnbmVkAAIAGEFjdGl2ZQQBHGN1cmF0b3IEASRBY2NvdW50SWQAAwA8UmVmdW5kQXR0ZW1wdGVkCAEcY3VyYXRvco0BAURPcHRpb248QWNjb3VudElkPgABOHBheW1lbnRfc3RhdHVzJQ4BXFBheW1lbnRTdGF0ZTxQYXltZW50SWQ+AAQAPFBheW91dEF0dGVtcHRlZAwBHGN1cmF0b3IEASRBY2NvdW50SWQAASxiZW5lZmljaWFyedEEASxCZW5lZmljaWFyeQABOHBheW1lbnRfc3RhdHVzJQ4BXFBheW1lbnRTdGF0ZTxQYXltZW50SWQ+AAUAACUOCGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMwUGF5bWVudFN0YXRlBAhJZAEoARAcUGVuZGluZwAAACRBdHRlbXB0ZWQEAQhpZCgBCElkAAEAGEZhaWxlZAACACRTdWNjZWVkZWQAAwAAKQ4IbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllcyxDaGlsZEJvdW50eRQkQWNjb3VudElkAQQcQmFsYW5jZQFVARBIYXNoATwkUGF5bWVudElkASgsQmVuZWZpY2lhcnkB0QQAEAE0cGFyZW50X2JvdW50eTgBLEJvdW50eUluZGV4AAEUdmFsdWVVAQEcQmFsYW5jZQABIG1ldGFkYXRhPAEQSGFzaAABGHN0YXR1cyEOAbxCb3VudHlTdGF0dXM8QWNjb3VudElkLCBQYXltZW50SWQsIEJlbmVmaWNpYXJ5PgAALQ4AAAQIOOAAMQ4UNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQAVQEBKEY6OkJhbGFuY2UAADUODGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMYcGFsbGV0FEVycm9yCARUAARJAAFIMEludmFsaWRJbmRleAAABHxObyBjaGlsZC0vYm91bnR5IGF0IHRoYXQgaW5kZXguMFJlYXNvblRvb0JpZwABBIRUaGUgcmVhc29uIGdpdmVuIGlzIGp1c3QgdG9vIGJpZy4wSW52YWxpZFZhbHVlAAIEcEludmFsaWQgY2hpbGQtL2JvdW50eSB2YWx1ZS5YRmFpbGVkVG9Db252ZXJ0QmFsYW5jZQADCF0BVGhlIGJhbGFuY2Ugb2YgdGhlIGFzc2V0IGtpbmQgaXMgbm90IGNvbnZlcnRpYmxlIHRvIHRoZSBiYWxhbmNlIG9mIHRoZSBuYXRpdmUgYXNzZXQgZm9yhGFzc2VydGluZyB0aGUgb3JpZ2luIHBlcm1pc3Npb25zLkBVbmV4cGVjdGVkU3RhdHVzAAQEnFRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyB1bmV4cGVjdGVkLjhSZXF1aXJlQ3VyYXRvcgAFBHhSZXF1aXJlIGNoaWxkLS9ib3VudHkgY3VyYXRvci5YSW5zdWZmaWNpZW50UGVybWlzc2lvbgAGCEUBVGhlIHNwZW5kIG9yaWdpbiBpcyB2YWxpZCBidXQgdGhlIGFtb3VudCBpdCBpcyBhbGxvd2VkIHRvIHNwZW5kIGlzIGxvd2VyIHRoYW4gdGhlRHJlcXVlc3RlZCBhbW91bnQuMEZ1bmRpbmdFcnJvcgAHBLxUaGVyZSB3YXMgaXNzdWUgd2l0aCBmdW5kaW5nIHRoZSBjaGlsZC0vYm91bnR5LixSZWZ1bmRFcnJvcgAIBMRUaGVyZSB3YXMgaXNzdWUgd2l0aCByZWZ1bmRpbmcgdGhlIGNoaWxkLS9ib3VudHkuLFBheW91dEVycm9yAAkATEZ1bmRpbmdJbmNvbmNsdXNpdmUACgSwQ2hpbGQtL2JvdW50eSBmdW5kaW5nIGhhcyBub3QgY29uY2x1ZGVkIHlldC5IUmVmdW5kSW5jb25jbHVzaXZlAAsErENoaWxkLS9ib3VudHkgcmVmdW5kIGhhcyBub3QgY29uY2x1ZGVkIHlldC5IUGF5b3V0SW5jb25jbHVzaXZlAAwErENoaWxkLS9ib3VudHkgcGF5b3V0IGhhcyBub3QgY29uY2x1ZGVkIHlldC5URmFpbGVkVG9Db252ZXJ0U291cmNlAA0IVQFUaGUgY2hpbGQtL2JvdW50eSBvciBmdW5kaW5nIHNvdXJjZSBhY2NvdW50IGNvdWxkIG5vdCBiZSBkZXJpdmVkIGZyb20gdGhlIGluZGV4ZXMgYW5kLGFzc2V0IGtpbmQuUEhhc0FjdGl2ZUNoaWxkQm91bnR5AA4EIQFUaGUgcGFyZW50IGJvdW50eSBjYW5ub3QgYmUgY2xvc2VkIGJlY2F1c2UgaXQgaGFzIGFjdGl2ZSBjaGlsZCBib3VudGllcy5QVG9vTWFueUNoaWxkQm91bnRpZXMADwQNAU51bWJlciBvZiBjaGlsZCBib3VudGllcyBleGNlZWRzIGxpbWl0IGBNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50YC5cSW5zdWZmaWNpZW50Qm91bnR5VmFsdWUAEAT4VGhlIHBhcmVudCBib3VudHkgdmFsdWUgaXMgbm90IGVub3VnaCB0byBhZGQgbmV3IGNoaWxkLWJvdW50eS5AUHJlaW1hZ2VOb3RFeGlzdAARBHBUaGUgcHJlaW1hZ2UgZG9lcyBub3QgZXhpc3QuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LjkODChwYWxsZXRfZGFwGHBhbGxldBRFcnJvcgQEVAABCEBVbmtub3duQnVkZ2V0S2V5AAAEHQFBIGtleSBpbiB0aGUgYnVkZ2V0IGFsbG9jYXRpb24gZG9lcyBub3QgbWF0Y2ggYW55IHJlZ2lzdGVyZWQgcmVjaXBpZW50LjhCdWRnZXROb3RFeGFjdAABBORCdWRnZXQgYWxsb2NhdGlvbiBwZXJjZW50YWdlcyBkbyBub3Qgc3VtIHRvIGV4YWN0bHkgMTAwJS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuPQ4AAAJBDgBBDgAABAzBAwQdBQBFDghccGFsbGV0X25vbWluYXRpb25fcG9vbHMoUG9vbE1lbWJlcgQEVAAAEAEccG9vbF9pZDgBGFBvb2xJZAABGHBvaW50c1UBATBCYWxhbmNlT2Y8VD4AAXBsYXN0X3JlY29yZGVkX3Jld2FyZF9jb3VudGVyDQUBQFQ6OlJld2FyZENvdW50ZXIAATh1bmJvbmRpbmdfZXJhc0kOAeBCb3VuZGVkQlRyZWVNYXA8RXJhSW5kZXgsIEJhbGFuY2VPZjxUPiwgVDo6TWF4VW5ib25kaW5nPgAASQ4MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgFVAQRTAAAEAE0OAThCVHJlZU1hcDxLLCBWPgAATQ4EIEJUcmVlTWFwCARLATgEVgFVAQAEANkNAAAAUQ4IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzPEJvbmRlZFBvb2xJbm5lcgQEVAAAFAEoY29tbWlzc2lvblUOATRDb21taXNzaW9uPFQ+AAE4bWVtYmVyX2NvdW50ZXI4AQx1MzIAARhwb2ludHNVAQEwQmFsYW5jZU9mPFQ+AAEUcm9sZXNdDgFcUG9vbFJvbGVzPFQ6OkFjY291bnRJZD4AARRzdGF0ZU0FASRQb29sU3RhdGUAAFUOCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyhDb21taXNzaW9uBARUAAAUARxjdXJyZW50ZQUBfE9wdGlvbjwoUGVyYmlsbCwgVDo6QWNjb3VudElkKT4AAQxtYXhVCQE8T3B0aW9uPFBlcmJpbGw+AAEsY2hhbmdlX3JhdGVZDgG8T3B0aW9uPENvbW1pc3Npb25DaGFuZ2VSYXRlPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AATR0aHJvdHRsZV9mcm9t4AFkT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQ+PgABQGNsYWltX3Blcm1pc3Npb25xBQG8T3B0aW9uPENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb248VDo6QWNjb3VudElkPj4AAFkOBBhPcHRpb24EBFQBbQUBCBBOb25lAAAAEFNvbWUEAG0FAAABAABdDghccGFsbGV0X25vbWluYXRpb25fcG9vbHMkUG9vbFJvbGVzBCRBY2NvdW50SWQBBAAQASRkZXBvc2l0b3IEASRBY2NvdW50SWQAARByb290jQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEkbm9taW5hdG9yjQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEcYm91bmNlco0BAURPcHRpb248QWNjb3VudElkPgAAYQ4IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzKFJld2FyZFBvb2wEBFQAABQBcGxhc3RfcmVjb3JkZWRfcmV3YXJkX2NvdW50ZXINBQFAVDo6UmV3YXJkQ291bnRlcgABbGxhc3RfcmVjb3JkZWRfdG90YWxfcGF5b3V0c1UBATBCYWxhbmNlT2Y8VD4AAVR0b3RhbF9yZXdhcmRzX2NsYWltZWRVAQEwQmFsYW5jZU9mPFQ+AAFgdG90YWxfY29tbWlzc2lvbl9wZW5kaW5nVQEBMEJhbGFuY2VPZjxUPgABYHRvdGFsX2NvbW1pc3Npb25fY2xhaW1lZFUBATBCYWxhbmNlT2Y8VD4AAGUOCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBTdWJQb29scwQEVAAACAEYbm9fZXJhaQ4BNFVuYm9uZFBvb2w8VD4AASB3aXRoX2VyYW0OAQEBQm91bmRlZEJUcmVlTWFwPEVyYUluZGV4LCBVbmJvbmRQb29sPFQ+LCBUb3RhbFVuYm9uZGluZ1Bvb2xzPFQ+PgAAaQ4IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzKFVuYm9uZFBvb2wEBFQAAAgBGHBvaW50c1UBATBCYWxhbmNlT2Y8VD4AARxiYWxhbmNlVQEBMEJhbGFuY2VPZjxUPgAAbQ4MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgFpDgRTAAAEAHEOAThCVHJlZU1hcDxLLCBWPgAAcQ4EIEJUcmVlTWFwCARLATgEVgFpDgAEAHUOAAAAdQ4AAAJ5DgB5DgAABAg4aQ4AfQ4MXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldBRFcnJvcgQEVAABmDBQb29sTm90Rm91bmQAAASIQSAoYm9uZGVkKSBwb29sIGlkIGRvZXMgbm90IGV4aXN0LkhQb29sTWVtYmVyTm90Rm91bmQAAQRsQW4gYWNjb3VudCBpcyBub3QgYSBtZW1iZXIuSFJld2FyZFBvb2xOb3RGb3VuZAACBCEBQSByZXdhcmQgcG9vbCBkb2VzIG5vdCBleGlzdC4gSW4gYWxsIGNhc2VzIHRoaXMgaXMgYSBzeXN0ZW0gbG9naWMgZXJyb3IuQFN1YlBvb2xzTm90Rm91bmQAAwRoQSBzdWIgcG9vbCBkb2VzIG5vdCBleGlzdC5kQWNjb3VudEJlbG9uZ3NUb090aGVyUG9vbAAECE0BQW4gYWNjb3VudCBpcyBhbHJlYWR5IGRlbGVnYXRpbmcgaW4gYW5vdGhlciBwb29sLiBBbiBhY2NvdW50IG1heSBvbmx5IGJlbG9uZyB0byBvbmU8cG9vbCBhdCBhIHRpbWUuOEZ1bGx5VW5ib25kaW5nAAUIPQFUaGUgbWVtYmVyIGlzIGZ1bGx5IHVuYm9uZGVkIChhbmQgdGh1cyBjYW5ub3QgYWNjZXNzIHRoZSBib25kZWQgYW5kIHJld2FyZCBwb29sqGFueW1vcmUgdG8sIGZvciBleGFtcGxlLCBjb2xsZWN0IHJld2FyZHMpLkRNYXhVbmJvbmRpbmdMaW1pdAAGBAkBVGhlIG1lbWJlciBjYW5ub3QgdW5ib25kIGZ1cnRoZXIgY2h1bmtzIGR1ZSB0byByZWFjaGluZyB0aGUgbGltaXQuRENhbm5vdFdpdGhkcmF3QW55AAcETQFOb25lIG9mIHRoZSBmdW5kcyBjYW4gYmUgd2l0aGRyYXduIHlldCBiZWNhdXNlIHRoZSBib25kaW5nIGR1cmF0aW9uIGhhcyBub3QgcGFzc2VkLkRNaW5pbXVtQm9uZE5vdE1ldAAIFCkBVGhlIGFtb3VudCBkb2VzIG5vdCBtZWV0IHRoZSBtaW5pbXVtIGJvbmQgdG8gZWl0aGVyIGpvaW4gb3IgY3JlYXRlIGEgcG9vbC4AVQFUaGUgZGVwb3NpdG9yIGNhbiBuZXZlciB1bmJvbmQgdG8gYSB2YWx1ZSBsZXNzIHRoYW4gYFBhbGxldDo6ZGVwb3NpdG9yX21pbl9ib25kYC4gVGhlXQFjYWxsZXIgZG9lcyBub3QgaGF2ZSBub21pbmF0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgcG9vbC4gTWVtYmVycyBjYW4gbmV2ZXIgdW5ib25kIHRvIGFodmFsdWUgYmVsb3cgYE1pbkpvaW5Cb25kYC4wT3ZlcmZsb3dSaXNrAAkEIQFUaGUgdHJhbnNhY3Rpb24gY291bGQgbm90IGJlIGV4ZWN1dGVkIGR1ZSB0byBvdmVyZmxvdyByaXNrIGZvciB0aGUgcG9vbC40Tm90RGVzdHJveWluZwAKCF0BQSBwb29sIG11c3QgYmUgaW4gW2BQb29sU3RhdGU6OkRlc3Ryb3lpbmdgXSBpbiBvcmRlciBmb3IgdGhlIGRlcG9zaXRvciB0byB1bmJvbmQgb3IgZm9yuG90aGVyIG1lbWJlcnMgdG8gYmUgcGVybWlzc2lvbmxlc3NseSB1bmJvbmRlZC4wTm90Tm9taW5hdG9yAAsE9FRoZSBjYWxsZXIgZG9lcyBub3QgaGF2ZSBub21pbmF0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgcG9vbC5UTm90S2lja2VyT3JEZXN0cm95aW5nAAwEPQFFaXRoZXIgYSkgdGhlIGNhbGxlciBjYW5ub3QgbWFrZSBhIHZhbGlkIGtpY2sgb3IgYikgdGhlIHBvb2wgaXMgbm90IGRlc3Ryb3lpbmcuHE5vdE9wZW4ADQRwVGhlIHBvb2wgaXMgbm90IG9wZW4gdG8gam9pbiBNYXhQb29scwAOBIRUaGUgc3lzdGVtIGlzIG1heGVkIG91dCBvbiBwb29scy44TWF4UG9vbE1lbWJlcnMADwScVG9vIG1hbnkgbWVtYmVycyBpbiB0aGUgcG9vbCBvciBzeXN0ZW0uRENhbk5vdENoYW5nZVN0YXRlABAEiFRoZSBwb29scyBzdGF0ZSBjYW5ub3QgYmUgY2hhbmdlZC5URG9lc05vdEhhdmVQZXJtaXNzaW9uABEEuFRoZSBjYWxsZXIgZG9lcyBub3QgaGF2ZSBhZGVxdWF0ZSBwZXJtaXNzaW9ucy5UTWV0YWRhdGFFeGNlZWRzTWF4TGVuABIErE1ldGFkYXRhIGV4Y2VlZHMgW2BDb25maWc6Ok1heE1ldGFkYXRhTGVuYF0kRGVmZW5zaXZlBACBDgE4RGVmZW5zaXZlRXJyb3IAEwgxAVNvbWUgZXJyb3Igb2NjdXJyZWQgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuLiBUaGlzIHNob3VsZCBiZSByZXBvcnRlZCB0byB0aGUwbWFpbnRhaW5lcnMunFBhcnRpYWxVbmJvbmROb3RBbGxvd2VkUGVybWlzc2lvbmxlc3NseQAUBLxQYXJ0aWFsIHVuYm9uZGluZyBub3cgYWxsb3dlZCBwZXJtaXNzaW9ubGVzc2x5LlxNYXhDb21taXNzaW9uUmVzdHJpY3RlZAAVBB0BVGhlIHBvb2wncyBtYXggY29tbWlzc2lvbiBjYW5ub3QgYmUgc2V0IGhpZ2hlciB0aGFuIHRoZSBleGlzdGluZyB2YWx1ZS5gQ29tbWlzc2lvbkV4Y2VlZHNNYXhpbXVtABYE7FRoZSBzdXBwbGllZCBjb21taXNzaW9uIGV4Y2VlZHMgdGhlIG1heCBhbGxvd2VkIGNvbW1pc3Npb24ueENvbW1pc3Npb25FeGNlZWRzR2xvYmFsTWF4aW11bQAXBOhUaGUgc3VwcGxpZWQgY29tbWlzc2lvbiBleGNlZWRzIGdsb2JhbCBtYXhpbXVtIGNvbW1pc3Npb24uZENvbW1pc3Npb25DaGFuZ2VUaHJvdHRsZWQAGAQJAU5vdCBlbm91Z2ggYmxvY2tzIGhhdmUgc3VycGFzc2VkIHNpbmNlIHRoZSBsYXN0IGNvbW1pc3Npb24gdXBkYXRlLnhDb21taXNzaW9uQ2hhbmdlUmF0ZU5vdEFsbG93ZWQAGQQBAVRoZSBzdWJtaXR0ZWQgY2hhbmdlcyB0byBjb21taXNzaW9uIGNoYW5nZSByYXRlIGFyZSBub3QgYWxsb3dlZC5MTm9QZW5kaW5nQ29tbWlzc2lvbgAaBKBUaGVyZSBpcyBubyBwZW5kaW5nIGNvbW1pc3Npb24gdG8gY2xhaW0uWE5vQ29tbWlzc2lvbkN1cnJlbnRTZXQAGwSMTm8gY29tbWlzc2lvbiBjdXJyZW50IGhhcyBiZWVuIHNldC4sUG9vbElkSW5Vc2UAHARkUG9vbCBpZCBjdXJyZW50bHkgaW4gdXNlLjRJbnZhbGlkUG9vbElkAB0EnFBvb2wgaWQgcHJvdmlkZWQgaXMgbm90IGNvcnJlY3QvdXNhYmxlLkxCb25kRXh0cmFSZXN0cmljdGVkAB4E/EJvbmRpbmcgZXh0cmEgaXMgcmVzdHJpY3RlZCB0byB0aGUgZXhhY3QgcGVuZGluZyByZXdhcmQgYW1vdW50LjxOb3RoaW5nVG9BZGp1c3QAHwSwTm8gaW1iYWxhbmNlIGluIHRoZSBFRCBkZXBvc2l0IGZvciB0aGUgcG9vbC44Tm90aGluZ1RvU2xhc2gAIATMTm8gc2xhc2ggcGVuZGluZyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIHRoZSBtZW1iZXIuLFNsYXNoVG9vTG93ACEEqFRoZSBzbGFzaCBhbW91bnQgaXMgdG9vIGxvdyB0byBiZSBhcHBsaWVkLjxBbHJlYWR5TWlncmF0ZWQAIgQVAVRoZSBwb29sIG9yIG1lbWJlciBkZWxlZ2F0aW9uIGhhcyBhbHJlYWR5IG1pZ3JhdGVkIHRvIGRlbGVnYXRlIHN0YWtlLixOb3RNaWdyYXRlZAAjBBUBVGhlIHBvb2wgb3IgbWVtYmVyIGRlbGVnYXRpb24gaGFzIG5vdCBtaWdyYXRlZCB5ZXQgdG8gZGVsZWdhdGUgc3Rha2UuME5vdFN1cHBvcnRlZAAkBPBUaGlzIGNhbGwgaXMgbm90IGFsbG93ZWQgaW4gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHBhbGxldC4oUmVzdHJpY3RlZAAlCFEBQWNjb3VudCBpcyByZXN0cmljdGVkIGZyb20gcGFydGljaXBhdGlvbiBpbiBwb29scy4gVGhpcyBtYXkgaGFwcGVuIGlmIHRoZSBhY2NvdW50IGlzfHN0YWtpbmcgaW4gYW5vdGhlciB3YXkgYWxyZWFkeS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQugQ4MXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldDhEZWZlbnNpdmVFcnJvcgABHGhOb3RFbm91Z2hTcGFjZUluVW5ib25kUG9vbAAAADBQb29sTm90Rm91bmQAAQBIUmV3YXJkUG9vbE5vdEZvdW5kAAIAQFN1YlBvb2xzTm90Rm91bmQAAwBwQm9uZGVkU3Rhc2hLaWxsZWRQcmVtYXR1cmVseQAEAFREZWxlZ2F0aW9uVW5zdXBwb3J0ZWQABQA8U2xhc2hOb3RBcHBsaWVkAAYAAIUODEBwYWxsZXRfYmFnc19saXN0EGxpc3QQTm9kZQgEVAAESQAAFAEIaWQEATBUOjpBY2NvdW50SWQAARBwcmV2jQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEQbmV4dI0BAVBPcHRpb248VDo6QWNjb3VudElkPgABJGJhZ191cHBlcigBIFQ6OlNjb3JlAAEUc2NvcmUoASBUOjpTY29yZQAAiQ4MQHBhbGxldF9iYWdzX2xpc3QQbGlzdAxCYWcIBFQABEkAAAgBEGhlYWSNAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARB0YWlsjQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AACNDgAAAigAkQ4MQHBhbGxldF9iYWdzX2xpc3QYcGFsbGV0FEVycm9yCARUAARJAAEIEExpc3QEAJUOASRMaXN0RXJyb3IAAAS0QSBlcnJvciBpbiB0aGUgbGlzdCBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24uGExvY2tlZAABBNhDb3VsZCBub3QgdXBkYXRlIGEgbm9kZSwgYmVjYXVzZSB0aGUgcGFsbGV0IGlzIGxvY2tlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQulQ4MQHBhbGxldF9iYWdzX2xpc3QQbGlzdCRMaXN0RXJyb3IAARQkRHVwbGljYXRlAAAAKE5vdEhlYXZpZXIAAQAwTm90SW5TYW1lQmFnAAIAME5vZGVOb3RGb3VuZAADABhMb2NrZWQABAAAmQ4AAAQI/PwAnQ4MYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxR0eXBlcyhEZWxlZ2F0aW9uBARUAAAIARRhZ2VudAQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4AAKEODGBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmcUdHlwZXMsQWdlbnRMZWRnZXIEBFQAABABFHBheWVlBAEwVDo6QWNjb3VudElkAAE8dG90YWxfZGVsZWdhdGVkUQEBMEJhbGFuY2VPZjxUPgABVHVuY2xhaW1lZF93aXRoZHJhd2Fsc1EBATBCYWxhbmNlT2Y8VD4AATRwZW5kaW5nX3NsYXNoUQEBMEJhbGFuY2VPZjxUPgAApQ4MYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxhwYWxsZXQURXJyb3IEBFQAATAoTm90QWxsb3dlZAAABKhUaGUgYWNjb3VudCBjYW5ub3QgcGVyZm9ybSB0aGlzIG9wZXJhdGlvbi44QWxyZWFkeVN0YWtpbmcAAQS4QW4gZXhpc3Rpbmcgc3Rha2VyIGNhbm5vdCBwZXJmb3JtIHRoaXMgYWN0aW9uLmBJbnZhbGlkUmV3YXJkRGVzdGluYXRpb24AAgTUUmV3YXJkIERlc3RpbmF0aW9uIGNhbm5vdCBiZSBzYW1lIGFzIGBBZ2VudGAgYWNjb3VudC5ESW52YWxpZERlbGVnYXRpb24AAxSIRGVsZWdhdGlvbiBjb25kaXRpb25zIGFyZSBub3QgbWV0LgBMUG9zc2libGUgaXNzdWVzIGFyZWwxKSBDYW5ub3QgZGVsZWdhdGUgdG8gc2VsZiykMikgQ2Fubm90IGRlbGVnYXRlIHRvIG11bHRpcGxlIGRlbGVnYXRlcy44Tm90RW5vdWdoRnVuZHMABAQBAVRoZSBhY2NvdW50IGRvZXMgbm90IGhhdmUgZW5vdWdoIGZ1bmRzIHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi4gTm90QWdlbnQABQSATm90IGFuIGV4aXN0aW5nIGBBZ2VudGAgYWNjb3VudC4wTm90RGVsZWdhdG9yAAYEYE5vdCBhIERlbGVnYXRvciBhY2NvdW50LiBCYWRTdGF0ZQAHBIhTb21lIGNvcnJ1cHRpb24gaW4gaW50ZXJuYWwgc3RhdGUuOFVuYXBwbGllZFNsYXNoAAgE3FVuYXBwbGllZCBwZW5kaW5nIHNsYXNoIHJlc3RyaWN0cyBvcGVyYXRpb24gb24gYEFnZW50YC44Tm90aGluZ1RvU2xhc2gACQSsYEFnZW50YCBoYXMgbm8gcGVuZGluZyBzbGFzaCB0byBiZSBhcHBsaWVkLjhXaXRoZHJhd0ZhaWxlZAAKBLBGYWlsZWQgdG8gd2l0aGRyYXcgYW1vdW50IGZyb20gQ29yZSBTdGFraW5nLjBOb3RTdXBwb3J0ZWQACwScT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBwYWxsZXQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LqkOAAAECK0OOACtDgh4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50SFZhbGlkYXRvclNldFJlcG9ydAQkQWNjb3VudElkAQQAEAFEbmV3X3ZhbGlkYXRvcl9zZXRdAQE4VmVjPEFjY291bnRJZD4AAQhpZDgBDHUzMgABLHBydW5lX3VwX3Rv4AFQT3B0aW9uPFNlc3Npb25JbmRleD4AASBsZWZ0b3ZlclkBARBib29sAACxDgx4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50GHBhbGxldBRFcnJvcgQEVAABFDRYY21TZW5kRmFpbGVkAAAEuEZhaWxlZCB0byBzZW5kIFhDTSBtZXNzYWdlIHRvIHRoZSBSZWxheSBDaGFpbi4wTm90VmFsaWRhdG9yAAEUxFRoZSBvcmlnaW4gYWNjb3VudCBpcyBub3QgYSByZWdpc3RlcmVkIHZhbGlkYXRvci4AWQFPbmx5IGFjY291bnRzIHRoYXQgaGF2ZSBjYWxsZWQgYHZhbGlkYXRlKClgIGNhbiBzZXQgb3IgcHVyZ2Ugc2Vzc2lvbiBrZXlzLiBXaGVuIGNhbGxlZEkBdmlhIGEgc3Rha2luZyBwcm94eSwgdGhlIG9yaWdpbiBpcyB0aGUgZGVsZWdhdGluZyBhY2NvdW50IChzdGFzaCksIHdoaWNoIG11c3QgYmUgYVRyZWdpc3RlcmVkIHZhbGlkYXRvci4sSW52YWxpZEtleXMAAgRFAVRoZSBzZXNzaW9uIGtleXMgY291bGQgbm90IGJlIGRlY29kZWQgYXMgdGhlIGV4cGVjdGVkIFJlbGF5Q2hhaW5TZXNzaW9uS2V5cyB0eXBlLjBJbnZhbGlkUHJvb2YAAwS0SW52YWxpZCBvd25lcnNoaXAgcHJvb2YgZm9yIHRoZSBzZXNzaW9uIGtleXMuPEZlZXNFeGNlZWRlZE1heAAEBLREZWxpdmVyeSBmZWVzIGV4Y2VlZGVkIHRoZSBzcGVjaWZpZWQgbWF4aW11bS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQutQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAG5DgRTAAAEAMEOARhWZWM8VD4AALkOAAAEDAQovQ4AvQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAXQEBGFZlYzxUPgAAwQ4AAAK5DgDFDgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABABdAQEYVmVjPFQ+AADJDgyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHBhbGxldBRFcnJvcgQEVAABDCBGYWxsYmFjawAABIRUcmlnZ2VyaW5nIHRoZSBgRmFsbGJhY2tgIGZhaWxlZC48VW5leHBlY3RlZFBoYXNlAAEEQFVuZXhwZWN0ZWQgcGhhc2UgU25hcHNob3QAAgRkU25hcHNob3Qgd2FzIHVuYXZhaWxhYmxlLgQNAUVycm9yIG9mIHRoZSBwYWxsZXQgdGhhdCBjYW4gYmUgcmV0dXJuZWQgaW4gcmVzcG9uc2UgdG8gZGlzcGF0Y2hlcy7NDhCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzNFZhbGlkU29sdXRpb24AAQgEWAAAAARZAAEAANEODExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB1Q4EUwAABADdDgEYVmVjPFQ+AADVDgAABAgE2Q4A2Q4QkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllchRpbXBsczxQYXJ0aWFsQmFja2luZ3MAAAgBFHRvdGFsVQEBPEV4dGVuZGVkQmFsYW5jZQABHGJhY2tlcnM4AQx1MzIAAN0OAAAC1Q4A4Q4QkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllchRpbXBscxhTdGF0dXMAAQgcT25nb2luZwQAOAEkUGFnZUluZGV4AAAAHE5vdGhpbmcAAQAA5Q4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHpDgRTAAAEAO0OARhWZWM8VD4AAOkOAAAECATRBQDtDgAAAukOAPEOAAAEDDgEOAD1DgyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHNpZ25lZEhTdWJtaXNzaW9uTWV0YWRhdGEEBFQAABQBHGRlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAEMZmVlVQEBMEJhbGFuY2VPZjxUPgABGHJld2FyZFUBATBCYWxhbmNlT2Y8VD4AATRjbGFpbWVkX3Njb3Jl0QUBNEVsZWN0aW9uU2NvcmUAARRwYWdlc/kOAWhCb3VuZGVkVmVjPGJvb2wsIFQ6OlBhZ2VzPgAA+Q4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFZAQRTAAAEAP0OARhWZWM8VD4AAP0OAAACWQEAAQ8QkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhzaWduZWQYcGFsbGV0FEVycm9yBARUAAEkOFBoYXNlTm90U2lnbmVkAAAEYFRoZSBwaGFzZSBpcyBub3Qgc2lnbmVkLiREdXBsaWNhdGUAAQR4VGhlIHN1Ym1pc3Npb24gaXMgYSBkdXBsaWNhdGUuJFF1ZXVlRnVsbAACBEhUaGUgcXVldWUgaXMgZnVsbC4wQmFkUGFnZUluZGV4AAMEgFRoZSBwYWdlIGluZGV4IGlzIG91dCBvZiBib3VuZHMuNE5vdFJlZ2lzdGVyZWQABAR4VGhlIGFjY291bnQgaXMgbm90IHJlZ2lzdGVyZWQuME5vU3VibWlzc2lvbgAFBFBObyBzdWJtaXNzaW9uIGZvdW5kLjBSb3VuZE5vdE92ZXIABgRYUm91bmQgaXMgbm90IHlldCBvdmVyLjhCYWRXaXRuZXNzRGF0YQAHBGhCYWQgd2l0bmVzcyBkYXRhIHByb3ZpZGVkLlBUb29NYW55SW52dWxuZXJhYmxlcwAIBLBUb28gbWFueSBpbnZ1bG5lcmFibGUgYWNjb3VudHMgYXJlIHByb3ZpZGVkLASAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4FDwxQcGFsbGV0X3N0YWtpbmdfYXN5bmMYbGVkZ2VyNFN0YWtpbmdMZWRnZXIEBFQAABABFHN0YXNoBAEwVDo6QWNjb3VudElkAAEUdG90YWxRAQEwQmFsYW5jZU9mPFQ+AAEYYWN0aXZlUQEBMEJhbGFuY2VPZjxUPgABJHVubG9ja2luZ/UGAfBCb3VuZGVkVmVjPFVubG9ja0NodW5rPEJhbGFuY2VPZjxUPj4sIFQ6Ok1heFVubG9ja2luZ0NodW5rcz4AAAkPCFBwYWxsZXRfc3Rha2luZ19hc3luYyxOb21pbmF0aW9ucwQEVAAADAEcdGFyZ2V0c70OAbRCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgTWF4Tm9taW5hdGlvbnNPZjxUPj4AATBzdWJtaXR0ZWRfaW44ASBFcmFJbmRleAABKHN1cHByZXNzZWRZAQEQYm9vbAAADQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jNEFjdGl2ZUVyYUluZm8AAAgBFGluZGV4OAEgRXJhSW5kZXgAARRzdGFydPwBLE9wdGlvbjx1NjQ+AAARDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAcwEUwAABAC1CQEYVmVjPFQ+AAAVDwgoc3Bfc3Rha2luZ1RQYWdlZEV4cG9zdXJlTWV0YWRhdGEEHEJhbGFuY2UBVQEAEAEUdG90YWxRAQEcQmFsYW5jZQABDG93blEBARxCYWxhbmNlAAE8bm9taW5hdG9yX2NvdW50OAEMdTMyAAEocGFnZV9jb3VudDgBEFBhZ2UAABkPEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0TEJvdW5kZWRFeHBvc3VyZVBhZ2UEBFQAAAQAHQ8BoEV4cG9zdXJlUGFnZTxUOjpBY2NvdW50SWQsIEJhbGFuY2VPZjxUPj4AAB0PCChzcF9zdGFraW5nMEV4cG9zdXJlUGFnZQgkQWNjb3VudElkAQQcQmFsYW5jZQFVAQAIAShwYWdlX3RvdGFsUQEBHEJhbGFuY2UAARhvdGhlcnMhDwGsVmVjPEluZGl2aWR1YWxFeHBvc3VyZTxBY2NvdW50SWQsIEJhbGFuY2U+PgAAIQ8AAAIlDwAlDwgoc3Bfc3Rha2luZ0hJbmRpdmlkdWFsRXhwb3N1cmUIJEFjY291bnRJZAEEHEJhbGFuY2UBVQEACAEMd2hvBAEkQWNjb3VudElkAAEUdmFsdWVRAQEcQmFsYW5jZQAAKQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAE4BFMAAAQAQQQBGFZlYzxUPgAALQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jPEVyYVJld2FyZFBvaW50cwQEVAAACAEUdG90YWw4ASxSZXdhcmRQb2ludAABKGluZGl2aWR1YWwxDwH4Qm91bmRlZEJUcmVlTWFwPFQ6OkFjY291bnRJZCwgUmV3YXJkUG9pbnQsIFQ6Ok1heFZhbGlkYXRvclNldD4AADEPDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfbWFwPEJvdW5kZWRCVHJlZU1hcAwESwEEBFYBOARTAAAEADUPAThCVHJlZU1hcDxLLCBWPgAANQ8EIEJUcmVlTWFwCARLAQQEVgE4AAQAhQUAAAA5DwxQcGFsbGV0X3N0YWtpbmdfYXN5bmMgc2xhc2hpbmc0T2ZmZW5jZVJlY29yZAQkQWNjb3VudElkAQQAFAEgcmVwb3J0ZXKNAQFET3B0aW9uPEFjY291bnRJZD4AATByZXBvcnRlZF9lcmE4ASBFcmFJbmRleAABNGV4cG9zdXJlX3BhZ2U4AQx1MzIAAThzbGFzaF9mcmFjdGlvbh0FARxQZXJiaWxsAAFQcHJpb3Jfc2xhc2hfZnJhY3Rpb24dBQEcUGVyYmlsbAAAPQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAE4BFMAAAQAQQQBGFZlYzxUPgAAQQ8AAAQMOAQ5DwBFDwAABAg4AQcASQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jOFVuYXBwbGllZFNsYXNoBARUAAAUASR2YWxpZGF0b3IEATBUOjpBY2NvdW50SWQAAQxvd25VAQEwQmFsYW5jZU9mPFQ+AAEYb3RoZXJzTQ8BEQFXZWFrQm91bmRlZFZlYzwoVDo6QWNjb3VudElkLCBCYWxhbmNlT2Y8VD4pLCBUOjpNYXhFeHBvc3VyZVBhZ2VTaXplPgABIHJlcG9ydGVyjQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEYcGF5b3V0VQEBMEJhbGFuY2VPZjxUPgAATQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAHFBQRTAAAEAMkFARhWZWM8VD4AAFEPDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB1QYEUwAABADRBgEYVmVjPFQ+AABVDwAABAgdBVUBAFkPCFBwYWxsZXRfc3Rha2luZ19hc3luYzhTbmFwc2hvdFN0YXR1cwQkQWNjb3VudElkAQQBDBxPbmdvaW5nBAAEASRBY2NvdW50SWQAAAAgQ29uc3VtZWQAAQAcV2FpdGluZwACAABdDwxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX3NldDxCb3VuZGVkQlRyZWVTZXQIBFQBBARTAAAEABUNASxCVHJlZVNldDxUPgAAYQ8QUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQsUHJ1bmluZ1N0ZXAAASRARXJhc1N0YWtlcnNQYWdlZAAAAExFcmFzU3Rha2Vyc092ZXJ2aWV3AAEASEVyYXNWYWxpZGF0b3JQcmVmcwACADhDbGFpbWVkUmV3YXJkcwADAExFcmFzVmFsaWRhdG9yUmV3YXJkAAQAQEVyYXNSZXdhcmRQb2ludHMABQBMU2luZ2xlRW50cnlDbGVhbnVwcwAGAExWYWxpZGF0b3JTbGFzaEluRXJhAAcAcEVyYXNWYWxpZGF0b3JJbmNlbnRpdmVXZWlnaHQACAAAZQ8QUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQURXJyb3IEBFQAAZg0Tm90Q29udHJvbGxlcgAABGROb3QgYSBjb250cm9sbGVyIGFjY291bnQuIE5vdFN0YXNoAAEEUE5vdCBhIHN0YXNoIGFjY291bnQuNEFscmVhZHlCb25kZWQAAgRgU3Rhc2ggaXMgYWxyZWFkeSBib25kZWQuNEFscmVhZHlQYWlyZWQAAwR0Q29udHJvbGxlciBpcyBhbHJlYWR5IHBhaXJlZC4wRW1wdHlUYXJnZXRzAAQEYFRhcmdldHMgY2Fubm90IGJlIGVtcHR5LjhEdXBsaWNhdGVJbmRleAAFBEBEdXBsaWNhdGUgaW5kZXguSEludmFsaWRTbGFzaFJlY29yZAAGBFxTbGFzaCByZWNvcmQgbm90IGZvdW5kLkBJbnN1ZmZpY2llbnRCb25kAAcMNQFDYW5ub3QgYm9uZCwgbm9taW5hdGUgb3IgdmFsaWRhdGUgd2l0aCB2YWx1ZSBsZXNzIHRoYW4gdGhlIG1pbmltdW0gZGVmaW5lZCBieT0BZ292ZXJuYW5jZSAoc2VlIGBNaW5WYWxpZGF0b3JCb25kYCBhbmQgYE1pbk5vbWluYXRvckJvbmRgKS4gSWYgdW5ib25kaW5nIGlzIHRoZRUBaW50ZW50aW9uLCBgY2hpbGxgIGZpcnN0IHRvIHJlbW92ZSBvbmUncyByb2xlIGFzIHZhbGlkYXRvci9ub21pbmF0b3IuME5vTW9yZUNodW5rcwAIBJBDYW4gbm90IHNjaGVkdWxlIG1vcmUgdW5sb2NrIGNodW5rcy40Tm9VbmxvY2tDaHVuawAJBKBDYW4gbm90IHJlYm9uZCB3aXRob3V0IHVubG9ja2luZyBjaHVua3MuMEZ1bmRlZFRhcmdldAAKBMhBdHRlbXB0aW5nIHRvIHRhcmdldCBhIHN0YXNoIHRoYXQgc3RpbGwgaGFzIGZ1bmRzLkhJbnZhbGlkRXJhVG9SZXdhcmQACwRYSW52YWxpZCBlcmEgdG8gcmV3YXJkLmhJbnZhbGlkTnVtYmVyT2ZOb21pbmF0aW9ucwAMBHhJbnZhbGlkIG51bWJlciBvZiBub21pbmF0aW9ucy44QWxyZWFkeUNsYWltZWQADQQJAVJld2FyZHMgZm9yIHRoaXMgZXJhIGhhdmUgYWxyZWFkeSBiZWVuIGNsYWltZWQgZm9yIHRoaXMgdmFsaWRhdG9yLixJbnZhbGlkUGFnZQAOBIRObyBub21pbmF0b3JzIGV4aXN0IG9uIHRoaXMgcGFnZS5USW5jb3JyZWN0SGlzdG9yeURlcHRoAA8EwEluY29ycmVjdCBwcmV2aW91cyBoaXN0b3J5IGRlcHRoIGlucHV0IHByb3ZpZGVkLiBCYWRTdGF0ZQAQBDkBSW50ZXJuYWwgc3RhdGUgaGFzIGJlY29tZSBzb21laG93IGNvcnJ1cHRlZCBhbmQgdGhlIG9wZXJhdGlvbiBjYW5ub3QgY29udGludWUuOFRvb01hbnlUYXJnZXRzABEElFRvbyBtYW55IG5vbWluYXRpb24gdGFyZ2V0cyBzdXBwbGllZC4kQmFkVGFyZ2V0ABIEPQFBIG5vbWluYXRpb24gdGFyZ2V0IHdhcyBzdXBwbGllZCB0aGF0IHdhcyBibG9ja2VkIG9yIG90aGVyd2lzZSBub3QgYSB2YWxpZGF0b3IuQENhbm5vdENoaWxsT3RoZXIAEwRVAVRoZSB1c2VyIGhhcyBlbm91Z2ggYm9uZCBhbmQgdGh1cyBjYW5ub3QgYmUgY2hpbGxlZCBmb3JjZWZ1bGx5IGJ5IGFuIGV4dGVybmFsIHBlcnNvbi5EVG9vTWFueU5vbWluYXRvcnMAFAhNAVRoZXJlIGFyZSB0b28gbWFueSBub21pbmF0b3JzIGluIHRoZSBzeXN0ZW0uIEdvdmVybmFuY2UgbmVlZHMgdG8gYWRqdXN0IHRoZSBzdGFraW5ntHNldHRpbmdzIHRvIGtlZXAgdGhpbmdzIHNhZmUgZm9yIHRoZSBydW50aW1lLkRUb29NYW55VmFsaWRhdG9ycwAVCFUBVGhlcmUgYXJlIHRvbyBtYW55IHZhbGlkYXRvciBjYW5kaWRhdGVzIGluIHRoZSBzeXN0ZW0uIEdvdmVybmFuY2UgbmVlZHMgdG8gYWRqdXN0IHRoZdRzdGFraW5nIHNldHRpbmdzIHRvIGtlZXAgdGhpbmdzIHNhZmUgZm9yIHRoZSBydW50aW1lLkBDb21taXNzaW9uVG9vTG93ABYE4ENvbW1pc3Npb24gaXMgdG9vIGxvdy4gTXVzdCBiZSBhdCBsZWFzdCBgTWluQ29tbWlzc2lvbmAuLEJvdW5kTm90TWV0ABcEWFNvbWUgYm91bmQgaXMgbm90IG1ldC5QQ29udHJvbGxlckRlcHJlY2F0ZWQAGAQBAVVzZWQgd2hlbiBhdHRlbXB0aW5nIHRvIHVzZSBkZXByZWNhdGVkIGNvbnRyb2xsZXIgYWNjb3VudCBsb2dpYy5MQ2Fubm90UmVzdG9yZUxlZGdlcgAZBFhDYW5ub3QgcmVzZXQgYSBsZWRnZXIubFJld2FyZERlc3RpbmF0aW9uUmVzdHJpY3RlZAAaBKxQcm92aWRlZCByZXdhcmQgZGVzdGluYXRpb24gaXMgbm90IGFsbG93ZWQuOE5vdEVub3VnaEZ1bmRzABsEnE5vdCBlbm91Z2ggZnVuZHMgYXZhaWxhYmxlIHRvIHdpdGhkcmF3LlxWaXJ0dWFsU3Rha2VyTm90QWxsb3dlZAAcBKhPcGVyYXRpb24gbm90IGFsbG93ZWQgZm9yIHZpcnR1YWwgc3Rha2Vycy48Q2Fubm90UmVhcFN0YXNoAB0E9FN0YXNoIGNvdWxkIG5vdCBiZSByZWFwZWQgYXMgb3RoZXIgcGFsbGV0IG1pZ2h0IGRlcGVuZCBvbiBpdC48QWxyZWFkeU1pZ3JhdGVkAB4ECQFUaGUgc3Rha2Ugb2YgdGhpcyBhY2NvdW50IGlzIGFscmVhZHkgbWlncmF0ZWQgdG8gYEZ1bmdpYmxlYCBob2xkcy40RXJhTm90U3RhcnRlZAAfBFBFcmEgbm90IHlldCBzdGFydGVkLihSZXN0cmljdGVkACAIWQFBY2NvdW50IGlzIHJlc3RyaWN0ZWQgZnJvbSBwYXJ0aWNpcGF0aW9uIGluIHN0YWtpbmcuIFRoaXMgbWF5IGhhcHBlbiBpZiB0aGUgYWNjb3VudCBpc8RzdGFraW5nIGluIGFub3RoZXIgd2F5IGFscmVhZHksIHN1Y2ggYXMgdmlhIHBvb2wudFVuYXBwbGllZFNsYXNoZXNJblByZXZpb3VzRXJhACEILQFVbmFwcGxpZWQgc2xhc2hlcyBpbiB0aGUgcmVjZW50bHkgY29uY2x1ZGVkIGVyYSBpcyBibG9ja2luZyB0aGlzIG9wZXJhdGlvbi6YU2VlIGBDYWxsOjphcHBseV9zbGFzaGAgdG8gYXBwbHkgdGhlbS44RXJhTm90UHJ1bmFibGUAIgSQVGhlIGVyYSBpcyBub3QgZWxpZ2libGUgZm9yIHBydW5pbmcuOENhbmNlbGxlZFNsYXNoACMEzFRoZSBzbGFzaCBoYXMgYmVlbiBjYW5jZWxsZWQgYW5kIGNhbm5vdCBiZSBhcHBsaWVkLkRDb21taXNzaW9uVG9vSGlnaAAkBPhDb21taXNzaW9uIGlzIGhpZ2hlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gYE1heENvbW1pc3Npb25gLlRPcHRpbXVtR3JlYXRlclRoYW5DYXAAJQTMT3B0aW11bSBzZWxmLXN0YWtlIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gaGFyZCBjYXAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmkPCFBwYWxsZXRfc3Rha2luZ19hc3luYyRSZXdhcmRQb3QAAQgcR2VuZXJhbAQAbQ8BKFJld2FyZEtpbmQAAAAMRXJhCAA4ASBFcmFJbmRleAAAbQ8BKFJld2FyZEtpbmQAAQAAbQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jKFJld2FyZEtpbmQAAQg0U3Rha2VyUmV3YXJkcwAAAEhWYWxpZGF0b3JTZWxmU3Rha2UAAQAAcQ8MUHBhbGxldF9zdGFraW5nX2FzeW5jGHJld2FyZExFcmFSZXdhcmRBbGxvY2F0aW9uBBxCYWxhbmNlAVUBAAgBOHN0YWtlcl9yZXdhcmRzVQEBHEJhbGFuY2UAAUx2YWxpZGF0b3JfaW5jZW50aXZlVQEBHEJhbGFuY2UAAHUPAAAECAg4AHkPDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBfQ8EUwAABACBDwEYVmVjPFQ+AAB9Dwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc1BSaW5nQ29tbWl0bWVudFJlY29yZAQEVAAAEAEQcm9vdB0HATBNZW1iZXJzT2Y8VD4AASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAASxzb3VyY2VfdGltZSgBDHU2NAABPHNvdXJjZV9zZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAACBDwAAAn0PAIUPDHxpbmRpdl9wYWxsZXRfbWVtYmVyc19zdWJzY3JpYmVyFHR5cGVzTFJpbmdDb2xsZWN0aW9uU3RhdGUIKE1heE1pc3NpbmcAKE1heERlbGV0ZWQAABABKHJpbmdfY291bnQ4AQx1MzIAATxuZXh0X3JpbmdfaW5kZXg4AQx1MzIAATxtaXNzaW5nX2luZGljZXOJDwGsQm91bmRlZEJUcmVlTWFwPFJpbmdJbmRleCwgdTMyLCBNYXhNaXNzaW5nPgABPGRlbGV0ZWRfaW5kaWNlc5EPAZhCb3VuZGVkQlRyZWVTZXQ8UmluZ0luZGV4LCBNYXhEZWxldGVkPgAAiQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgE4BFMAAAQAjQ8BOEJUcmVlTWFwPEssIFY+AACNDwQgQlRyZWVNYXAIBEsBOARWATgABAC1CQAAAJEPDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAE4BFMAAAQAlQ8BLEJUcmVlU2V0PFQ+AACVDwQgQlRyZWVTZXQEBFQBOAAEAEEEAAAAmQ8MfGluZGl2X3BhbGxldF9tZW1iZXJzX3N1YnNjcmliZXIUdHlwZXNIU3Vic2NyaXB0aW9uU3RhdHVzAAEMIEluYWN0aXZlAAAAGEFjdGl2ZQQBXGluaXRpYWxpemVkX2F0X3NlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIAAQAoVGVybWluYXRlZAACAACdDwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc1hVcGRhdGVzUHJvY2Vzc2luZ1N0YXRlAAAMAVxsYXN0X3Byb2Nlc3NlZF9zZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAFgbGFzdF9iYXRjaF9yZWNlaXZlZF90aW1lKAEMdTY0AAFgbGFzdF9yZXBsYXlfcmVxdWVzdF90aW1lKAEMdTY0AAChDwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc0BOb3RpZmllckVuZHBvaW50AAAIASBsb2NhdGlvbv0BASBMb2NhdGlvbgABMHBhbGxldF9pbmRleAwBCHU4AAClDwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchhwYWxsZXQURXJyb3IEBFQAASQ0WGNtU2VuZEZhaWxlZAAABGBYQ00gbWVzc2FnZSBzZW5kIGZhaWxlZC5QU3Vic2NyaXB0aW9uSW5hY3RpdmUAAQSMU3Vic2NyaXB0aW9uIGlzIGN1cnJlbnRseSBpbmFjdGl2ZS5YU3Vic2NyaXB0aW9uVGVybWluYXRlZAACBJBTdWJzY3JpcHRpb24gaXMgaW4gdGVybWluYXRlZCBzdGF0ZS5kU3Vic2NyaXB0aW9uQWxyZWFkeUFjdGl2ZQADBC0BU3Vic2NyaXB0aW9uIGlzIGFjdGl2ZSB3aXRoIGEgZGlmZmVyZW50IHNlcXVlbmNlOyBtdXN0IGJlIHRlcm1pbmF0ZWQgZmlyc3QuSENvbGxlY3Rpb25Ob3RGb3VuZAAEBNBDb2xsZWN0aW9uIHdpdGggdGhlIGdpdmVuIGlkZW50aWZpZXIgaXMgbm90IHRyYWNrZWQuGE5vUm9vdAAFBLRObyByaW5nIHJvb3Qgc3RvcmVkIGZvciB0aGUgZ2l2ZW4gcmluZyBpbmRleC4wSW52YWxpZFByb29mAAYE0FByb29mIGZhaWxlZCB0byB2ZXJpZnkgYWdhaW5zdCBhbnkgc3RvcmVkIHJpbmcgcm9vdC5MSW52YWxpZFJpbmdFeHBvbmVudAAHBAUBU3RvcmVkIHJpbmcgZXhwb25lbnQgZG9lcyBub3QgY29udmVydCBpbnRvIHRoZSBjcnlwdG8ncyBjYXBhY2l0eS5AUmV2aXNpb25Ob3RGb3VuZAAIBPxSZXF1ZXN0ZWQgcmV2aXNpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIHN0b3JlZCBzbGlkaW5nIHdpbmRvdy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuqQ8AAAQICPEDAK0PDGxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHMYcGFsbGV0FEVycm9yBARUAAE4REludmFsaWRDb2xsZWN0aW9uAAAEfFRoZSBjb2xsZWN0aW9uIGlzIG5vdCBhY2NlcHRlZC4wQWNjb3VudEluVXNlAAEEyFRoZSBhY2NvdW50IGlzIGFscmVhZHkgaW4gdXNlIHVuZGVyIGFub3RoZXIgYWxpYXMuOEludmFsaWRBY2NvdW50AAIEZFRoZSBhY2NvdW50IGlzIG5vdCBrbm93bi5YQWxpYXNBY2NvdW50QWxyZWFkeVNldAADBMBBbGlhcyA8LT4gQWNjb3VudCBpcyBhbHJlYWR5IHNldCBhbmQgdXAgdG8gZGF0ZS44VGltZU91dE9mUmFuZ2UABAR4Q2FsbCBpcyB0b28gbGF0ZSBvciB0b28gZWFybHkuNEFsaWFzTm90U3RhbGUABQRFAVRoZSBhbGlhcyBtYXBwaW5nIGlzIG5vdCBzdGFsZTsgdGhlIHJldmlzaW9uIHN0aWxsIG1hdGNoZXMgdGhlIGN1cnJlbnQgcmluZyByb290LjxDbGVhbnVwVG9vRWFybHkABghBAVRoZSBjbGVhbnVwIGdyYWNlIHBlcmlvZCBoYXMgbm90IGVsYXBzZWQgeWV0OyB0aGUgYWxpYXMgaG9sZGVyIHN0aWxsIGhhcyB0aW1lIHRvHHVwZGF0ZS5ESW5jb25zaXN0ZW50U3RhdGUABwRVAVN0b3JhZ2UgaXMgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gdW5kZXIgbm9ybWFsIG9wZXJhdGlvbi40QWxpYXNGZWVVbnNldAAIBOhUaGUgUEdBUyBmZWUgZm9yIGFsaWFzIHJlZ2lzdHJhdGlvbnMgaGFzIG5vdCBiZWVuIHNldCB5ZXQuPFJlcHJvdmVNaXNtYXRjaAAJCB0BVGhlIHByb29mIHBhc3NlZCB0byBgcmVwcm92ZV9hbGlhc19hY2NvdW50YCBwcm9kdWNlZCBhbiBhbGlhcyAvIGNvbnRleHTYdGhhdCBkb2VzIG5vdCBtYXRjaCB0aGUgc3RvcmVkIG1hcHBpbmcgZm9yIHRoZSBzaWduZXIuQFJpbmdSb290Tm90Rm91bmQACgQFAU5vIHJpbmcgcm9vdCB3YXMgZm91bmQgZm9yIHRoZSByZXF1ZXN0ZWQgY29sbGVjdGlvbiAvIHJpbmcgaW5kZXguNFN0YWxlUmV2aXNpb24ACwQBAVRoZSByZXF1ZXN0ZWQgcmluZyByZXZpc2lvbiBpcyBubyBsb25nZXIgYWNjZXB0ZWQgZm9yIHRoaXMgcmluZy4gQmFkUHJvb2YADASMUmluZy1WUkYgcHJvb2YgdmVyaWZpY2F0aW9uIGZhaWxlZC5MSW52YWxpZFJpbmdDYXBhY2l0eQANBPBUaGUgY29uZmlndXJlZCByaW5nIGNhcGFjaXR5IGlzIGludmFsaWQgZm9yIHRoaXMgY29sbGVjdGlvbi4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQusQ8AAAQI+QMIALUPDERpbmRpdl9wYWxsZXRfcGdhcxhwYWxsZXQURXJyb3IEBFQAARA4QWxyZWFkeUNsYWltZWQAAAT4VGhpcyBhbGlhcyBoYXMgYWxyZWFkeSBiZWVuIHVzZWQgdG8gY2xhaW0gUEdBUyBpbiB0aGlzIHBlcmlvZC44UGdhc01pbnRGYWlsZWQAAQTAVGhlIFBHQVMgYXNzZXQgZG9lcyBub3QgZXhpc3Qgb3IgbWludGluZyBmYWlsZWQuPE5vUmVjb3Jkc0ZvckRheQACBDEBYGNsZWFuX3BnYXNfY2xhaW1fcmVjb3Jkc2Agd2FzIGNhbGxlZCB3aXRoIGEgZGF5IHRoYXQgaGFzIG5vIHN0b3JlZCByZWNvcmRzLkhGaXJzdEFsaWFzTWlzbWF0Y2gAAwhVAVRoZSBgZmlyc3RfYWxpYXNgIHBhc3NlZCB0byBgY2xlYW5fcGdhc19jbGFpbV9yZWNvcmRzYCBkb2VzIG5vdCBtYXRjaCB0aGUgZmlyc3QgYWxpYXOIY3VycmVudGx5IHN0b3JlZCB1bmRlciB0aGUgcHJlZml4LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC65Dww0cGFsbGV0X3Jldml2ZQh2bSBDb2RlSW5mbwQEVAAAGAEUb3duZXIEAThBY2NvdW50SWRPZjxUPgABHGRlcG9zaXRRAQEwQmFsYW5jZU9mPFQ+AAEgcmVmY291bnS0AQx1NjQAASBjb2RlX2xlbjgBDHUzMgABJGNvZGVfdHlwZb0PATBCeXRlY29kZVR5cGUAAURiZWhhdmlvdXJfdmVyc2lvbjgBDHUzMgAAvQ8MNHBhbGxldF9yZXZpdmUIdm0wQnl0ZWNvZGVUeXBlAAEIDFB2bQAAAAxFdm0AAQAAwQ8MNHBhbGxldF9yZXZpdmUcc3RvcmFnZSxBY2NvdW50SW5mbwQEVAAACAEwYWNjb3VudF90eXBlxQ8BOEFjY291bnRUeXBlPFQ+AAEQZHVzdDgBDHUzMgAAxQ8MNHBhbGxldF9yZXZpdmUcc3RvcmFnZSxBY2NvdW50VHlwZQQEVAABCCBDb250cmFjdAQAyQ8BPENvbnRyYWN0SW5mbzxUPgAAAAxFT0EAAQAAyQ8MNHBhbGxldF9yZXZpdmUcc3RvcmFnZTBDb250cmFjdEluZm8EBFQAACABHHRyaWVfaWRFBAEYVHJpZUlkAAEkY29kZV9oYXNoPAE0c3BfY29yZTo6SDI1NgABNHN0b3JhZ2VfYnl0ZXM4AQx1MzIAATRzdG9yYWdlX2l0ZW1zOAEMdTMyAAFQc3RvcmFnZV9ieXRlX2RlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAFQc3RvcmFnZV9pdGVtX2RlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAFQc3RvcmFnZV9iYXNlX2RlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAFIaW1tdXRhYmxlX2RhdGFfbGVuOAEMdTMyAADNDwAABAgEBADRDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AANUPDDRwYWxsZXRfcmV2aXZlHHN0b3JhZ2VERGVsZXRpb25RdWV1ZUl0ZW0EBFQAAAgBHHRyaWVfaWRFBAEYVHJpZUlkAAEoYWNjb3VudF9pZAQBOEFjY291bnRJZE9mPFQ+AADZDww0cGFsbGV0X3Jldml2ZRxzdG9yYWdlUERlbGV0aW9uUXVldWVNYW5hZ2VyBARUAAAIAThpbnNlcnRfY291bnRlcjgBDHUzMgABOGRlbGV0ZV9jb3VudGVyOAEMdTMyAADdDxQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW4UQmxvY2sAAGwBQGJhc2VfZmVlX3Blcl9nYXNBBwEQVTI1NgABNGJsb2JfZ2FzX3VzZWRBBwEQVTI1NgABKGRpZmZpY3VsdHlBBwEQVTI1NgABPGV4Y2Vzc19ibG9iX2dhc0EHARBVMjU2AAEoZXh0cmFfZGF0YeEPARRCeXRlcwABJGdhc19saW1pdEEHARBVMjU2AAEgZ2FzX3VzZWRBBwEQVTI1NgABEGhhc2g8ARBIMjU2AAEobG9nc19ibG9vbeUPASBCeXRlczI1NgABFG1pbmVyOQcBHEFkZHJlc3MAASBtaXhfaGFzaDwBEEgyNTYAARRub25jZe0PARhCeXRlczgAARhudW1iZXJBBwEQVTI1NgABYHBhcmVudF9iZWFjb25fYmxvY2tfcm9vdPkEATBPcHRpb248SDI1Nj4AASxwYXJlbnRfaGFzaDwBEEgyNTYAATRyZWNlaXB0c19yb290PAEQSDI1NgABNHJlcXVlc3RzX2hhc2j5BAEwT3B0aW9uPEgyNTY+AAEwc2hhXzNfdW5jbGVzPAEQSDI1NgABEHNpemVBBwEQVTI1NgABKHN0YXRlX3Jvb3Q8ARBIMjU2AAEkdGltZXN0YW1wQQcBEFUyNTYAAUB0b3RhbF9kaWZmaWN1bHR58Q8BME9wdGlvbjxVMjU2PgABMHRyYW5zYWN0aW9uc/UPAWBIYXNoZXNPclRyYW5zYWN0aW9uSW5mb3MAAUR0cmFuc2FjdGlvbnNfcm9vdDwBEEgyNTYAARh1bmNsZXPAASRWZWM8SDI1Nj4AASx3aXRoZHJhd2Fsc0EQATxWZWM8V2l0aGRyYXdhbD4AAUB3aXRoZHJhd2Fsc19yb290PAEQSDI1NgAA4Q8UNHBhbGxldF9yZXZpdmUMZXZtDGFwaRBieXRlFEJ5dGVzAAAEABgBHFZlYzx1OD4AAOUPFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkQYnl0ZSBCeXRlczI1NgAABADpDwEkW3U4OyAyNTZdAADpDwAAAwABAAAMAO0PFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkQYnl0ZRhCeXRlczgAAAQAWQIBHFt1ODsgOF0AAPEPBBhPcHRpb24EBFQBQQcBCBBOb25lAAAAEFNvbWUEAEEHAAABAAD1DxQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5gSGFzaGVzT3JUcmFuc2FjdGlvbkluZm9zAAEIGEhhc2hlcwQAwAEkVmVjPEgyNTY+AAAAQFRyYW5zYWN0aW9uSW5mb3MEAPkPAVBWZWM8VHJhbnNhY3Rpb25JbmZvPgABAAD5DwAAAv0PAP0PFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbjxUcmFuc2FjdGlvbkluZm8AABgBKGJsb2NrX2hhc2g8ARBIMjU2AAEwYmxvY2tfbnVtYmVyQQcBEFUyNTYAARBmcm9tOQcBHEFkZHJlc3MAARBoYXNoPAEQSDI1NgABRHRyYW5zYWN0aW9uX2luZGV4QQcBEFUyNTYAAUh0cmFuc2FjdGlvbl9zaWduZWQBEAFEVHJhbnNhY3Rpb25TaWduZWQAAAEQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbkRUcmFuc2FjdGlvblNpZ25lZAABFFRUcmFuc2FjdGlvbjc3MDJTaWduZWQEAAUQAVRUcmFuc2FjdGlvbjc3MDJTaWduZWQAAABUVHJhbnNhY3Rpb240ODQ0U2lnbmVkBAAdEAFUVHJhbnNhY3Rpb240ODQ0U2lnbmVkAAEAVFRyYW5zYWN0aW9uMTU1OVNpZ25lZAQAJRABVFRyYW5zYWN0aW9uMTU1OVNpZ25lZAACAFRUcmFuc2FjdGlvbjI5MzBTaWduZWQEADEQAVRUcmFuc2FjdGlvbjI5MzBTaWduZWQAAwBcVHJhbnNhY3Rpb25MZWdhY3lTaWduZWQEADkQAVxUcmFuc2FjdGlvbkxlZ2FjeVNpZ25lZAAEAAAFEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5UVHJhbnNhY3Rpb243NzAyU2lnbmVkAAAUAWR0cmFuc2FjdGlvbl83NzAyX3Vuc2lnbmVkCRABXFRyYW5zYWN0aW9uNzcwMlVuc2lnbmVkAAEEckEHARBVMjU2AAEEc0EHARBVMjU2AAEEdvEPATBPcHRpb248VTI1Nj4AASB5X3Bhcml0eUEHARBVMjU2AAAJEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb243NzAyVW5zaWduZWQAACwBLGFjY2Vzc19saXN0DRABKEFjY2Vzc0xpc3QAAUhhdXRob3JpemF0aW9uX2xpc3QVEAFsVmVjPEF1dGhvcml6YXRpb25MaXN0RW50cnk+AAEgY2hhaW5faWRBBwEQVTI1NgABDGdhc0EHARBVMjU2AAEUaW5wdXThDwEUQnl0ZXMAATxtYXhfZmVlX3Blcl9nYXNBBwEQVTI1NgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc0EHARBVMjU2AAEUbm9uY2VBBwEQVTI1NgABCHRvOQcBHEFkZHJlc3MAARhyI3R5cGUMASxUeXBlRWlwNzcwMgABFHZhbHVlQQcBEFUyNTYAAA0QAAACERAAERAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuPEFjY2Vzc0xpc3RFbnRyeQAACAEcYWRkcmVzczkHARxBZGRyZXNzAAEwc3RvcmFnZV9rZXlzwAEkVmVjPEgyNTY+AAAVEAAAAhkQABkQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblhBdXRob3JpemF0aW9uTGlzdEVudHJ5AAAYASBjaGFpbl9pZEEHARBVMjU2AAEcYWRkcmVzczkHARxBZGRyZXNzAAEUbm9uY2VBBwEQVTI1NgABIHlfcGFyaXR5QQcBEFUyNTYAAQRyQQcBEFUyNTYAAQRzQQcBEFUyNTYAAB0QFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblRUcmFuc2FjdGlvbjQ4NDRTaWduZWQAABABZHRyYW5zYWN0aW9uXzQ4NDRfdW5zaWduZWQhEAFcVHJhbnNhY3Rpb240ODQ0VW5zaWduZWQAAQRyQQcBEFUyNTYAAQRzQQcBEFUyNTYAASB5X3Bhcml0eUEHARBVMjU2AAAhEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb240ODQ0VW5zaWduZWQAADABLGFjY2Vzc19saXN0DRABKEFjY2Vzc0xpc3QAAVRibG9iX3ZlcnNpb25lZF9oYXNoZXPAASRWZWM8SDI1Nj4AASBjaGFpbl9pZEEHARBVMjU2AAEMZ2FzQQcBEFUyNTYAARRpbnB1dOEPARRCeXRlcwABUG1heF9mZWVfcGVyX2Jsb2JfZ2FzQQcBEFUyNTYAATxtYXhfZmVlX3Blcl9nYXNBBwEQVTI1NgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc0EHARBVMjU2AAEUbm9uY2VBBwEQVTI1NgABCHRvOQcBHEFkZHJlc3MAARhyI3R5cGUMASxUeXBlRWlwNDg0NAABFHZhbHVlQQcBEFUyNTYAACUQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblRUcmFuc2FjdGlvbjE1NTlTaWduZWQAABQBZHRyYW5zYWN0aW9uXzE1NTlfdW5zaWduZWQpEAFcVHJhbnNhY3Rpb24xNTU5VW5zaWduZWQAAQRyQQcBEFUyNTYAAQRzQQcBEFUyNTYAAQR28Q8BME9wdGlvbjxVMjU2PgABIHlfcGFyaXR5QQcBEFUyNTYAACkQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblxUcmFuc2FjdGlvbjE1NTlVbnNpZ25lZAAALAEsYWNjZXNzX2xpc3QNEAEoQWNjZXNzTGlzdAABIGNoYWluX2lkQQcBEFUyNTYAAQxnYXNBBwEQVTI1NgABJGdhc19wcmljZUEHARBVMjU2AAEUaW5wdXThDwEUQnl0ZXMAATxtYXhfZmVlX3Blcl9nYXNBBwEQVTI1NgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc0EHARBVMjU2AAEUbm9uY2VBBwEQVTI1NgABCHRvLRABPE9wdGlvbjxBZGRyZXNzPgABGHIjdHlwZQwBLFR5cGVFaXAxNTU5AAEUdmFsdWVBBwEQVTI1NgAALRAEGE9wdGlvbgQEVAE5BwEIEE5vbmUAAAAQU29tZQQAOQcAAAEAADEQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblRUcmFuc2FjdGlvbjI5MzBTaWduZWQAABQBZHRyYW5zYWN0aW9uXzI5MzBfdW5zaWduZWQ1EAFcVHJhbnNhY3Rpb24yOTMwVW5zaWduZWQAAQRyQQcBEFUyNTYAAQRzQQcBEFUyNTYAAQR28Q8BME9wdGlvbjxVMjU2PgABIHlfcGFyaXR5QQcBEFUyNTYAADUQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblxUcmFuc2FjdGlvbjI5MzBVbnNpZ25lZAAAJAEsYWNjZXNzX2xpc3QNEAEoQWNjZXNzTGlzdAABIGNoYWluX2lkQQcBEFUyNTYAAQxnYXNBBwEQVTI1NgABJGdhc19wcmljZUEHARBVMjU2AAEUaW5wdXThDwEUQnl0ZXMAARRub25jZUEHARBVMjU2AAEIdG8tEAE8T3B0aW9uPEFkZHJlc3M+AAEYciN0eXBlDAEsVHlwZUVpcDI5MzAAARR2YWx1ZUEHARBVMjU2AAA5EBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb25MZWdhY3lTaWduZWQAABABbHRyYW5zYWN0aW9uX2xlZ2FjeV91bnNpZ25lZD0QAWRUcmFuc2FjdGlvbkxlZ2FjeVVuc2lnbmVkAAEEckEHARBVMjU2AAEEc0EHARBVMjU2AAEEdkEHARBVMjU2AAA9EBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5kVHJhbnNhY3Rpb25MZWdhY3lVbnNpZ25lZAAAIAEgY2hhaW5faWTxDwEwT3B0aW9uPFUyNTY+AAEMZ2FzQQcBEFUyNTYAASRnYXNfcHJpY2VBBwEQVTI1NgABFGlucHV04Q8BFEJ5dGVzAAEUbm9uY2VBBwEQVTI1NgABCHRvLRABPE9wdGlvbjxBZGRyZXNzPgABGHIjdHlwZQwBKFR5cGVMZWdhY3kAARR2YWx1ZUEHARBVMjU2AABBEAAAAkUQAEUQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbihXaXRoZHJhd2FsAAAQARxhZGRyZXNzOQcBHEFkZHJlc3MAARhhbW91bnRBBwEQVTI1NgABFGluZGV4QQcBEFUyNTYAATx2YWxpZGF0b3JfaW5kZXhBBwEQVTI1NgAASRAAAAJNEABNEBA0cGFsbGV0X3Jldml2ZQxldm0oYmxvY2tfaGFzaDhSZWNlaXB0R2FzSW5mbwAACAEgZ2FzX3VzZWRBBwEQVTI1NgABTGVmZmVjdGl2ZV9nYXNfcHJpY2VBBwEQVTI1NgAAURAUNHBhbGxldF9yZXZpdmUMZXZtKGJsb2NrX2hhc2g0YmxvY2tfYnVpbGRlclhFdGhlcmV1bUJsb2NrQnVpbGRlcklSBARUAAAgAWB0cmFuc2FjdGlvbl9yb290X2J1aWxkZXJVEAFgSW5jcmVtZW50YWxIYXNoQnVpbGRlcklSAAFUcmVjZWlwdHNfcm9vdF9idWlsZGVyVRABYEluY3JlbWVudGFsSGFzaEJ1aWxkZXJJUgABQGJhc2VfZmVlX3Blcl9nYXNBBwEQVTI1NgABPGJsb2NrX2dhc19saW1pdEEHARBVMjU2AAEgZ2FzX3VzZWRBBwEQVTI1NgABKGxvZ3NfYmxvb23pDwFYW3U4OyBCTE9PTV9TSVpFX0JZVEVTXQABJHR4X2hhc2hlc8ABJFZlYzxIMjU2PgABIGdhc19pbmZvSRABTFZlYzxSZWNlaXB0R2FzSW5mbz4AAFUQFDRwYWxsZXRfcmV2aXZlDGV2bShibG9ja19oYXNoMGhhc2hfYnVpbGRlcmBJbmNyZW1lbnRhbEhhc2hCdWlsZGVySVIAACgBDGtleRgBHFZlYzx1OD4AASh2YWx1ZV90eXBlDAEIdTgAATRidWlsZGVyX3ZhbHVlGAEcVmVjPHU4PgABFHN0YWNrNAEwVmVjPFZlYzx1OD4+AAEsc3RhdGVfbWFza3NZEAEgVmVjPHUxNj4AASh0cmVlX21hc2tzWRABIFZlYzx1MTY+AAEoaGFzaF9tYXNrc1kQASBWZWM8dTE2PgABSHN0b3JlZF9pbl9kYXRhYmFzZVkBARBib29sAAEccmxwX2J1ZhgBHFZlYzx1OD4AARRpbmRleCgBDHU2NAAAWRAAAALRAwBdEAQYT3B0aW9uBARUATABCBBOb25lAAAAEFNvbWUEADAAAAEAAGEQDDRwYWxsZXRfcmV2aXZlFGRlYnVnNERlYnVnU2V0dGluZ3MAABABdGFsbG93X3VubGltaXRlZF9jb250cmFjdF9zaXplWQEBEGJvb2wAATxieXBhc3NfZWlwXzM2MDdZAQEQYm9vbAABIHB2bV9sb2dzWQEBEGJvb2wAAWRkaXNhYmxlX2V4ZWN1dGlvbl90cmFjaW5nWQEBEGJvb2wAAGUQDDRwYWxsZXRfcmV2aXZlGHBhbGxldBRFcnJvcgQEVAAB6DxJbnZhbGlkU2NoZWR1bGUAAQQZAUludmFsaWQgc2NoZWR1bGUgc3VwcGxpZWQsIGUuZy4gd2l0aCB6ZXJvIHdlaWdodCBvZiBhIGJhc2ljIG9wZXJhdGlvbi5ASW52YWxpZENhbGxGbGFncwACBDUBSW52YWxpZCBjb21iaW5hdGlvbiBvZiBmbGFncyBzdXBwbGllZCB0byBgc2VhbF9jYWxsYCBvciBgc2VhbF9kZWxlZ2F0ZV9jYWxsYC4gT3V0T2ZHYXMAAwS4VGhlIGV4ZWN1dGVkIGNvbnRyYWN0IGV4aGF1c3RlZCBpdHMgZ2FzIGxpbWl0LjhUcmFuc2ZlckZhaWxlZAAECDUBUGVyZm9ybWluZyB0aGUgcmVxdWVzdGVkIHRyYW5zZmVyIGZhaWxlZC4gUHJvYmFibHkgYmVjYXVzZSB0aGVyZSBpc24ndCBlbm91Z2iUZnJlZSBiYWxhbmNlIGluIHRoZSBzZW5kZXIncyBhY2NvdW50LkxNYXhDYWxsRGVwdGhSZWFjaGVkAAUIIQFQZXJmb3JtaW5nIGEgY2FsbCB3YXMgZGVuaWVkIGJlY2F1c2UgdGhlIGNhbGxpbmcgZGVwdGggcmVhY2hlZCB0aGUgbGltaXSUb2Ygd2hhdCBpcyBzcGVjaWZpZWQgaW4gdGhlIHNjaGVkdWxlLkBDb250cmFjdE5vdEZvdW5kAAYEvE5vIGNvbnRyYWN0IHdhcyBmb3VuZCBhdCB0aGUgc3BlY2lmaWVkIGFkZHJlc3MuMENvZGVOb3RGb3VuZAAHBMRObyBjb2RlIGNvdWxkIGJlIGZvdW5kIGF0IHRoZSBzdXBwbGllZCBjb2RlIGhhc2guQENvZGVJbmZvTm90Rm91bmQACATYTm8gY29kZSBpbmZvIGNvdWxkIGJlIGZvdW5kIGF0IHRoZSBzdXBwbGllZCBjb2RlIGhhc2guLE91dE9mQm91bmRzAAkEJQFBIGJ1ZmZlciBvdXRzaWRlIG9mIHNhbmRib3ggbWVtb3J5IHdhcyBwYXNzZWQgdG8gYSBjb250cmFjdCBBUEkgZnVuY3Rpb24uOERlY29kaW5nRmFpbGVkAAoEKQFJbnB1dCBwYXNzZWQgdG8gYSBjb250cmFjdCBBUEkgZnVuY3Rpb24gZmFpbGVkIHRvIGRlY29kZSBhcyBleHBlY3RlZCB0eXBlLjxDb250cmFjdFRyYXBwZWQACwSIQ29udHJhY3QgdHJhcHBlZCBkdXJpbmcgZXhlY3V0aW9uLjRWYWx1ZVRvb0xhcmdlAAwE9EV2ZW50IGJvZHkgb3Igc3RvcmFnZSBpdGVtIGV4Y2VlZHMgW2BsaW1pdHM6OlNUT1JBR0VfQllURVNgXS5gVGVybWluYXRlZFdoaWxlUmVlbnRyYW50AA0IGQFUZXJtaW5hdGlvbiBvZiBhIGNvbnRyYWN0IGlzIG5vdCBhbGxvd2VkIHdoaWxlIHRoZSBjb250cmFjdCBpcyBhbHJlYWR54G9uIHRoZSBjYWxsIHN0YWNrLiBDYW4gYmUgdHJpZ2dlcmVkIGJ5IGBzZWFsX3Rlcm1pbmF0ZWAuOElucHV0Rm9yd2FyZGVkAA4EQQFgc2VhbF9jYWxsYCBmb3J3YXJkZWQgdGhpcyBjb250cmFjdHMgaW5wdXQuIEl0IHRoZXJlZm9yZSBpcyBubyBsb25nZXIgYXZhaWxhYmxlLjRUb29NYW55VG9waWNzAA8EHQFUaGUgYW1vdW50IG9mIHRvcGljcyBwYXNzZWQgdG8gYHNlYWxfZGVwb3NpdF9ldmVudHNgIGV4Y2VlZHMgdGhlIGxpbWl0LkREdXBsaWNhdGVDb250cmFjdAASBMhBIGNvbnRyYWN0IHdpdGggdGhlIHNhbWUgQWNjb3VudElkIGFscmVhZHkgZXhpc3RzLlxUZXJtaW5hdGVkSW5Db25zdHJ1Y3RvcgATDLhBIGNvbnRyYWN0IHNlbGYgZGVzdHJ1Y3RlZCBpbiBpdHMgY29uc3RydWN0b3IuANBUaGlzIGNhbiBiZSB0cmlnZ2VyZWQgYnkgYSBjYWxsIHRvIGBzZWFsX3Rlcm1pbmF0ZWAuQFJlZW50cmFuY2VEZW5pZWQAFAQNAUEgY2FsbCB0cmllZCB0byBpbnZva2UgYSBjb250cmFjdCB0aGF0IGlzIGZsYWdnZWQgYXMgbm9uLXJlZW50cmFudC48UmVlbnRlcmVkUGFsbGV0ABUELQFBIGNvbnRyYWN0IGNhbGxlZCBpbnRvIHRoZSBydW50aW1lIHdoaWNoIHRoZW4gY2FsbGVkIGJhY2sgaW50byB0aGlzIHBhbGxldC5EU3RhdGVDaGFuZ2VEZW5pZWQAFgRNAUEgY29udHJhY3QgYXR0ZW1wdGVkIHRvIGludm9rZSBhIHN0YXRlIG1vZGlmeWluZyBBUEkgd2hpbGUgYmVpbmcgaW4gcmVhZC1vbmx5IG1vZGUucFN0b3JhZ2VEZXBvc2l0Tm90RW5vdWdoRnVuZHMAFwQhAU9yaWdpbiBkb2Vzbid0IGhhdmUgZW5vdWdoIGJhbGFuY2UgdG8gcGF5IHRoZSByZXF1aXJlZCBzdG9yYWdlIGRlcG9zaXRzLnBTdG9yYWdlRGVwb3NpdExpbWl0RXhoYXVzdGVkABgEDQFNb3JlIHN0b3JhZ2Ugd2FzIGNyZWF0ZWQgdGhhbiBhbGxvd2VkIGJ5IHRoZSBzdG9yYWdlIGRlcG9zaXQgbGltaXQuJENvZGVJblVzZQAZBEkBQ29kZSByZW1vdmFsIHdhcyBkZW5pZWQgYmVjYXVzZSB0aGUgY29kZSBpcyBzdGlsbCBpbiB1c2UgYnkgYXQgbGVhc3Qgb25lIGNvbnRyYWN0LkBDb250cmFjdFJldmVydGVkABoQJQFUaGUgY29udHJhY3QgcmFuIHRvIGNvbXBsZXRpb24gYnV0IGRlY2lkZWQgdG8gcmV2ZXJ0IGl0cyBzdG9yYWdlIGNoYW5nZXMuSQFQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZXJyb3IgaXMgb25seSByZXR1cm5lZCBmcm9tIGV4dHJpbnNpY3MuIFdoZW4gY2FsbGVkIGRpcmVjdGx5XQFvciB2aWEgUlBDIGFuIGBPa2Agd2lsbCBiZSByZXR1cm5lZC4gSW4gdGhpcyBjYXNlIHRoZSBjYWxsZXIgbmVlZHMgdG8gaW5zcGVjdCB0aGUgZmxhZ3PEdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSByZXZlcnNpb24gaGFzIHRha2VuIHBsYWNlLjBDb2RlUmVqZWN0ZWQAGxAZAVRoZSBjb250cmFjdCBmYWlsZWQgdG8gY29tcGlsZSBvciBpcyBtaXNzaW5nIHRoZSBjb3JyZWN0IGVudHJ5IHBvaW50cy4AUQFBIG1vcmUgZGV0YWlsZWQgZXJyb3IgY2FuIGJlIGZvdW5kIG9uIHRoZSBub2RlIGNvbnNvbGUgaWYgZGVidWcgbWVzc2FnZXMgYXJlIGVuYWJsZWScYnkgc3VwcGx5aW5nIGAtbHJ1bnRpbWU6OnJldml2ZT1kZWJ1Z2AuMEJsb2JUb29MYXJnZQAcBA0BVGhlIGNvZGUgYmxvYiBzdXBwbGllZCBpcyBsYXJnZXIgdGhhbiBbYGxpbWl0czo6Y29kZTo6QkxPQl9CWVRFU2BdLlBTdGF0aWNNZW1vcnlUb29MYXJnZQAdBOBUaGUgY29udHJhY3QgZGVjbGFyZXMgdG9vIG11Y2ggbWVtb3J5IChybyArIHJ3ICsgc3RhY2spLkhCYXNpY0Jsb2NrVG9vTGFyZ2UAHgT8VGhlIHByb2dyYW0gY29udGFpbnMgYSBiYXNpYyBibG9jayB0aGF0IGlzIGxhcmdlciB0aGFuIGFsbG93ZWQuSEludmFsaWRJbnN0cnVjdGlvbgAfBLBUaGUgcHJvZ3JhbSBjb250YWlucyBhbiBpbnZhbGlkIGluc3RydWN0aW9uLnhNYXhEZWxlZ2F0ZURlcGVuZGVuY2llc1JlYWNoZWQAIAQVAVRoZSBjb250cmFjdCBoYXMgcmVhY2hlZCBpdHMgbWF4aW11bSBudW1iZXIgb2YgZGVsZWdhdGUgZGVwZW5kZW5jaWVzLmhEZWxlZ2F0ZURlcGVuZGVuY3lOb3RGb3VuZAAhBBUBVGhlIGRlcGVuZGVuY3kgd2FzIG5vdCBmb3VuZCBpbiB0aGUgY29udHJhY3QncyBkZWxlZ2F0ZSBkZXBlbmRlbmNpZXMufERlbGVnYXRlRGVwZW5kZW5jeUFscmVhZHlFeGlzdHMAIgT4VGhlIGNvbnRyYWN0IGFscmVhZHkgZGVwZW5kcyBvbiB0aGUgZ2l2ZW4gZGVsZWdhdGUgZGVwZW5kZW5jeS6EQ2Fubm90QWRkU2VsZkFzRGVsZWdhdGVEZXBlbmRlbmN5ACMEKQFDYW4gbm90IGFkZCBhIGRlbGVnYXRlIGRlcGVuZGVuY3kgdG8gdGhlIGNvZGUgaGFzaCBvZiB0aGUgY29udHJhY3QgaXRzZWxmLlRPdXRPZlRyYW5zaWVudFN0b3JhZ2UAJASsQ2FuIG5vdCBhZGQgbW9yZSBkYXRhIHRvIHRyYW5zaWVudCBzdG9yYWdlLjhJbnZhbGlkU3lzY2FsbAAlBFUBVGhlIGNvbnRyYWN0IHRyaWVkIHRvIGNhbGwgYSBzeXNjYWxsIHdoaWNoIGRvZXMgbm90IGV4aXN0IChhdCBpdHMgY3VycmVudCBhcGkgbGV2ZWwpLkxJbnZhbGlkU3RvcmFnZUZsYWdzACYEBQFJbnZhbGlkIHN0b3JhZ2UgZmxhZ3Mgd2VyZSBwYXNzZWQgdG8gb25lIG9mIHRoZSBzdG9yYWdlIHN5c2NhbGxzLjxFeGVjdXRpb25GYWlsZWQAJwQpAVBvbGthVk0gZmFpbGVkIGR1cmluZyBjb2RlIGV4ZWN1dGlvbi4gUHJvYmFibHkgZHVlIHRvIGEgbWFsZm9ybWVkIHByb2dyYW0uXEJhbGFuY2VDb252ZXJzaW9uRmFpbGVkACgEmEZhaWxlZCB0byBjb252ZXJ0IGEgVTI1NiB0byBhIEJhbGFuY2UuWEludmFsaWRJbW11dGFibGVBY2Nlc3MAKggxAUltbXV0YWJsZSBkYXRhIGNhbiBvbmx5IGJlIHNldCBkdXJpbmcgZGVwbG95cyBhbmQgb25seSBiZSByZWFkIGR1cmluZyBjYWxscy41AUFkZGl0aW9uYWxseSwgaXQgaXMgb25seSB2YWxpZCB0byBzZXQgdGhlIGRhdGEgb25jZSBhbmQgaXQgbXVzdCBub3QgYmUgZW1wdHkuPEFjY291bnRVbm1hcHBlZAArDFEBQW4gYEFjY291bnRJRDMyYCBhY2NvdW50IHRyaWVkIHRvIGludGVyYWN0IHdpdGggdGhlIHBhbGxldCB3aXRob3V0IGhhdmluZyBhIG1hcHBpbmcuACkBQ2FsbCBbYFBhbGxldDo6bWFwX2FjY291bnRgXSBpbiBvcmRlciB0byBjcmVhdGUgYSBtYXBwaW5nIGZvciB0aGUgYWNjb3VudC5QQWNjb3VudEFscmVhZHlNYXBwZWQALAS8VHJpZWQgdG8gbWFwIGFuIGFjY291bnQgdGhhdCBpcyBhbHJlYWR5IG1hcHBlZC5kSW52YWxpZEdlbmVyaWNUcmFuc2FjdGlvbgAtBNhUaGUgdHJhbnNhY3Rpb24gdXNlZCB0byBkcnktcnVuIGEgY29udHJhY3QgaXMgaW52YWxpZC5cUmVmY291bnRPdmVyT3JVbmRlcmZsb3cALgTIVGhlIHJlZmNvdW50IG9mIGEgY29kZSBlaXRoZXIgb3ZlciBvciB1bmRlcmZsb3dlZC5wVW5zdXBwb3J0ZWRQcmVjb21waWxlQWRkcmVzcwAvBHxVbnN1cHBvcnRlZCBwcmVjb21waWxlIGFkZHJlc3MuQENhbGxEYXRhVG9vTGFyZ2UAMATAVGhlIGNhbGxkYXRhIGV4Y2VlZHMgW2BsaW1pdHM6OkNBTExEQVRBX0JZVEVTYF0uSFJldHVybkRhdGFUb29MYXJnZQAxBMxUaGUgcmV0dXJuIGRhdGEgZXhjZWVkcyBbYGxpbWl0czo6Q0FMTERBVEFfQllURVNgXS4sSW52YWxpZEp1bXAAMgQ5AUludmFsaWQganVtcCBkZXN0aW5hdGlvbi4gRHluYW1pYyBqdW1wcyBwb2ludHMgdG8gaW52YWxpZCBub3QganVtcGRlc3Qgb3Bjb2RlLjhTdGFja1VuZGVyZmxvdwAzBLhBdHRlbXB0aW5nIHRvIHBvcCBhIHZhbHVlIGZyb20gYW4gZW1wdHkgc3RhY2suNFN0YWNrT3ZlcmZsb3cANAS0QXR0ZW1wdGluZyB0byBwdXNoIGEgdmFsdWUgb250byBhIGZ1bGwgc3RhY2suNFR4RmVlT3ZlcmRyYXcANQwRAVRvbyBtdWNoIGRlcG9zaXQgd2FzIGRyYXduIGZyb20gdGhlIHNoYXJlZCB0eGZlZSBhbmQgZGVwb3NpdCBjcmVkaXQuADEBVGhpcyBoYXBwZW5zIGlmIHRoZSBwYXNzZWQgYGdhc2AgaW5zaWRlIHRoZSBldGhlcmV1bSB0cmFuc2FjdGlvbiBpcyB0b28gbG93LmhFdm1Db25zdHJ1Y3Rvck5vbkVtcHR5RGF0YQA2DNxXaGVuIGNhbGxpbmcgYW4gRVZNIGNvbnN0cnVjdG9yIGBkYXRhYCBoYXMgdG8gYmUgZW1wdHkuAFkBRVZNIGNvbnN0cnVjdG9ycyBkbyBub3QgYWNjZXB0IGRhdGEuIFRoZWlyIGlucHV0IGRhdGEgaXMgcGFydCBvZiB0aGUgY29kZSBibG9iIGl0c2VsZi5YRXZtQ29uc3RydWN0ZWRGcm9tSGFzaAA3EMRUcmllZCB0byBjb25zdHJ1Y3QgYW4gRVZNIGNvbnRyYWN0IHZpYSBjb2RlIGhhc2guACEBRVZNIGNvbnRyYWN0cyBjYW4gb25seSBiZSBpbnN0YW50aWF0ZWQgdmlhIGNvZGUgdXBsb2FkIGFzIG5vIGluaXRjb2RlIGlzQHN0b3JlZCBvbi1jaGFpbi5sU3RvcmFnZVJlZnVuZE5vdEVub3VnaEZ1bmRzADgMIQFUaGUgY29udHJhY3QgZG9lcyBub3QgaGF2ZSBlbm91Z2ggYmFsYW5jZSB0byByZWZ1bmQgdGhlIHN0b3JhZ2UgZGVwb3NpdC4APQFUaGlzIGlzIGEgYnVnIGFuZCBzaG91bGQgbmV2ZXIgaGFwcGVuLiBJdCBtZWFucyB0aGUgYWNjb3VudGluZyBnb3Qgb3V0IG9mIHN5bmMuTFN0b3JhZ2VSZWZ1bmRMb2NrZWQAORBdAVRoaXMgbWVhbnMgdGhlcmUgYXJlIGxvY2tzIG9uIHRoZSBjb250cmFjdHMgc3RvcmFnZSBkZXBvc2l0IHRoYXQgcHJldmVudHMgcmVmdW5kaW5nIGl0LgA9AVRoaXMgd291bGQgYmUgdGhlIGNhc2UgaWYgdGhlIGNvbnRyYWN0IHVzZWQgaXRzIHN0b3JhZ2UgZGVwb3NpdHMgZm9yIGdvdmVybmFuY2X0b3Igb3RoZXIgcGFsbGV0cyB0aGF0IGFsbG93IGNyZWF0aW5nIGxvY2tzIG92ZXIgaGVsZCBiYWxhbmNlLmBQcmVjb21waWxlRGVsZWdhdGVEZW5pZWQAQBD8Q2FsbGVkIGEgcHJlLWNvbXBpbGUgdGhhdCBpcyBub3QgYWxsb3dlZCB0byBiZSBkZWxlZ2F0ZSBjYWxsZWQuACUBU29tZSBwcmUtY29tcGlsZSBmdW5jdGlvbnMgd2lsbCB0cmFwIHRoZSBjYWxsZXIgY29udGV4dCBpZiBiZWluZyBkZWxlZ2F0ZdBjYWxsZWQgb3IgaWYgdGhlaXIgY2FsbGVyIHdhcyBiZWluZyBkZWxlZ2F0ZSBjYWxsZWQuTEVjZHNhUmVjb3ZlcnlGYWlsZWQAQQQ9AUVDRFNBIHB1YmxpYyBrZXkgcmVjb3ZlcnkgZmFpbGVkLiBNb3N0IHByb2JhYmx5IHdyb25nIHJlY292ZXJ5IGlkIG9yIHNpZ25hdHVyZS5IQXV0b01hcHBpbmdFbmFibGVkAEIE4E1hbnVhbCBtYXBwaW5nIGlzIGRpc2FibGVkIHdoZW4gYXV0by1tYXBwaW5nIGlzIGVuYWJsZWQuVFBlbmRpbmdEZXBvc2l0Q2xlYW51cABDDBEBQSBjb250cmFjdCBjYW5ub3QgYmUgY3JlYXRlZCBhdCB0aGlzIGFkZHJlc3M6IGl0IHN0aWxsIGhhcyB1bmNsZWFyZWRNAVtgTmF0aXZlRGVwb3NpdE9mYF0gZW50cmllcyBmcm9tIGEgcHJldmlvdXNseSB0ZXJtaW5hdGVkIGNvbnRyYWN0IHRoYXQgdGhlIGRlbGV0aW9uaHF1ZXVlIGhhcyBub3QgeWV0IGRyYWluZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmkQDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlc0hSZWdpc3RyYXRpb25SZWNvcmQEBFQAAAgBKGNvbGxlY3Rpb25tEAEoQ29sbGVjdGlvbgABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAG0QDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlcyhDb2xsZWN0aW9uAAEIGFBlb3BsZQAAAChQZW9wbGVMaXRlAAEAAHEQDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRhwYWxsZXQURXJyb3IEBFQAAShEQWxyZWFkeVJlZ2lzdGVyZWQAAASgVGhlIGFsaWFzIGhhcyBhbHJlYWR5IHJlZ2lzdGVyZWQgYSBuYW1lLkhDb250cmFjdENhbGxGYWlsZWQAAQj8VGhlIGNvbnRyYWN0IGNhbGwgZmFpbGVkIChub24tcmV2ZXJ0OiBvdXQtb2YtZ2FzLCBsb3ctbGV2ZWwsIG9yUHVuZGVjb2RhYmxlIHJldmVydCkuOENvbnRyYWN0UmV2ZXJ0BAB1EAFARGlzcGF0Y2hlclJldmVydAACCBEBQ29udHJhY3QgcmV2ZXJ0ZWQgd2l0aCBhIHR5cGVkIGVycm9yIGZyb20gYFJvb3RHYXRld2F5RGlzcGF0Y2hlcmAgb3KgdGhlIGBEb3Ruc1BvcENvbnRyb2xsZXJgIGl0IGZvcndhcmRzIHRvLixJbnZhbGlkTmFtZQADCPRUaGUgbmFtZSBpcyBpbnZhbGlkIChlbXB0eSBvciB0b28gbG9uZywgb3IgZG9lcyBub3QgbWF0Y2ggdGhlgHJlcXVpcmVkIEROUy9saXRlLWxhYmVsIGZvcm1hdCkuWE5vQXR0ZXN0YXRpb25BbGxvd2FuY2UABATQVGhlIGF0dGVzdGVyIGhhcyBubyBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgcmVtYWluaW5nLmxJbnZhbGlkQXR0ZXN0YXRpb25TaWduYXR1cmUABQSUVGhlIGNhbmRpZGF0ZSdzIHNpZ25hdHVyZSBpcyBpbnZhbGlkLmxSZXNlcnZhdGlvblNpZ25hdHVyZUV4cGlyZWQABgQdAVRoZSByZXNlcnZhdGlvbiBzaWduYXR1cmUgaXMgb2xkZXIgdGhhbiBbYENvbmZpZzo6TWF4VmFsaWRpdHlTZWNvbmRzYF0ueFJlc2VydmF0aW9uU2lnbmF0dXJlRnJvbUZ1dHVyZQAHCPxUaGUgcmVzZXJ2YXRpb24gc2lnbmF0dXJlIGNsYWltcyB0byBoYXZlIGJlZW4gY3JlYXRlZCBtb3JlIHRoYW7MW2BDb25maWc6Ok1heFZhbGlkaXR5U2Vjb25kc2BdIGFoZWFkIG9mIGNoYWluIHRpbWUuRE5vdExpdGVMYWJlbE93bmVyAAgICQFUaGUgYExpbms6OkxpdGVVc2VybmFtZWAgdGFyZ2V0IGlzIG5vdCBvd25lZCBieSB0aGUgY2FsbGVyIChvciBoYXN4bm8gb24tY2hhaW4gb3duZXJzaGlwIHJlY29yZCkuXERpc3BhdGNoZXJBZGRyZXNzTm90U2V0AAkE+FRoZSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYCBjb250cmFjdCBhZGRyZXNzIGhhcyBub3QgYmVlbiBzZXQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LnUQDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlc0BEaXNwYXRjaGVyUmV2ZXJ0AAEgHE5vdFJvb3QAAAAoTm90R2F0ZXdheQABAEBJbnZhbGlkTGl0ZUxhYmVsAAIAQEludmFsaWRCYXNlTGFiZWwAAwBMTm9BY3RpdmVSZXNlcnZhdGlvbgAEACRRdWV1ZUZ1bGwABQA8QWxyZWFkeVJlc2VydmVkAAYAJE5vdEhvbGRlcgAHAAB5EAx8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbhhwYWxsZXQUVXNhZ2UIHEJhbGFuY2UBVQEsQmxvY2tOdW1iZXIBOAAIARB1c2VkVQEBHEJhbGFuY2UAASBhdF9ibG9jazgBLEJsb2NrTnVtYmVyAAB9EAx8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbhhwYWxsZXQURXJyb3IEBFQAAQgcTm9Vc2FnZQAABIBUaGUgb3JpZ2luIGhhcyBubyB1c2FnZSB0cmFja2VkLhxOb3RaZXJvAAEEWFRoZSB1c2FnZSBpcyBub3QgemVyby4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQugRAMLHBhbGxldF9zdWRvGHBhbGxldBRFcnJvcgQEVAABBCxSZXF1aXJlU3VkbwAABIBTZW5kZXIgbXVzdCBiZSB0aGUgU3VkbyBhY2NvdW50LgRoRXJyb3IgZm9yIHRoZSBTdWRvIHBhbGxldC6FEAhIc3BfY29uc2Vuc3VzX3Nsb3RzMFNsb3REdXJhdGlvbgAABAAoAQx1NjQAAIkQEChzcF9ydW50aW1lHGdlbmVyaWMUYmxvY2skTGF6eUJsb2NrCBhIZWFkZXIBXCRFeHRyaW5zaWMB+QkACAEYaGVhZGVyXAEYSGVhZGVyAAEoZXh0cmluc2ljc40QAVBWZWM8T3BhcXVlRXh0cmluc2ljPgAAjRAAAAKREACREAgoc3BfcnVudGltZTxPcGFxdWVFeHRyaW5zaWMAAAQAGAEcVmVjPHU4PgAAlRAIKHNwX3J1bnRpbWVYRXh0cmluc2ljSW5jbHVzaW9uTW9kZQABCDRBbGxFeHRyaW5zaWNzAAAANE9ubHlJbmhlcmVudHMAAQAAmRAIHHNwX2NvcmU4T3BhcXVlTWV0YWRhdGEAAAQAGAEcVmVjPHU4PgAAnRAEGE9wdGlvbgQEVAGZEAEIEE5vbmUAAAAQU29tZQQAmRAAAAEAAKEQBBhSZXN1bHQIBFQBHQgERQGlEAEICE9rBAAdCAAAAAAMRXJyBAClEAAAAQAApRAMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlgVHJhbnNhY3Rpb25WYWxpZGl0eUVycm9yAAEIHEludmFsaWQEAKkQAUhJbnZhbGlkVHJhbnNhY3Rpb24AAAAcVW5rbm93bgQArRABSFVua25vd25UcmFuc2FjdGlvbgABAACpEAwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhJbnZhbGlkVHJhbnNhY3Rpb24AATQQQ2FsbAAAABxQYXltZW50AAEAGEZ1dHVyZQACABRTdGFsZQADACBCYWRQcm9vZgAEAERBbmNpZW50QmlydGhCbG9jawAFAERFeGhhdXN0c1Jlc291cmNlcwAGABhDdXN0b20EAAwBCHU4AAcAMEJhZE1hbmRhdG9yeQAIAExNYW5kYXRvcnlWYWxpZGF0aW9uAAkAJEJhZFNpZ25lcgAKAFRJbmRldGVybWluYXRlSW1wbGljaXQACwA0VW5rbm93bk9yaWdpbgAMAACtEAwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhVbmtub3duVHJhbnNhY3Rpb24AAQwwQ2Fubm90TG9va3VwAAAATE5vVW5zaWduZWRWYWxpZGF0b3IAAQAYQ3VzdG9tBAAMAQh1OAACAACxEAgwc3BfaW5oZXJlbnRzMEluaGVyZW50RGF0YQAABAEQZGF0YbUQAZRCVHJlZU1hcDxJbmhlcmVudElkZW50aWZpZXIsIFZlYzx1OD4+AAC1EAQgQlRyZWVNYXAIBEsBWQIEVgEYAAQAuRAAAAC5EAAAAr0QAL0QAAAECFkCGADBEAgwc3BfaW5oZXJlbnRzUENoZWNrSW5oZXJlbnRzUmVzdWx0AAAMARBva2F5WQEBEGJvb2wAASxmYXRhbF9lcnJvclkBARBib29sAAEYZXJyb3JzsRABMEluaGVyZW50RGF0YQAAxRAMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlEVHJhbnNhY3Rpb25Tb3VyY2UAAQwcSW5CbG9jawAAABRMb2NhbAABACBFeHRlcm5hbAACAADJEAQYUmVzdWx0CARUAc0QBEUBpRABCAhPawQAzRAAAAAADEVycgQApRAAAAEAAM0QDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5QFZhbGlkVHJhbnNhY3Rpb24AABQBIHByaW9yaXR5KAFMVHJhbnNhY3Rpb25Qcmlvcml0eQABIHJlcXVpcmVzNAFMVmVjPFRyYW5zYWN0aW9uVGFnPgABIHByb3ZpZGVzNAFMVmVjPFRyYW5zYWN0aW9uVGFnPgABJGxvbmdldml0eSgBUFRyYW5zYWN0aW9uTG9uZ2V2aXR5AAEkcHJvcGFnYXRlWQEBEGJvb2wAANEQDChzcF9zZXNzaW9uLHJ1bnRpbWVfYXBpaE9wYXF1ZUdlbmVyYXRlZFNlc3Npb25LZXlzAAAIARBrZXlzGAEcVmVjPHU4PgABFHByb29mGAEcVmVjPHU4PgAA1RAEGE9wdGlvbgQEVAHZEAEIEE5vbmUAAAAQU29tZQQA2RAAAAEAANkQAAAC3RAA3RAAAAQIGGkLAOEQDDRmcmFtZV9zdXBwb3J0OHZpZXdfZnVuY3Rpb25zOFZpZXdGdW5jdGlvbklkAAAIARhwcmVmaXhdAgEgW3U4OyAxNl0AARhzdWZmaXhdAgEgW3U4OyAxNl0AAOUQBBhSZXN1bHQIBFQBGARFAekQAQgIT2sEABgAAAAADEVycgQA6RAAAAEAAOkQDDRmcmFtZV9zdXBwb3J0OHZpZXdfZnVuY3Rpb25zZFZpZXdGdW5jdGlvbkRpc3BhdGNoRXJyb3IAAQw4Tm90SW1wbGVtZW50ZWQAAAAgTm90Rm91bmQEAOEQAThWaWV3RnVuY3Rpb25JZAABABRDb2RlYwACAADtEAxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXNMUnVudGltZURpc3BhdGNoSW5mbwgcQmFsYW5jZQFVARhXZWlnaHQBEQEADAEYd2VpZ2h0EQEBGFdlaWdodAABFGNsYXNz8QcBNERpc3BhdGNoQ2xhc3MAASxwYXJ0aWFsX2ZlZVUBARxCYWxhbmNlAADxEAxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXMoRmVlRGV0YWlscwQcQmFsYW5jZQFVAQAIATRpbmNsdXNpb25fZmVl9RABdE9wdGlvbjxJbmNsdXNpb25GZWU8QmFsYW5jZT4+AAEMdGlwVQEBHEJhbGFuY2UAAPUQBBhPcHRpb24EBFQB+RABCBBOb25lAAAAEFNvbWUEAPkQAAABAAD5EAxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXMwSW5jbHVzaW9uRmVlBBxCYWxhbmNlAVUBAAwBIGJhc2VfZmVlVQEBHEJhbGFuY2UAARxsZW5fZmVlVQEBHEJhbGFuY2UAAUxhZGp1c3RlZF93ZWlnaHRfZmVlVQEBHEJhbGFuY2UAAP0QBBhSZXN1bHQIBFQBAREERQEFEQEICE9rBAABEQAAAAAMRXJyBAAFEQAAAQAAAREAAAKhAwAFEQxAeGNtX3J1bnRpbWVfYXBpcxBmZWVzFEVycm9yAAEYNFVuaW1wbGVtZW50ZWQAAABkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABAExXZWlnaHROb3RDb21wdXRhYmxlAAIATFVuaGFuZGxlZFhjbVZlcnNpb24AAwA0QXNzZXROb3RGb3VuZAAEAChVbnJvdXRhYmxlAAUAAAkRBBhSZXN1bHQIBFQBEQEERQEFEQEICE9rBAARAQAAAAAMRXJyBAAFEQAAAQAADREEGFJlc3VsdAgEVAFVAQRFAQURAQgIT2sEAFUBAAAAAAxFcnIEAAURAAABAAAREQQYUmVzdWx0CARUAW0DBEUBBREBCAhPawQAbQMAAAAADEVycgQABREAAAEAABURBBhSZXN1bHQIBFQBGREERQExEQEICE9rBAAZEQAAAAAMRXJyBAAxEQAAAQAAGREMQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkRDYWxsRHJ5UnVuRWZmZWN0cwQURXZlbnQB5QcAEAFAZXhlY3V0aW9uX3Jlc3VsdCEJAWhEaXNwYXRjaFJlc3VsdFdpdGhQb3N0SW5mbwABOGVtaXR0ZWRfZXZlbnRzHREBKFZlYzxFdmVudD4AASRsb2NhbF94Y20hEQFgT3B0aW9uPFZlcnNpb25lZFhjbTwoKT4+AAE4Zm9yd2FyZGVkX3hjbXMlEQG8VmVjPChWZXJzaW9uZWRMb2NhdGlvbiwgVmVjPFZlcnNpb25lZFhjbTwoKT4+KT4AAB0RAAAC5QcAIREEGE9wdGlvbgQEVAExAgEIEE5vbmUAAAAQU29tZQQAMQIAAAEAACURAAACKREAKREAAAQIqQEtEQAtEQAAAjECADERDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW4URXJyb3IAAQg0VW5pbXBsZW1lbnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAADURBBhSZXN1bHQIBFQBOREERQExEQEICE9rBAA5EQAAAAAMRXJyBAAxEQAAAQAAOREMQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkBYY21EcnlSdW5FZmZlY3RzBBRFdmVudAHlBwAMAUBleGVjdXRpb25fcmVzdWx0pQgBHE91dGNvbWUAAThlbWl0dGVkX2V2ZW50cx0RAShWZWM8RXZlbnQ+AAE4Zm9yd2FyZGVkX3hjbXMlEQG8VmVjPChWZXJzaW9uZWRMb2NhdGlvbiwgVmVjPFZlcnNpb25lZFhjbTwoKT4+KT4AAD0RBBhSZXN1bHQIBFQBBARFAUERAQgIT2sEAAQAAAAADEVycgQAQREAAAEAAEERDEB4Y21fcnVudGltZV9hcGlzLGNvbnZlcnNpb25zFEVycm9yAAEILFVuc3VwcG9ydGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQAARREIDHhjbThWZXJzaW9uZWRBc3NldAABDAhWMwQASQIBOHYzOjpNdWx0aUFzc2V0AAMACFY0BAC9AgEkdjQ6OkFzc2V0AAQACFY1BAAJAwEkdjU6OkFzc2V0AAUAAEkRBBhSZXN1bHQIBFQBWQEERQFNEQEICE9rBABZAQAAAAAMRXJyBABNEQAAAQAATREMQHhjbV9ydW50aW1lX2FwaXM0dHJ1c3RlZF9xdWVyeRRFcnJvcgABCHhWZXJzaW9uZWRBc3NldENvbnZlcnNpb25GYWlsZWQAAACEVmVyc2lvbmVkTG9jYXRpb25Db252ZXJzaW9uRmFpbGVkAAEAAFERBBhSZXN1bHQIBFQBDQwERQFVEQEICE9rBAANDAAAAAAMRXJyBABVEQAAAQAAVREMQHhjbV9ydW50aW1lX2FwaXNIYXV0aG9yaXplZF9hbGlhc2VzFEVycm9yAAEEfExvY2F0aW9uVmVyc2lvbkNvbnZlcnNpb25GYWlsZWQAAAAAWREEGFJlc3VsdAgEVAFZAQRFAVURAQgIT2sEAFkBAAAAAAxFcnIEAFURAAABAABdEQQYUmVzdWx0CARUAW0DBEUBYREBCAhPawQAbQMAAAAADEVycgQAYREAAAEAAGERDDRhc3NldHNfY29tbW9uLHJ1bnRpbWVfYXBpUEZ1bmdpYmxlc0FjY2Vzc0Vycm9yAAEIXEFzc2V0SWRDb252ZXJzaW9uRmFpbGVkAAAAfEFtb3VudFRvQmFsYW5jZUNvbnZlcnNpb25GYWlsZWQAAQAAZREIXGN1bXVsdXNfcHJpbWl0aXZlc19jb3JlNENvbGxhdGlvbkluZm8AABgBPHVwd2FyZF9tZXNzYWdlczQBSFZlYzxVcHdhcmRNZXNzYWdlPgABTGhvcml6b250YWxfbWVzc2FnZXNxCgFgVmVjPE91dGJvdW5kSHJtcE1lc3NhZ2U+AAFMbmV3X3ZhbGlkYXRpb25fY29kZWkRAYxPcHRpb248cmVsYXlfY2hhaW46OlZhbGlkYXRpb25Db2RlPgABbHByb2Nlc3NlZF9kb3dud2FyZF9tZXNzYWdlczgBDHUzMgABOGhybXBfd2F0ZXJtYXJrOAFgcmVsYXlfY2hhaW46OkJsb2NrTnVtYmVyAAEkaGVhZF9kYXRhTAEgSGVhZERhdGEAAGkRBBhPcHRpb24EBFQBbREBCBBOb25lAAAAEFNvbWUEAG0RAAABAABtEQx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlczhWYWxpZGF0aW9uQ29kZQAABAAYARxWZWM8dTg+AABxEQQYUmVzdWx0CARUARAERQHBCQEICE9rBAAQAAAAAAxFcnIEAMEJAAABAAB1EQQYT3B0aW9uBARUAcEJAQgQTm9uZQAAABBTb21lBADBCQAAAQAAeREAAALBCQB9EQQYT3B0aW9uBARUAV0NAQgQTm9uZQAAABBTb21lBABdDQAAAQAAgREMYHN5c3RlbV9wYXJhY2hhaW5zX2NvbW1vbhBhcGlzNEluZmxhdGlvbkluZm8AAAgBIGlzc3VhbmNlhREBXHNwX3J1bnRpbWU6OlBlcnF1aW50aWxsAAEkbmV4dF9taW50XQ0B8Chwb2xrYWRvdF9wcmltaXRpdmVzOjpCYWxhbmNlLCBwb2xrYWRvdF9wcmltaXRpdmVzOjpCYWxhbmNlKQAAhREMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncyxQZXJxdWludGlsbAAABAAoAQx1NjQAAIkRDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXM4Q29udHJhY3RSZXN1bHQIBFIBjREcQmFsYW5jZQFVAQAYATx3ZWlnaHRfY29uc3VtZWQRAQEYV2VpZ2h0AAE8d2VpZ2h0X3JlcXVpcmVkEQEBGFdlaWdodAABPHN0b3JhZ2VfZGVwb3NpdJURAVxTdG9yYWdlRGVwb3NpdDxCYWxhbmNlPgABTG1heF9zdG9yYWdlX2RlcG9zaXSVEQFcU3RvcmFnZURlcG9zaXQ8QmFsYW5jZT4AATBnYXNfY29uc3VtZWRVAQEcQmFsYW5jZQABGHJlc3VsdJkRAWBSZXN1bHQ8UiwgRGlzcGF0Y2hFcnJvcj4AAI0RDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXM8RXhlY1JldHVyblZhbHVlAAAIARRmbGFnc5ERASxSZXR1cm5GbGFncwABEGRhdGEYARxWZWM8dTg+AACREQxIcGFsbGV0X3Jldml2ZV91YXBpFGZsYWdzLFJldHVybkZsYWdzAAAEARBiaXRzOAEMdTMyAACVEQw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzOFN0b3JhZ2VEZXBvc2l0BBxCYWxhbmNlAVUBAQgYUmVmdW5kBABVAQEcQmFsYW5jZQAAABhDaGFyZ2UEAFUBARxCYWxhbmNlAAEAAJkRBBhSZXN1bHQIBFQBjREERQH5BwEICE9rBACNEQAAAAAMRXJyBAD5BwAAAQAAnREMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlcxBDb2RlAAEIGFVwbG9hZAQAGAEcVmVjPHU4PgAAACBFeGlzdGluZwQAPAE0c3BfY29yZTo6SDI1NgABAAChEQw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzOENvbnRyYWN0UmVzdWx0CARSAaURHEJhbGFuY2UBVQEAGAE8d2VpZ2h0X2NvbnN1bWVkEQEBGFdlaWdodAABPHdlaWdodF9yZXF1aXJlZBEBARhXZWlnaHQAATxzdG9yYWdlX2RlcG9zaXSVEQFcU3RvcmFnZURlcG9zaXQ8QmFsYW5jZT4AAUxtYXhfc3RvcmFnZV9kZXBvc2l0lREBXFN0b3JhZ2VEZXBvc2l0PEJhbGFuY2U+AAEwZ2FzX2NvbnN1bWVkVQEBHEJhbGFuY2UAARhyZXN1bHSpEQFgUmVzdWx0PFIsIERpc3BhdGNoRXJyb3I+AAClEQw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzWEluc3RhbnRpYXRlUmV0dXJuVmFsdWUAAAgBGHJlc3VsdI0RATxFeGVjUmV0dXJuVmFsdWUAARBhZGRyOQcBEEgxNjAAAKkRBBhSZXN1bHQIBFQBpREERQH5BwEICE9rBAClEQAAAAAMRXJyBAD5BwAAAQAArREUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuSEdlbmVyaWNUcmFuc2FjdGlvbgAAQAEsYWNjZXNzX2xpc3SxEQFIT3B0aW9uPEFjY2Vzc0xpc3Q+AAFIYXV0aG9yaXphdGlvbl9saXN0FRABbFZlYzxBdXRob3JpemF0aW9uTGlzdEVudHJ5PgABVGJsb2JfdmVyc2lvbmVkX2hhc2hlc8ABJFZlYzxIMjU2PgABFGJsb2JztREBKFZlYzxCeXRlcz4AASBjaGFpbl9pZPEPATBPcHRpb248VTI1Nj4AARBmcm9tLRABPE9wdGlvbjxBZGRyZXNzPgABDGdhc/EPATBPcHRpb248VTI1Nj4AASRnYXNfcHJpY2XxDwEwT3B0aW9uPFUyNTY+AAEUaW5wdXS5EQEsSW5wdXRPckRhdGEAAVBtYXhfZmVlX3Blcl9ibG9iX2dhc/EPATBPcHRpb248VTI1Nj4AATxtYXhfZmVlX3Blcl9nYXPxDwEwT3B0aW9uPFUyNTY+AAFgbWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2Fz8Q8BME9wdGlvbjxVMjU2PgABFG5vbmNl8Q8BME9wdGlvbjxVMjU2PgABCHRvLRABPE9wdGlvbjxBZGRyZXNzPgABGHIjdHlwZcERATBPcHRpb248Qnl0ZT4AARR2YWx1ZfEPATBPcHRpb248VTI1Nj4AALERBBhPcHRpb24EBFQBDRABCBBOb25lAAAAEFNvbWUEAA0QAAABAAC1EQAAAuEPALkRFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbixJbnB1dE9yRGF0YQAACAEUaW5wdXS9EQE0T3B0aW9uPEJ5dGVzPgABEGRhdGG9EQE0T3B0aW9uPEJ5dGVzPgAAvREEGE9wdGlvbgQEVAHhDwEIEE5vbmUAAAAQU29tZQQA4Q8AAAEAAMERBBhPcHRpb24EBFQBxREBCBBOb25lAAAAEFNvbWUEAMURAAABAADFERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpEGJ5dGUQQnl0ZQAABAAMAQh1OAAAyREEGFJlc3VsdAgEVAHNEQRFAdERAQgIT2sEAM0RAAAAAAxFcnIEANERAAABAADNEQw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzPEV0aFRyYW5zYWN0SW5mbwQcQmFsYW5jZQFVAQAUATx3ZWlnaHRfcmVxdWlyZWQRAQEYV2VpZ2h0AAE8c3RvcmFnZV9kZXBvc2l0VQEBHEJhbGFuY2UAAUxtYXhfc3RvcmFnZV9kZXBvc2l0VQEBHEJhbGFuY2UAARxldGhfZ2FzQQcBEFUyNTYAARBkYXRhGAEcVmVjPHU4PgAA0REMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlc0BFdGhUcmFuc2FjdEVycm9yAAEIEERhdGEEABgBHFZlYzx1OD4AAAAcTWVzc2FnZQQAwQkBGFN0cmluZwABAADVERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpJHJwY190eXBlczBEcnlSdW5Db25maWcEGE1vbWVudAEoAAwBSHRpbWVzdGFtcF9vdmVycmlkZfwBOE9wdGlvbjxNb21lbnQ+AAFYcGVyZm9ybV9iYWxhbmNlX2NoZWNrc9kRATBPcHRpb248Ym9vbD4AATxzdGF0ZV9vdmVycmlkZXPdEQFgT3B0aW9uPFN0YXRlT3ZlcnJpZGVTZXQ+AADZEQQYT3B0aW9uBARUAVkBAQgQTm9uZQAAABBTb21lBABZAQAAAQAA3REEGE9wdGlvbgQEVAHhEQEIEE5vbmUAAAAQU29tZQQA4REAAAEAAOERFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbkBTdGF0ZU92ZXJyaWRlU2V0AAAEAOURAYBCVHJlZU1hcDxBZGRyZXNzLCBTdGF0ZU92ZXJyaWRlPgAA5REEIEJUcmVlTWFwCARLATkHBFYB6REABAABEgAAAOkRFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbjRTdGF0ZU92ZXJyaWRlAAAUARxiYWxhbmNl8Q8BME9wdGlvbjxVMjU2PgABFG5vbmNl8Q8BME9wdGlvbjxVMjU2PgABEGNvZGW9EQE0T3B0aW9uPEJ5dGVzPgABHHN0b3JhZ2XtEQFcT3B0aW9uPFN0b3JhZ2VPdmVycmlkZT4AAWhtb3ZlX3ByZWNvbXBpbGVfdG9fYWRkcmVzcy0QATxPcHRpb248QWRkcmVzcz4AAO0RBBhPcHRpb24EBFQB8REBCBBOb25lAAAAEFNvbWUEAPERAAABAADxERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW48U3RvcmFnZU92ZXJyaWRlAAEIFFN0YXRlBAD1EQFQQlRyZWVNYXA8SDI1NiwgSDI1Nj4AAAAkU3RhdGVEaWZmBAD1EQFQQlRyZWVNYXA8SDI1NiwgSDI1Nj4AAQAA9REEIEJUcmVlTWFwCARLATwEVgE8AAQA+REAAAD5EQAAAv0RAP0RAAAECDw8AAESAAACBRIABRIAAAQIOQfpEQAJEgQYUmVzdWx0CARUAUEHBEUB0REBCAhPawQAQQcAAAAADEVycgQA0REAAAEAAA0SBBhSZXN1bHQIBFQBEQEERQHREQEICE9rBAARAQAAAAAMRXJyBADREQAAAQAAERIEGFJlc3VsdAgEVAEVEgRFAfkHAQgIT2sEABUSAAAAAAxFcnIEAPkHAAABAAAVEgw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzVENvZGVVcGxvYWRSZXR1cm5WYWx1ZQQcQmFsYW5jZQFVAQAIASRjb2RlX2hhc2g8ATRzcF9jb3JlOjpIMjU2AAEcZGVwb3NpdFUBARxCYWxhbmNlAAAZEgQYUmVzdWx0CARUAUkBBEUBHRIBCAhPawQASQEAAAAADEVycgQAHRIAAAEAAB0SDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXNMQ29udHJhY3RBY2Nlc3NFcnJvcgABDCxEb2VzbnRFeGlzdAAAAERLZXlEZWNvZGluZ0ZhaWxlZAABAEhTdG9yYWdlV3JpdGVGYWlsZWQEAPkHATREaXNwYXRjaEVycm9yAAIAACESFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzKFRyYWNlclR5cGUAAQwoQ2FsbFRyYWNlcgQAJRIBYE9wdGlvbjxDYWxsVHJhY2VyQ29uZmlnPgAAADhQcmVzdGF0ZVRyYWNlcgQALRIBcE9wdGlvbjxQcmVzdGF0ZVRyYWNlckNvbmZpZz4AAQA8RXhlY3V0aW9uVHJhY2VyBAA1EgF0T3B0aW9uPEV4ZWN1dGlvblRyYWNlckNvbmZpZz4AAgAAJRIEGE9wdGlvbgQEVAEpEgEIEE5vbmUAAAAQU29tZQQAKRIAAAEAACkSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzQENhbGxUcmFjZXJDb25maWcAAAgBJHdpdGhfbG9nc1kBARBib29sAAE0b25seV90b3BfY2FsbFkBARBib29sAAAtEgQYT3B0aW9uBARUATESAQgQTm9uZQAAABBTb21lBAAxEgAAAQAAMRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXNQUHJlc3RhdGVUcmFjZXJDb25maWcAAAwBJGRpZmZfbW9kZVkBARBib29sAAE8ZGlzYWJsZV9zdG9yYWdlWQEBEGJvb2wAATBkaXNhYmxlX2NvZGVZAQEQYm9vbAAANRIEGE9wdGlvbgQEVAE5EgEIEE5vbmUAAAAQU29tZQQAORIAAAEAADkSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzVEV4ZWN1dGlvblRyYWNlckNvbmZpZwAAHAE0ZW5hYmxlX21lbW9yeVkBARBib29sAAE0ZGlzYWJsZV9zdGFja1kBARBib29sAAE8ZGlzYWJsZV9zdG9yYWdlWQEBEGJvb2wAAUhlbmFibGVfcmV0dXJuX2RhdGFZAQEQYm9vbAABXGRpc2FibGVfc3lzY2FsbF9kZXRhaWxzWQEBEGJvb2wAARRsaW1pdPwBLE9wdGlvbjx1NjQ+AAFEbWVtb3J5X3dvcmRfbGltaXQ4AQx1MzIAAD0SAAACQRIAQRIAAAQIOEUSAEUSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzFFRyYWNlAAEMEENhbGwEAEkSASRDYWxsVHJhY2UAAAAgUHJlc3RhdGUEAF0SATRQcmVzdGF0ZVRyYWNlAAEAJEV4ZWN1dGlvbgQAfRIBOEV4ZWN1dGlvblRyYWNlAAIAAEkSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzJENhbGxUcmFjZQAANAEQZnJvbTkHARBIMTYwAAEMZ2FzKAEMdTY0AAEgZ2FzX3VzZWQoAQx1NjQAAQh0bzkHARBIMTYwAAEUaW5wdXThDwEUQnl0ZXMAARhvdXRwdXThDwEUQnl0ZXMAARRlcnJvcnURAThPcHRpb248U3RyaW5nPgABNHJldmVydF9yZWFzb251EQE4T3B0aW9uPFN0cmluZz4AARRjYWxsc00SAThWZWM8Q2FsbFRyYWNlPgABEGxvZ3NREgEwVmVjPENhbGxMb2c+AAEUdmFsdWXxDwEwT3B0aW9uPFUyNTY+AAEkY2FsbF90eXBlWRIBIENhbGxUeXBlAAFAY2hpbGRfY2FsbF9jb3VudDgBDHUzMgAATRIAAAJJEgBREgAAAlUSAFUSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzHENhbGxMb2cAABABHGFkZHJlc3M5BwEQSDE2MAABGHRvcGljc8ABJFZlYzxIMjU2PgABEGRhdGHhDwEUQnl0ZXMAASBwb3NpdGlvbjgBDHUzMgAAWRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXMgQ2FsbFR5cGUAARgQQ2FsbAAAAChTdGF0aWNDYWxsAAEAMERlbGVnYXRlQ2FsbAACABhDcmVhdGUAAwAcQ3JlYXRlMgAEADBTZWxmZGVzdHJ1Y3QABQAAXRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXM0UHJlc3RhdGVUcmFjZQABCCBQcmVzdGF0ZQQAYRIBhEJUcmVlTWFwPEgxNjAsIFByZXN0YXRlVHJhY2VJbmZvPgAAACBEaWZmTW9kZQgBDHByZWESAYRCVHJlZU1hcDxIMTYwLCBQcmVzdGF0ZVRyYWNlSW5mbz4AARBwb3N0YRIBhEJUcmVlTWFwPEgxNjAsIFByZXN0YXRlVHJhY2VJbmZvPgABAABhEgQgQlRyZWVNYXAIBEsBOQcEVgFlEgAEAHUSAAAAZRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXNEUHJlc3RhdGVUcmFjZUluZm8AABABHGJhbGFuY2XxDwEwT3B0aW9uPFUyNTY+AAEUbm9uY2XgASxPcHRpb248dTMyPgABEGNvZGW9EQE0T3B0aW9uPEJ5dGVzPgABHHN0b3JhZ2VpEgF4QlRyZWVNYXA8Qnl0ZXMsIE9wdGlvbjxCeXRlcz4+AABpEgQgQlRyZWVNYXAIBEsB4Q8EVgG9EQAEAG0SAAAAbRIAAAJxEgBxEgAABAjhD70RAHUSAAACeRIAeRIAAAQIOQdlEgB9EhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlczhFeGVjdXRpb25UcmFjZQAAGAEMZ2FzKAEMdTY0AAE8d2VpZ2h0X2NvbnN1bWVkEQEBGFdlaWdodAABQGJhc2VfY2FsbF93ZWlnaHQRAQEYV2VpZ2h0AAEYZmFpbGVkWQEBEGJvb2wAATByZXR1cm5fdmFsdWXhDwEUQnl0ZXMAASxzdHJ1Y3RfbG9nc4ESAUhWZWM8RXhlY3V0aW9uU3RlcD4AAIESAAAChRIAhRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXM0RXhlY3V0aW9uU3RlcAAAHAEMZ2FztAEMdTY0AAEgZ2FzX2Nvc3S0AQx1NjQAASx3ZWlnaHRfY29zdBEBARhXZWlnaHQAARRkZXB0aNEDAQx1MTYAASxyZXR1cm5fZGF0YeEPARRCeXRlcwABFGVycm9ydREBOE9wdGlvbjxTdHJpbmc+AAEQa2luZIkSAURFeGVjdXRpb25TdGVwS2luZAAAiRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXNERXhlY3V0aW9uU3RlcEtpbmQAAQgkRVZNT3Bjb2RlFAEIcGNgAQx1MzIAAQhvcAwBCHU4AAEUc3RhY2u1EQEoVmVjPEJ5dGVzPgABGG1lbW9yebURAShWZWM8Qnl0ZXM+AAEcc3RvcmFnZY0SAchPcHRpb248YWxsb2M6OmNvbGxlY3Rpb25zOjpCVHJlZU1hcDxCeXRlcywgQnl0ZXM+PgAAAChQVk1TeXNjYWxsDAEIb3AMAQh1OAABEGFyZ3ONDgEgVmVjPHU2ND4AASByZXR1cm5lZPwBLE9wdGlvbjx1NjQ+AAEAAI0SBBhPcHRpb24EBFQBkRIBCBBOb25lAAAAEFNvbWUEAJESAAABAACREgQgQlRyZWVNYXAIBEsB4Q8EVgHhDwAEAJUSAAAAlRIAAAKZEgCZEgAABAjhD+EPAJ0SBBhPcHRpb24EBFQBRRIBCBBOb25lAAAAEFNvbWUEAEUSAAABAAChEgQYUmVzdWx0CARUAUUSBEUB0REBCAhPawQARRIAAAAADEVycgQA0REAAAEAAKUSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkkcnBjX3R5cGVzNFRyYWNpbmdDb25maWcAAAQBPHN0YXRlX292ZXJyaWRlc90RAWBPcHRpb248U3RhdGVPdmVycmlkZVNldD4AAKkSBBhSZXN1bHQIBFQBrRIERQGxEgEICE9rBACtEgAAAAAMRXJyBACxEgAAAQAArRIAAAQIVQE4ALESDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXNYQmFsYW5jZUNvbnZlcnNpb25FcnJvcgABCBRWYWx1ZQAAABBEdXN0AAEAALUSCHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lMFJ1bnRpbWVFcnJvcgAByBhTeXN0ZW0EAPEJAXBmcmFtZV9zeXN0ZW06OkVycm9yPFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAgQoBvGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW06OkVycm9yPFJ1bnRpbWU+AAEAIFByZWltYWdlBAClCgF8cGFsbGV0X3ByZWltYWdlOjpFcnJvcjxSdW50aW1lPgAFACRTY2hlZHVsZXIEAL0KAYBwYWxsZXRfc2NoZWR1bGVyOjpFcnJvcjxSdW50aW1lPgAGAFBNdWx0aUJsb2NrTWlncmF0aW9ucwQAwQoBhHBhbGxldF9taWdyYXRpb25zOjpFcnJvcjxSdW50aW1lPgAIACBCYWxhbmNlcwQAFQsBfHBhbGxldF9iYWxhbmNlczo6RXJyb3I8UnVudGltZT4ACgAcVmVzdGluZwQAMQsBeHBhbGxldF92ZXN0aW5nOjpFcnJvcjxSdW50aW1lPgAOABhDbGFpbXMEADULAXRwYWxsZXRfY2xhaW1zOjpFcnJvcjxSdW50aW1lPgAPAERDb2xsYXRvclNlbGVjdGlvbgQATQsBpHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb246OkVycm9yPFJ1bnRpbWU+ABUAHFNlc3Npb24EAG0LAXhwYWxsZXRfc2Vzc2lvbjo6RXJyb3I8UnVudGltZT4AFgAkWGNtcFF1ZXVlBACpCwGkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTo6RXJyb3I8UnVudGltZT4AHgAsUG9sa2Fkb3RYY20EABEMAWhwYWxsZXRfeGNtOjpFcnJvcjxSdW50aW1lPgAfADBNZXNzYWdlUXVldWUEADUMAZBwYWxsZXRfbWVzc2FnZV9xdWV1ZTo6RXJyb3I8UnVudGltZT4AIwBgU25vd2JyaWRnZVN5c3RlbUZyb250ZW5kBAA5DAHEc25vd2JyaWRnZV9wYWxsZXRfc3lzdGVtX2Zyb250ZW5kOjpFcnJvcjxSdW50aW1lPgAkABxVdGlsaXR5BAA9DAF4cGFsbGV0X3V0aWxpdHk6OkVycm9yPFJ1bnRpbWU+ACgAIE11bHRpc2lnBABNDAF8cGFsbGV0X211bHRpc2lnOjpFcnJvcjxSdW50aW1lPgApABRQcm94eQQAcQwBcHBhbGxldF9wcm94eTo6RXJyb3I8UnVudGltZT4AKgAcSW5kaWNlcwQAeQwBeHBhbGxldF9pbmRpY2VzOjpFcnJvcjxSdW50aW1lPgArABhBc3NldHMEAKUMAdxwYWxsZXRfYXNzZXRzOjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTE+ADIAHFVuaXF1ZXMEANEMAXhwYWxsZXRfdW5pcXVlczo6RXJyb3I8UnVudGltZT4AMwAQTmZ0cwQAJQ0BbHBhbGxldF9uZnRzOjpFcnJvcjxSdW50aW1lPgA0ADRGb3JlaWduQXNzZXRzBAA5DQHccGFsbGV0X2Fzc2V0czo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UyPgA1AChQb29sQXNzZXRzBABJDQHccGFsbGV0X2Fzc2V0czo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UzPgA2ADxBc3NldENvbnZlcnNpb24EAFUNAZxwYWxsZXRfYXNzZXRfY29udmVyc2lvbjo6RXJyb3I8UnVudGltZT4ANwA0QXNzZXRzRnJlZXplcgQAYQ0BHQFwYWxsZXRfYXNzZXRzX2ZyZWV6ZXI6OkVycm9yPFJ1bnRpbWUsIHBhbGxldF9hc3NldHNfZnJlZXplcjo6SW5zdGFuY2UxPgA4ADBBc3NldHNIb2xkZXIEAGUNARUBcGFsbGV0X2Fzc2V0c19ob2xkZXI6OkVycm9yPFJ1bnRpbWUsIHBhbGxldF9hc3NldHNfaG9sZGVyOjpJbnN0YW5jZTE+ADkAIFRyZWFzdXJ5BAB5DQF8cGFsbGV0X3RyZWFzdXJ5OjpFcnJvcjxSdW50aW1lPgA8AEBDb252aWN0aW9uVm90aW5nBACtDQGgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nOjpFcnJvcjxSdW50aW1lPgA9ACRSZWZlcmVuZGEEAPUNAYBwYWxsZXRfcmVmZXJlbmRhOjpFcnJvcjxSdW50aW1lPgA+ACRXaGl0ZWxpc3QEAPkNAYBwYWxsZXRfd2hpdGVsaXN0OjpFcnJvcjxSdW50aW1lPgBAACBCb3VudGllcwQACQ4BfHBhbGxldF9ib3VudGllczo6RXJyb3I8UnVudGltZT4AQQA0Q2hpbGRCb3VudGllcwQAFQ4BlHBhbGxldF9jaGlsZF9ib3VudGllczo6RXJyb3I8UnVudGltZT4AQgAkQXNzZXRSYXRlBAAZDgGEcGFsbGV0X2Fzc2V0X3JhdGU6OkVycm9yPFJ1bnRpbWU+AEMASE11bHRpQXNzZXRCb3VudGllcwQANQ4BrHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczo6RXJyb3I8UnVudGltZT4ARAAMRGFwBAA5DgFocGFsbGV0X2RhcDo6RXJyb3I8UnVudGltZT4ARQBIU3RhdGVUcmllTWlncmF0aW9uBABNCQGscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uOjpFcnJvcjxSdW50aW1lPgBGADxOb21pbmF0aW9uUG9vbHMEAH0OAZxwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6RXJyb3I8UnVudGltZT4AUAAkVm90ZXJMaXN0BACRDgH0cGFsbGV0X2JhZ3NfbGlzdDo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2JhZ3NfbGlzdDo6SW5zdGFuY2UxPgBSAEBEZWxlZ2F0ZWRTdGFraW5nBAClDgGgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nOjpFcnJvcjxSdW50aW1lPgBTADxTdGFraW5nUmNDbGllbnQEALEOAbhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQ6OkVycm9yPFJ1bnRpbWU+AFQASE11bHRpQmxvY2tFbGVjdGlvbgQAyQ4B0HBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jazo6RXJyb3I8UnVudGltZT4AVQBgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkBAABDwHwcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpzaWduZWQ6OkVycm9yPFJ1bnRpbWU+AFgAHFN0YWtpbmcEAGUPAZBwYWxsZXRfc3Rha2luZ19hc3luYzo6RXJyb3I8UnVudGltZT4AWQBETWVtYmVyc1N1YnNjcmliZXIEAKUPAbxpbmRpdl9wYWxsZXRfbWVtYmVyc19zdWJzY3JpYmVyOjpFcnJvcjxSdW50aW1lPgBhADRBbGlhc0FjY291bnRzBACtDwGsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzOjpFcnJvcjxSdW50aW1lPgBiABBQZ2FzBAC1DwGEaW5kaXZfcGFsbGV0X3BnYXM6OkVycm9yPFJ1bnRpbWU+AGMAGFJldml2ZQQAZRABdHBhbGxldF9yZXZpdmU6OkVycm9yPFJ1bnRpbWU+AGQAMERvdG5zR2F0ZXdheQQAcRABqGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5OjpFcnJvcjxSdW50aW1lPgCYAERPcmlnaW5SZXN0cmljdGlvbgQAfRABvGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb246OkVycm9yPFJ1bnRpbWU+AJkAEFN1ZG8EAIEQAWxwYWxsZXRfc3Vkbzo6RXJyb3I8UnVudGltZT4A+wAABQEYU3lzdGVtARhTeXN0ZW1QHEFjY291bnQBAQQCBM0HQQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAToIFRoZSBmdWxsIGFjY291bnQgaW5mb3JtYXRpb24gZm9yIGEgcGFydGljdWxhciBhY2NvdW50IElELgA4RXh0cmluc2ljQ291bnQAADgEAAS4IFRvdGFsIGV4dHJpbnNpY3MgY291bnQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgBASW5oZXJlbnRzQXBwbGllZAEAWQEEAASkIFdoZXRoZXIgYWxsIGluaGVyZW50cyBoYXZlIGJlZW4gYXBwbGllZC4ALEJsb2NrV2VpZ2h0AQDZBxgAAAAAAAAEiCBUaGUgY3VycmVudCB3ZWlnaHQgZm9yIHRoZSBibG9jay4AJEJsb2NrU2l6ZQAAOAQADLAgVG90YWwgc2l6ZSAoaW4gYnl0ZXMpIG9mIHRoZSBjdXJyZW50IGJsb2NrLgDIIFRyYWNrcyB0aGUgc2l6ZSBvZiB0aGUgaGVhZGVyIGFuZCBhbGwgZXh0cmluc2ljcy4AJEJsb2NrSGFzaAEBBAU4PIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASYIE1hcCBvZiBibG9jayBudW1iZXJzIHRvIGJsb2NrIGhhc2hlcy4ANEV4dHJpbnNpY0RhdGEBAQQFOBgEAAQ9ASBFeHRyaW5zaWNzIGRhdGEgZm9yIHRoZSBjdXJyZW50IGJsb2NrIChtYXBzIGFuIGV4dHJpbnNpYydzIGluZGV4IHRvIGl0cyBkYXRhKS4AGE51bWJlcgEAOBAAAAAABAkBIFRoZSBjdXJyZW50IGJsb2NrIG51bWJlciBiZWluZyBwcm9jZXNzZWQuIFNldCBieSBgZXhlY3V0ZV9ibG9ja2AuAChQYXJlbnRIYXNoAQA8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHAgSGFzaCBvZiB0aGUgcHJldmlvdXMgYmxvY2suABhEaWdlc3QBAGQEAATwIERpZ2VzdCBvZiB0aGUgY3VycmVudCBibG9jaywgYWxzbyBwYXJ0IG9mIHRoZSBibG9jayBoZWFkZXIuABhFdmVudHMBAN0HBAAcoCBFdmVudHMgZGVwb3NpdGVkIGZvciB0aGUgY3VycmVudCBibG9jay4AHQEgTk9URTogVGhlIGl0ZW0gaXMgdW5ib3VuZCBhbmQgc2hvdWxkIHRoZXJlZm9yZSBuZXZlciBiZSByZWFkIG9uIGNoYWluLtAgSXQgY291bGQgb3RoZXJ3aXNlIGluZmxhdGUgdGhlIFBvViBzaXplIG9mIGEgYmxvY2suAC0BIEV2ZW50cyBoYXZlIGEgbGFyZ2UgaW4tbWVtb3J5IHNpemUuIEJveCB0aGUgZXZlbnRzIHRvIG5vdCBnbyBvdXQtb2YtbWVtb3J5/CBqdXN0IGluIGNhc2Ugc29tZW9uZSBzdGlsbCByZWFkcyB0aGVtIGZyb20gd2l0aGluIHRoZSBydW50aW1lLgAoRXZlbnRDb3VudAEAOBAAAAAABLggVGhlIG51bWJlciBvZiBldmVudHMgaW4gdGhlIGBFdmVudHM8VD5gIGxpc3QuACxFdmVudFRvcGljcwEBBAI8tQkEACglASBNYXBwaW5nIGJldHdlZW4gYSB0b3BpYyAocmVwcmVzZW50ZWQgYnkgVDo6SGFzaCkgYW5kIGEgdmVjdG9yIG9mIGluZGV4ZXOUIG9mIGV2ZW50cyBpbiB0aGUgYDxFdmVudHM8VD4+YCBsaXN0LgBRASBBbGwgdG9waWMgdmVjdG9ycyBoYXZlIGRldGVybWluaXN0aWMgc3RvcmFnZSBsb2NhdGlvbnMgZGVwZW5kaW5nIG9uIHRoZSB0b3BpYy4gVGhpc0UBIGFsbG93cyBsaWdodC1jbGllbnRzIHRvIGxldmVyYWdlIHRoZSBjaGFuZ2VzIHRyaWUgc3RvcmFnZSB0cmFja2luZyBtZWNoYW5pc20gYW5k5CBpbiBjYXNlIG9mIGNoYW5nZXMgZmV0Y2ggdGhlIGxpc3Qgb2YgZXZlbnRzIG9mIGludGVyZXN0LgBZASBUaGUgdmFsdWUgaGFzIHRoZSB0eXBlIGAoQmxvY2tOdW1iZXJGb3I8VD4sIEV2ZW50SW5kZXgpYCBiZWNhdXNlIGlmIHdlIHVzZWQgb25seSBqdXN0TQEgdGhlIGBFdmVudEluZGV4YCB0aGVuIGluIGNhc2UgaWYgdGhlIHRvcGljIGhhcyB0aGUgc2FtZSBjb250ZW50cyBvbiB0aGUgbmV4dCBibG9jawEBIG5vIG5vdGlmaWNhdGlvbiB3aWxsIGJlIHRyaWdnZXJlZCB0aHVzIHRoZSBldmVudCBtaWdodCBiZSBsb3N0LgBITGFzdFJ1bnRpbWVVcGdyYWRlAAC5CQQABFUBIFN0b3JlcyB0aGUgYHNwZWNfdmVyc2lvbmAgYW5kIGBzcGVjX25hbWVgIG9mIHdoZW4gdGhlIGxhc3QgcnVudGltZSB1cGdyYWRlIGhhcHBlbmVkLgBEQmxvY2tzVGlsbFVwZ3JhZGUAAAwEAATsIE51bWJlciBvZiBibG9ja3MgdGlsbCB0aGUgcGVuZGluZyBjb2RlIHVwZ3JhZGUgaXMgYXBwbGllZC4AVFVwZ3JhZGVkVG9VMzJSZWZDb3VudAEAWQEEAARNASBUcnVlIGlmIHdlIGhhdmUgdXBncmFkZWQgc28gdGhhdCBgdHlwZSBSZWZDb3VudGAgaXMgYHUzMmAuIEZhbHNlIChkZWZhdWx0KSBpZiBub3QuAGBVcGdyYWRlZFRvVHJpcGxlUmVmQ291bnQBAFkBBAAIXQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgQWNjb3VudEluZm8gY29udGFpbnMgdGhyZWUgdHlwZXMgb2YgYFJlZkNvdW50YC4gRmFsc2VIIChkZWZhdWx0KSBpZiBub3QuADhFeGVjdXRpb25QaGFzZQAAsQkEAASIIFRoZSBleGVjdXRpb24gcGhhc2Ugb2YgdGhlIGJsb2NrLgBEQXV0aG9yaXplZFVwZ3JhZGUAAMUJBAAEuCBgU29tZWAgaWYgYSBjb2RlIHVwZ3JhZGUgaGFzIGJlZW4gYXV0aG9yaXplZC4AYEV4dHJpbnNpY1dlaWdodFJlY2xhaW1lZAEAEQEIAAAcoCBUaGUgd2VpZ2h0IHJlY2xhaW1lZCBmb3IgdGhlIGV4dHJpbnNpYy4AIQEgVGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgdW50aWwgdGhlIGVuZCBvZiB0aGUgZXh0cmluc2ljIGV4ZWN1dGlvbi4hASBNb3JlIHByZWNpc2VseSB0aGlzIGluZm9ybWF0aW9uIGlzIHJlbW92ZWQgaW4gYG5vdGVfYXBwbGllZF9leHRyaW5zaWNgLgBxASBMb2dpYyBkb2luZyBzb21lIHBvc3QgZGlzcGF0Y2ggd2VpZ2h0IHJlZHVjdGlvbiBtdXN0IHVwZGF0ZSB0aGlzIHN0b3JhZ2UgdG8gYXZvaWQgZHVwbGljYXRlLCByZWR1Y3Rpb24uAAEkAAHpBwAYMEJsb2NrV2VpZ2h0c8kJiQEHAPIFKgEACwAgSqnRAQIAgAICZc0dAAELwCb7f3QBAgAAAgELAGjlz4sBAgAgAgEAAAJlzR0AAQvA3l9ZugECAGACAQsAIEqp0QECAIACAQcAuGTZRQIAYAACZc0dAAAAAATQIEJsb2NrICYgZXh0cmluc2ljcyB3ZWlnaHRzOiBiYXNlIHZhbHVlcyBhbmQgbGltaXRzLgAsQmxvY2tMZW5ndGjVCTQAAEQAAABQAAAAUAAABKggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgYmxvY2sgKGluIGJ5dGVzKS4AOEJsb2NrSGFzaENvdW50OBAAEAAABFUBIE1heGltdW0gbnVtYmVyIG9mIGJsb2NrIG51bWJlciB0byBibG9jayBoYXNoIG1hcHBpbmdzIHRvIGtlZXAgKG9sZGVzdCBwcnVuZWQgZmlyc3QpLgAgRGJXZWlnaHTdCUBAeH0BAAAAAADh9QUAAAAABAkBIFRoZSB3ZWlnaHQgb2YgcnVudGltZSBkYXRhYmFzZSBvcGVyYXRpb25zIHRoZSBydW50aW1lIGNhbiBpbnZva2UuABxWZXJzaW9u4QkBBlBuZXh0LWFzc2V0LWh1Yi1wYXNlb1BuZXh0LWFzc2V0LWh1Yi1wYXNlbwEAAACXhB4AAAAAAGzdcY1cxTJi1AEAAAAE5wUhoNPS+AEAAADXvdiicsoNZQIAAADfastomQdgmwUAAAA345f8fJH15AIAAABA/jrUAfiVmgYAAADSvJiX7tCPFQMAAAD3iyeL5T9FTAIAAACrPAVyKR/riwIAAADM2d5jlsiZygEAAAC8nYmQT1uSPwEAAAA3yLsTUKmiqAQAAADz/xTVq1JwWQMAAABv9S7oWObFvQIAAACRscixYyjrkgIAAACf+1BapzjWnAEAAAAmCb6DrERo3AEAAAASyOPU1+Bt4AEAAADekrigQmub9gIAAADqk+Pxbz1pYgMAAAD7xXe510fv1gEAAACKgEelOoJ37AEAAACi3balhHe/YwEAAAAXprwNAGKuswEAAAAY71ijtnuncAEAAADFH/H6P10MygEAAACMQD5cSp/UQgEAAAARAAAAAQSEIEdldCB0aGUgY2hhaW4ncyBpbi1jb2RlIHZlcnNpb24uAChTUzU4UHJlZml40QMIAAAUqCBUaGUgZGVzaWduYXRlZCBTUzU4IHByZWZpeCBvZiB0aGlzIGNoYWluLgA5ASBUaGlzIHJlcGxhY2VzIHRoZSAic3M1OEZvcm1hdCIgcHJvcGVydHkgZGVjbGFyZWQgaW4gdGhlIGNoYWluIHNwZWMuIFJlYXNvbiBpczEBIHRoYXQgdGhlIHJ1bnRpbWUgc2hvdWxkIGtub3cgYWJvdXQgdGhlIHByZWZpeCBpbiBvcmRlciB0byBtYWtlIHVzZSBvZiBpdCBhc3AgYW4gaWRlbnRpZmllciBvZiB0aGUgY2hhaW4uAAHxCQAcLFJ1bnRpbWVDYWxsIASMIFRoZSBhZ2dyZWdhdGVkIGBSdW50aW1lQ2FsbGAgdHlwZS4UTm9uY2U4BEkBIFRoaXMgc3RvcmVzIHRoZSBudW1iZXIgb2YgcHJldmlvdXMgdHJhbnNhY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCBhIHNlbmRlciBhY2NvdW50LhBIYXNoPASYIFRoZSBvdXRwdXQgb2YgdGhlIGBIYXNoaW5nYCBmdW5jdGlvbi4cSGFzaGluZ/EEBCEBIFRoZSBoYXNoaW5nIHN5c3RlbSAoYWxnb3JpdGhtKSBiZWluZyB1c2VkIGluIHRoZSBydW50aW1lIChlLmcuIEJsYWtlMikuJEFjY291bnRJZAQEyCBUaGUgdXNlciBhY2NvdW50IGlkZW50aWZpZXIgdHlwZSBmb3IgdGhlIHJ1bnRpbWUuFEJsb2Nr9QkIYQEgVGhlIEJsb2NrIHR5cGUgdXNlZCBieSB0aGUgcnVudGltZS4gVGhpcyBpcyB1c2VkIGJ5IGBjb25zdHJ1Y3RfcnVudGltZWAgdG8gcmV0cmlldmUgdGhlzCBleHRyaW5zaWNzIG9yIG90aGVyIGJsb2NrIHNwZWNpZmljIGRhdGEgYXMgbmVlZGVkLixBY2NvdW50RGF0YdEHCGEBIERhdGEgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGFuIGFjY291bnQgKG90aGVyIHRoYW4gbm9uY2UvdHJhbnNhY3Rpb24gY291bnRlciwgd2hpY2ggdGhpc2QgcGFsbGV0IGRvZXMgcmVnYXJkbGVzcykuAAAAADxQYXJhY2hhaW5TeXN0ZW0BPFBhcmFjaGFpblN5c3RlbXw8QmxvY2tXZWlnaHRNb2RlAAANCgQAGHwgVGhlIGN1cnJlbnQgYmxvY2sgd2VpZ2h0IG1vZGUuAHUBIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBpcyB0aGUgbWF4aW11bSBhbGxvd2VkIGJsb2NrIHdlaWdodCwgZm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlSCBbYGJsb2NrX3dlaWdodGBdLgAlASBLaWxsZWQgaW4gW2BTZWxmOjpvbl9pbml0aWFsaXplYF0gYW5kIHNldCBieSB0aGUgW2BibG9ja193ZWlnaHRgXSBsb2dpYy4ARFByZXZpb3VzQ29yZUNvdW50AADxBQQADAUBIFRoZSBjb3JlIGNvdW50IGF2YWlsYWJsZSB0byB0aGUgcGFyYWNoYWluIGluIHRoZSBwcmV2aW91cyBibG9jay4AdQEgVGhpcyBpcyBtYWlubHkgdXNlZCBmb3Igb2ZmY2hhaW4gZnVuY3Rpb25hbGl0eSB0byBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgdGFyZ2V0IGJsb2NrIHdlaWdodC4ARFVuaW5jbHVkZWRTZWdtZW50AQARCgQAGEkBIExhdGVzdCBpbmNsdWRlZCBibG9jayBkZXNjZW5kYW50cyB0aGUgcnVudGltZSBhY2NlcHRlZC4gSW4gb3RoZXIgd29yZHMsIHRoZXNlIGFyZWEBIGFuY2VzdG9ycyBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBibG9jayB3aGljaCBoYXZlIG5vdCBiZWVuIGluY2x1ZGVkIGluIHRoZSBvYnNlcnZlZEwgcmVsYXktY2hhaW4gc3RhdGUuAHUBIFRoZSBzZWdtZW50IGxlbmd0aCBpcyBsaW1pdGVkIGJ5IHRoZSBjYXBhY2l0eSByZXR1cm5lZCBmcm9tIHRoZSBbYENvbnNlbnN1c0hvb2tgXSBjb25maWd1cmVkPCBpbiB0aGUgcGFsbGV0LgBsQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50AAA1CgQADGkBIFN0b3JhZ2UgZmllbGQgdGhhdCBrZWVwcyB0cmFjayBvZiBiYW5kd2lkdGggdXNlZCBieSB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGFsb25nIHdpdGggdGhlLQEgbGF0ZXN0IEhSTVAgd2F0ZXJtYXJrLiBVc2VkIGZvciBsaW1pdGluZyB0aGUgYWNjZXB0YW5jZSBvZiBuZXcgYmxvY2tzIHdpdGiQIHJlc3BlY3QgdG8gcmVsYXkgY2hhaW4gY29uc3RyYWludHMuAFRQZW5kaW5nVmFsaWRhdGlvbkNvZGUBABgEABhZASBJbiBjYXNlIG9mIGEgc2NoZWR1bGVkIHVwZ3JhZGUsIHRoaXMgc3RvcmFnZSBmaWVsZCBjb250YWlucyB0aGUgdmFsaWRhdGlvbiBjb2RlIHRvIGJlJCBhcHBsaWVkLgA9ASBBcyBzb29uIGFzIHRoZSByZWxheSBjaGFpbiBnaXZlcyB1cyB0aGUgZ28tYWhlYWQgc2lnbmFsLCB3ZSB3aWxsIG92ZXJ3cml0ZSB0aGVlASBbYDpwZW5kaW5nX2NvZGVgXVtzcF9jb3JlOjpzdG9yYWdlOjp3ZWxsX2tub3duX2tleXM6OlBFTkRJTkdfQ09ERV0gd2hpY2ggd2lsbCByZXN1bHQgdGhldQEgbmV4dCBibG9jayB0byBiZSBwcm9jZXNzZWQgd2l0aCB0aGUgbmV3IHZhbGlkYXRpb24gY29kZS4gVGhpcyBjb25jbHVkZXMgdGhlIHVwZ3JhZGUgcHJvY2Vzcy4ARE5ld1ZhbGlkYXRpb25Db2RlAAAYBAAUXQEgVmFsaWRhdGlvbiBjb2RlIHRoYXQgaXMgc2V0IGJ5IHRoZSBwYXJhY2hhaW4gYW5kIGlzIHRvIGJlIGNvbW11bmljYXRlZCB0byBjb2xsYXRvciBhbmR4IGNvbnNlcXVlbnRseSB0aGUgcmVsYXktY2hhaW4uAGUBIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jayBpZiBubyBvdGhlciBwYWxsZXQgYWxyZWFkeSBzZXQsIHRoZSB2YWx1ZS4AOFZhbGlkYXRpb25EYXRhAABIBAAM0CBUaGUgW2BQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YWBdIHNldCBmb3IgdGhpcyBibG9jay4AcQEgVGhpcyB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBzZXQgb25seSBvbmNlIGJ5IHRoZSBbYFBhbGxldDo6c2V0X3ZhbGlkYXRpb25fZGF0YWBdIGluaGVyZW50LgBQRGlkU2V0VmFsaWRhdGlvbkNvZGUBAFkBBAAE4CBXZXJlIHRoZSB2YWxpZGF0aW9uIGRhdGEgc2V0IHRvIG5vdGlmeSB0aGUgcmVsYXkgY2hhaW4/AGRMYXN0UmVsYXlDaGFpbkJsb2NrTnVtYmVyAQA4EAAAAAAMHQEgVGhlIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhlIGxhc3QgcGFyYWNoYWluIGJsb2NrLgCIIFRoaXMgaXMgdXBkYXRlZCBpbiBgb25fZmluYWxpemVgLgBgVXBncmFkZVJlc3RyaWN0aW9uU2lnbmFsAQA5CgQAHHUBIEFuIG9wdGlvbiB3aGljaCBpbmRpY2F0ZXMgaWYgdGhlIHJlbGF5LWNoYWluIHJlc3RyaWN0cyBzaWduYWxsaW5nIGEgdmFsaWRhdGlvbiBjb2RlIHVwZ3JhZGUuYQEgSW4gb3RoZXIgd29yZHMsIGlmIHRoaXMgaXMgYFNvbWVgIGFuZCBbYE5ld1ZhbGlkYXRpb25Db2RlYF0gaXMgYFNvbWVgIHRoZW4gdGhlIHByb2R1Y2VkbCBjYW5kaWRhdGUgd2lsbCBiZSBpbnZhbGlkLgBxASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBhIG1pcnJvciBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGZyb20gdGhlbQEgcmVsYXktY2hhaW4uIFRoaXMgdmFsdWUgaXMgZXBoZW1lcmFsIHdoaWNoIG1lYW5zIGl0IGRvZXNuJ3QgaGl0IHRoZSBzdG9yYWdlLiBUaGlzIHZhbHVlIGlzYCBzZXQgYWZ0ZXIgdGhlIGluaGVyZW50LgA4VXBncmFkZUdvQWhlYWQBAC0KBAAU3CBPcHRpb25hbCB1cGdyYWRlIGdvLWFoZWFkIHNpZ25hbCBmcm9tIHRoZSByZWxheS1jaGFpbi4AcQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgYSBtaXJyb3Igb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZm9yIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBmcm9tIHRoZW0BIHJlbGF5LWNoYWluLiBUaGlzIHZhbHVlIGlzIGVwaGVtZXJhbCB3aGljaCBtZWFucyBpdCBkb2Vzbid0IGhpdCB0aGUgc3RvcmFnZS4gVGhpcyB2YWx1ZSBpc2Agc2V0IGFmdGVyIHRoZSBpbmhlcmVudC4APFJlbGF5U3RhdGVQcm9vZgAAUAQAGMQgVGhlIHN0YXRlIHByb29mIGZvciB0aGUgbGFzdCByZWxheSBwYXJlbnQgYmxvY2suAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AWFJlbGV2YW50TWVzc2FnaW5nU3RhdGUAAEEKBAAcZQEgVGhlIHNuYXBzaG90IG9mIHNvbWUgc3RhdGUgcmVsYXRlZCB0byBtZXNzYWdpbmcgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgcGFyYWNoYWluIGFzIHBlckggdGhlIHJlbGF5IHBhcmVudC4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgBESG9zdENvbmZpZ3VyYXRpb24AAFUKBAAYKQEgVGhlIHBhcmFjaGFpbiBob3N0IGNvbmZpZ3VyYXRpb24gdGhhdCB3YXMgb2J0YWluZWQgZnJvbSB0aGUgcmVsYXkgcGFyZW50LgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuADhMYXN0RG1xTXFjSGVhZAEAXQqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ9CBUaGUgbGFzdCBkb3dud2FyZCBtZXNzYWdlIHF1ZXVlIGNoYWluIGhlYWQgd2UgaGF2ZSBvYnNlcnZlZC4AZQEgVGhpcyB2YWx1ZSBpcyBsb2FkZWQgYmVmb3JlIGFuZCBzYXZlZCBhZnRlciBwcm9jZXNzaW5nIGluYm91bmQgZG93bndhcmQgbWVzc2FnZXMgY2FycmllZGAgYnkgdGhlIHN5c3RlbSBpbmhlcmVudC4AQExhc3RIcm1wTXFjSGVhZHMBAGEKBAAQSQEgVGhlIG1lc3NhZ2UgcXVldWUgY2hhaW4gaGVhZHMgd2UgaGF2ZSBvYnNlcnZlZCBwZXIgZWFjaCBjaGFubmVsIGluY29taW5nIGNoYW5uZWwuAGUBIFRoaXMgdmFsdWUgaXMgbG9hZGVkIGJlZm9yZSBhbmQgc2F2ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBpbmJvdW5kIGRvd253YXJkIG1lc3NhZ2VzIGNhcnJpZWRgIGJ5IHRoZSBzeXN0ZW0gaW5oZXJlbnQuAGRQcm9jZXNzZWREb3dud2FyZE1lc3NhZ2VzAQA4EAAAAAAMyCBOdW1iZXIgb2YgZG93bndhcmQgbWVzc2FnZXMgcHJvY2Vzc2VkIGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgBwTGFzdFByb2Nlc3NlZERvd253YXJkTWVzc2FnZQAAbQoEAAyUIFRoZSBsYXN0IHByb2Nlc3NlZCBkb3dud2FyZCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgA0SHJtcFdhdGVybWFyawEAOBAAAAAABKAgSFJNUCB3YXRlcm1hcmsgdGhhdCB3YXMgc2V0IGluIGEgYmxvY2suAGBMYXN0UHJvY2Vzc2VkSHJtcE1lc3NhZ2UAAG0KBAAMhCBUaGUgbGFzdCBwcm9jZXNzZWQgSFJNUCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgBQSHJtcE91dGJvdW5kTWVzc2FnZXMBAHEKBAAMpCBIUk1QIG1lc3NhZ2VzIHRoYXQgd2VyZSBzZW50IGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgA4VXB3YXJkTWVzc2FnZXMBADQEAAysIFVwd2FyZCBtZXNzYWdlcyB0aGF0IHdlcmUgc2VudCBpbiBhIGJsb2NrLgDwIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBmb3IgZWFjaCBuZXcgYmxvY2suAFRQZW5kaW5nVXB3YXJkTWVzc2FnZXMBADQEAAQxASBVcHdhcmQgbWVzc2FnZXMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4AUFBlbmRpbmdVcHdhcmRTaWduYWxzAQA0BAAMLQEgVXB3YXJkIHNpZ25hbHMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4A2CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25fZmluYWxpemVgIGZvciBlYWNoIGJsb2NrLgBMUGVuZGluZ0FwcHJvdmVkUGVlcgAAeAQABDkBIFRoZSBhcHByb3ZlZCBwZWVyIGlkIHRvIGJlIHNlbnQgYXMgYSBVTVAgc2lnbmFsIG9uIHRoZSBsYXN0IGJsb2NrIG9mIHRoZSBQb1YuAFxVcHdhcmREZWxpdmVyeUZlZUZhY3RvcgEADQVAAABkp7O24A0AAAAAAAAAAATkIFRoZSBmYWN0b3IgdG8gbXVsdGlwbHkgdGhlIGJhc2UgZGVsaXZlcnkgZmVlIGJ5IGZvciBVTVAuAIRBbm5vdW5jZWRIcm1wTWVzc2FnZXNQZXJDYW5kaWRhdGUBADgQAAAAAAhlASBUaGUgbnVtYmVyIG9mIEhSTVAgbWVzc2FnZXMgd2Ugb2JzZXJ2ZWQgaW4gYG9uX2luaXRpYWxpemVgIGFuZCB0aHVzIHVzZWQgdGhhdCBudW1iZXIgZm9y8CBhbm5vdW5jaW5nIHRoZSB3ZWlnaHQgb2YgYG9uX2luaXRpYWxpemVgIGFuZCBgb25fZmluYWxpemVgLgBoUmVzZXJ2ZWRYY21wV2VpZ2h0T3ZlcnJpZGUAABEBBAAIXQEgVGhlIHdlaWdodCB3ZSByZXNlcnZlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrIGZvciBwcm9jZXNzaW5nIFhDTVAgbWVzc2FnZXMuIFRoaXO4IG92ZXJyaWRlcyB0aGUgYW1vdW50IHNldCBpbiB0aGUgQ29uZmlnIHRyYWl0LgBkUmVzZXJ2ZWREbXBXZWlnaHRPdmVycmlkZQAAEQEEAAhZASBUaGUgd2VpZ2h0IHdlIHJlc2VydmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYmxvY2sgZm9yIHByb2Nlc3NpbmcgRE1QIG1lc3NhZ2VzLiBUaGlzuCBvdmVycmlkZXMgdGhlIGFtb3VudCBzZXQgaW4gdGhlIENvbmZpZyB0cmFpdC4AYEN1c3RvbVZhbGlkYXRpb25IZWFkRGF0YQAAGAQADCkBIEEgY3VzdG9tIGhlYWQgZGF0YSB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCBhcyByZXN1bHQgb2YgYHZhbGlkYXRlX2Jsb2NrYC4AEQEgU2VlIGBQYWxsZXQ6OnNldF9jdXN0b21fdmFsaWRhdGlvbl9oZWFkX2RhdGFgIGZvciBtb3JlIGluZm9ybWF0aW9uLgBIUG9WTWVzc2FnZXNUcmFja2VyAAB5CgQADFUBIFRyYWNrcyBjdW11bGF0aXZlIGBVTVBgIGFuZCBgSFJNUGAgbWVzc2FnZXMgc2VudCBhY3Jvc3MgYmxvY2tzIGluIHRoZSBjdXJyZW50IGBQb1ZgLgB1ASBBY3Jvc3MgZGlmZmVyZW50IGNhbmRpZGF0ZXMvUG9WcyB0aGUgYnVkZ2V0cyBhcmUgdHJhY2tlZCBieSBbYEFnZ3JlZ2F0ZWRVbmluY2x1ZGVkU2VnbWVudGBdLgABQAABEQgABChTZWxmUGFyYUlknBDcBQAABLggUmV0dXJucyB0aGUgcGFyYWNoYWluIElEIHdlIGFyZSBydW5uaW5nIHdpdGguAAGBCgAAAAEAACRUaW1lc3RhbXABJFRpbWVzdGFtcAgMTm93AQAoIAAAAAAAAAAABKAgVGhlIGN1cnJlbnQgdGltZSBmb3IgdGhlIGN1cnJlbnQgYmxvY2suACREaWRVcGRhdGUBAFkBBAAQ2CBXaGV0aGVyIHRoZSB0aW1lc3RhbXAgaGFzIGJlZW4gdXBkYXRlZCBpbiB0aGlzIGJsb2NrLgBVASBUaGlzIHZhbHVlIGlzIHVwZGF0ZWQgdG8gYHRydWVgIHVwb24gc3VjY2Vzc2Z1bCBzdWJtaXNzaW9uIG9mIGEgdGltZXN0YW1wIGJ5IGEgbm9kZS5FASBJdCBpcyB0aGVuIGNoZWNrZWQgYXQgdGhlIGVuZCBvZiBlYWNoIGJsb2NrIGV4ZWN1dGlvbiBpbiB0aGUgYG9uX2ZpbmFsaXplYCBob29rLgABsAAABDRNaW5pbXVtUGVyaW9kKCAAAAAAAAAAABiMIFRoZSBtaW5pbXVtIHBlcmlvZCBiZXR3ZWVuIGJsb2Nrcy4ATQEgQmUgYXdhcmUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCB0byB0aGUgKmV4cGVjdGVkKiBwZXJpb2QgdGhhdCB0aGUgYmxvY2sgcHJvZHVjdGlvbkkBIGFwcGFyYXR1cyBwcm92aWRlcy4gWW91ciBjaG9zZW4gY29uc2Vuc3VzIHN5c3RlbSB3aWxsIGdlbmVyYWxseSB3b3JrIHdpdGggdGhpcyB0b2EBIGRldGVybWluZSBhIHNlbnNpYmxlIGJsb2NrIHRpbWUuIEZvciBleGFtcGxlLCBpbiB0aGUgQXVyYSBwYWxsZXQgaXQgd2lsbCBiZSBkb3VibGUgdGhpc3AgcGVyaW9kIG9uIGRlZmF1bHQgc2V0dGluZ3MuAAAEGE1vbWVudCgEmCBUeXBlIHVzZWQgZm9yIGV4cHJlc3NpbmcgYSB0aW1lc3RhbXAuAAMAADRQYXJhY2hhaW5JbmZvATRQYXJhY2hhaW5JbmZvBCxQYXJhY2hhaW5JZAEAnBBkAAAAAAABuAAAAAAAAAQAACBQcmVpbWFnZQEgUHJlaW1hZ2UMJFN0YXR1c0ZvcgABBAY8hQoEAASQIFRoZSByZXF1ZXN0IHN0YXR1cyBvZiBhIGdpdmVuIGhhc2guAkBSZXF1ZXN0U3RhdHVzRm9yAEBSZXF1ZXN0U3RhdHVzRm9yAAEEBjyNCgQABJAgVGhlIHJlcXVlc3Qgc3RhdHVzIG9mIGEgZ2l2ZW4gaGFzaC4ALFByZWltYWdlRm9yAAEEBp0KoQoEAAAAAbwAARUIAAABpQoAAAAFAAAkU2NoZWR1bGVyASRTY2hlZHVsZXIQPEluY29tcGxldGVTaW5jZQAAOAQABPQgQmxvY2sgbnVtYmVyIGF0IHdoaWNoIHRoZSBhZ2VuZGEgYmVnYW4gaW5jb21wbGV0ZSBleGVjdXRpb24uABhBZ2VuZGEBAQQFOKkKBAAETQEgSXRlbXMgdG8gYmUgZXhlY3V0ZWQsIGluZGV4ZWQgYnkgdGhlIGJsb2NrIG51bWJlciB0aGF0IHRoZXkgc2hvdWxkIGJlIGV4ZWN1dGVkIG9uLgAcUmV0cmllcwABBALMuQoEAAQhASBSZXRyeSBjb25maWd1cmF0aW9ucyBmb3IgaXRlbXMgdG8gYmUgZXhlY3V0ZWQsIGluZGV4ZWQgYnkgdGFzayBhZGRyZXNzLgAYTG9va3VwAAEEBQjMBAAQ+CBMb29rdXAgZnJvbSBhIG5hbWUgdG8gdGhlIGJsb2NrIG51bWJlciBhbmQgaW5kZXggb2YgdGhlIHRhc2suAFkBIEZvciB2MyAtPiB2NCB0aGUgcHJldmlvdXNseSB1bmJvdW5kZWQgaWRlbnRpdGllcyBhcmUgQmxha2UyLTI1NiBoYXNoZWQgdG8gZm9ybSB0aGUgdjQwIGlkZW50aXRpZXMuAAHEAAEZCAAINE1heGltdW1XZWlnaHQRASwLAIBuh3QBAgAAAgQpASBUaGUgbWF4aW11bSB3ZWlnaHQgdGhhdCBtYXkgYmUgc2NoZWR1bGVkIHBlciBibG9jayBmb3IgYW55IGRpc3BhdGNoYWJsZXMuAFBNYXhTY2hlZHVsZWRQZXJCbG9jazgQMgAAABQdASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2NoZWR1bGVkIGNhbGxzIGluIHRoZSBxdWV1ZSBmb3IgYSBzaW5nbGUgYmxvY2suABggTk9URTpRASArIERlcGVuZGVudCBwYWxsZXRzJyBiZW5jaG1hcmtzIG1pZ2h0IHJlcXVpcmUgYSBoaWdoZXIgbGltaXQgZm9yIHRoZSBzZXR0aW5nLiBTZXQgYcQgaGlnaGVyIGxpbWl0IHVuZGVyIGBydW50aW1lLWJlbmNobWFya3NgIGZlYXR1cmUuAAG9CgAELFJ1bnRpbWVDYWxsIARoIFRoZSBhZ2dyZWdhdGVkIGNhbGwgdHlwZS4ABgAAKFBhcmFtZXRlcnMBKFBhcmFtZXRlcnMEKFBhcmFtZXRlcnMAAQQCJQg5CAQABEwgU3RvcmVkIHBhcmFtZXRlcnMuAAHQAAEhCAAAAAAABwAAUE11bHRpQmxvY2tNaWdyYXRpb25zAVBNdWx0aUJsb2NrTWlncmF0aW9ucwgYQ3Vyc29yAAAtAQQADNggVGhlIGN1cnJlbnRseSBhY3RpdmUgbWlncmF0aW9uIHRvIHJ1biBhbmQgaXRzIGN1cnNvci4AvCBgTm9uZWAgaW5kaWNhdGVzIHRoYXQgbm8gbWlncmF0aW9uIGlzIHJ1bm5pbmcuACBIaXN0b3JpYwABBAVBARAEABC0IFNldCBvZiBhbGwgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIG1pZ3JhdGlvbnMuAHEBIFRoaXMgaXMgdXNlZCBhcyBibGFja2xpc3QsIHRvIG5vdCByZS1leGVjdXRlIG1pZ3JhdGlvbnMgdGhhdCBoYXZlIG5vdCBiZWVuIHJlbW92ZWQgZnJvbSB0aGUxASBjb2RlYmFzZSB5ZXQuIEdvdmVybmFuY2UgY2FuIHJlZ3VsYXJseSBjbGVhciB0aGlzIG91dCB2aWEgYGNsZWFyX2hpc3RvcmljYC4AASUBAAFJCAAIMEN1cnNvck1heExlbjgQAAABABCkIFRoZSBtYXhpbWFsIGxlbmd0aCBvZiBhbiBlbmNvZGVkIGN1cnNvci4AZQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhIGN1cnNvciB3aXRoIE1FTAkBIGFib3ZlIHRoaXMgbGltaXQuIFRoaXMgaXMgc3RhdGljYWxseSBjaGVja2VkIGluIGBpbnRlZ3JpdHlfdGVzdGAuAEBJZGVudGlmaWVyTWF4TGVuOBAAAQAAELQgVGhlIG1heGltYWwgbGVuZ3RoIG9mIGFuIGVuY29kZWQgaWRlbnRpZmllci4AVQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhbiBpZGVudGlmaWVyLQEgd2l0aCBNRUwgYWJvdmUgdGhpcyBsaW1pdC4gVGhpcyBpcyBzdGF0aWNhbGx5IGNoZWNrZWQgaW4gYGludGVncml0eV90ZXN0YC4AAcEKAAAQCyAZms41ZNCWTixNSpukaZRNvP9qbOGk0LJ8b8wC0kw4b25nb2luZ19zdGF0dXMAxQoEqCBSZXR1cm5zIHRoZSBvbmdvaW5nIHN0YXR1cyBvZiBtaWdyYXRpb25zLgALIBmazjVk0JZOLE1Km6RpXr13bLFdm5EuJ41NLWLFoSBwcm9ncmVzcwDJChAJASBSZXR1cm5zIHByb2dyZXNzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbiwgaWYgYW55LgBRASBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHByb2dyZXNzLB0BIGluY2x1ZGluZyB0aGUgbnVtYmVyIG9mIHN0ZXBzIGNvbXBsZXRlZCBhbmQgdGhlIG1heGltdW0gYWxsb3dlZCBzdGVwcy4ACyAZms41ZNCWTixNSpukaUavS87G81p7u+6dn8EJW+FEYWZmZWN0ZWRfcHJlZml4ZXMANAwBASBSZXR1cm5zIHRoZSBzdG9yYWdlIHByZWZpeGVzIGFmZmVjdGVkIGJ5IHRoZSBjdXJyZW50IG1pZ3JhdGlvbi4AGQEgQ2FuIGJlIGVtcHR5IGlmIHRoZSBtaWdyYXRpb24gZG9lcyBub3Qga25vdyBvciB0aGVyZSBhcmUgbm8gcHJlZml4ZXMuAAsgGZrONWTQlk4sTUqbpGmqTCigbxmIRb0bsp7GIF3dGHN0YXR1cwDRCgTwIFJldHVybnMgdGhlIGNvbXByZWhlbnNpdmUgc3RhdHVzIG9mIG11bHRpLWJsb2NrIG1pZ3JhdGlvbnMuAAgAADRXZWlnaHRSZWNsYWltAAAAAAAAAAkIgQEgUGFsbGV0IHRvIHVzZSBhbG9uZ3NpZGUgdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBbYFN0b3JhZ2VXZWlnaHRSZWNsYWltYF0sIHRoZSBwYWxsZXQgcHJvdmlkZXOMIHdlaWdodCBpbmZvcm1hdGlvbiBhbmQgYmVuY2htYXJrcy4AIEJhbGFuY2VzASBCYWxhbmNlcxw0VG90YWxJc3N1YW5jZQEAVQFAAAAAAAAAAAAAAAAAAAAAAASYIFRoZSB0b3RhbCB1bml0cyBpc3N1ZWQgaW4gdGhlIHN5c3RlbS4AQEluYWN0aXZlSXNzdWFuY2UBAFUBQAAAAAAAAAAAAAAAAAAAAAAECQEgVGhlIHRvdGFsIHVuaXRzIG9mIG91dHN0YW5kaW5nIGRlYWN0aXZhdGVkIGJhbGFuY2UgaW4gdGhlIHN5c3RlbS4AHEFjY291bnQBAQQCBNEHAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAYAkBIFRoZSBCYWxhbmNlcyBwYWxsZXQgZXhhbXBsZSBvZiBzdG9yaW5nIHRoZSBiYWxhbmNlIG9mIGFuIGFjY291bnQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7GQIgICAgdHlwZSBBY2NvdW50U3RvcmUgPSBTdG9yYWdlTWFwU2hpbTxTZWxmOjpBY2NvdW50PFJ1bnRpbWU+LCBmcmFtZV9zeXN0ZW06OlByb3ZpZGVyPFJ1bnRpbWU+LCBBY2NvdW50SWQsIFNlbGY6OkFjY291bnREYXRhPEJhbGFuY2U+PgwgIH0QIGBgYAAVASBZb3UgY2FuIGFsc28gc3RvcmUgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudCBpbiB0aGUgYFN5c3RlbWAgcGFsbGV0LgAoICMgRXhhbXBsZQA0IGBgYG5vY29tcGlsZbAgIGltcGwgcGFsbGV0X2JhbGFuY2VzOjpDb25maWcgZm9yIFJ1bnRpbWUge3QgICB0eXBlIEFjY291bnRTdG9yZSA9IFN5c3RlbQwgIH0QIGBgYABRASBCdXQgdGhpcyBjb21lcyB3aXRoIHRyYWRlb2Zmcywgc3RvcmluZyBhY2NvdW50IGJhbGFuY2VzIGluIHRoZSBzeXN0ZW0gcGFsbGV0IHN0b3Jlc20BIGBmcmFtZV9zeXN0ZW1gIGRhdGEgYWxvbmdzaWRlIHRoZSBhY2NvdW50IGRhdGEgY29udHJhcnkgdG8gc3RvcmluZyBhY2NvdW50IGJhbGFuY2VzIGluIHRoZSkBIGBCYWxhbmNlc2AgcGFsbGV0LCB3aGljaCB1c2VzIGEgYFN0b3JhZ2VNYXBgIHRvIHN0b3JlIGJhbGFuY2VzIGRhdGEgb25seS5BASBOT1RFOiBUaGlzIGlzIG9ubHkgdXNlZCBpbiB0aGUgY2FzZSB0aGF0IHRoaXMgcGFsbGV0IGlzIHVzZWQgdG8gc3RvcmUgYmFsYW5jZXMuABRMb2NrcwEBBAIE1QoEABC4IEFueSBsaXF1aWRpdHkgbG9ja3Mgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLiUBIE5PVEU6IFNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIHdoZW4gc2V0dGluZywgY2hhbmdpbmcgYW5kIGZyZWVpbmcgYSBsb2NrLgCtASBVc2Ugb2YgbG9ja3MgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgZnJlZXplcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gACBSZXNlcnZlcwEBBAIE5QoEAAykIE5hbWVkIHJlc2VydmVzIG9uIHNvbWUgYWNjb3VudCBiYWxhbmNlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAFEhvbGRzAQEEAgTxCgQABGwgSG9sZHMgb24gYWNjb3VudCBiYWxhbmNlcy4AHEZyZWV6ZXMBAQQCBP0KBAAEiCBGcmVlemUgbG9ja3Mgb24gYWNjb3VudCBiYWxhbmNlcy4AAU0BAAFNCAAQSEV4aXN0ZW50aWFsRGVwb3NpdFUBQADh9QUAAAAAAAAAAAAAAAAgQQEgVGhlIG1pbmltdW0gYW1vdW50IHJlcXVpcmVkIHRvIGtlZXAgYW4gYWNjb3VudCBvcGVuLiBNVVNUIEJFIEdSRUFURVIgVEhBTiBaRVJPIQBZASBJZiB5b3UgKnJlYWxseSogbmVlZCBpdCB0byBiZSB6ZXJvLCB5b3UgY2FuIGVuYWJsZSB0aGUgZmVhdHVyZSBgaW5zZWN1cmVfemVyb19lZGAgZm9yYQEgdGhpcyBwYWxsZXQuIEhvd2V2ZXIsIHlvdSBkbyBzbyBhdCB5b3VyIG93biByaXNrOiB0aGlzIHdpbGwgb3BlbiB1cCBhIG1ham9yIERvUyB2ZWN0b3IuWQEgSW4gY2FzZSB5b3UgaGF2ZSBtdWx0aXBsZSBzb3VyY2VzIG9mIHByb3ZpZGVyIHJlZmVyZW5jZXMsIHlvdSBtYXkgYWxzbyBnZXQgdW5leHBlY3RlZIwgYmVoYXZpb3VyIGlmIHlvdSBzZXQgdGhpcyB0byB6ZXJvLgDwIEJvdHRvbSBsaW5lOiBEbyB5b3Vyc2VsZiBhIGZhdm91ciBhbmQgbWFrZSBpdCBhdCBsZWFzdCBvbmUhACBNYXhMb2NrczgQMgAAABD0IFRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NrcyB0aGF0IHNob3VsZCBleGlzdCBvbiBhbiBhY2NvdW50LtwgTm90IHN0cmljdGx5IGVuZm9yY2VkLCBidXQgdXNlZCBmb3Igd2VpZ2h0IGVzdGltYXRpb24uAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AALE1heFJlc2VydmVzOBAyAAAADA0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBuYW1lZCByZXNlcnZlcyB0aGF0IGNhbiBleGlzdCBvbiBhbiBhY2NvdW50LgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAoTWF4RnJlZXplczgQAgAAAARhASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5kaXZpZHVhbCBmcmVlemUgbG9ja3MgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudCBhdCBhbnkgdGltZS4AARULABBEUnVudGltZUhvbGRSZWFzb25VCAR0IFRoZSBvdmVyYXJjaGluZyBob2xkIHJlYXNvbi4cQmFsYW5jZVUBBGwgVGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC5EUmVzZXJ2ZUlkZW50aWZpZXJZAgxoIFRoZSBJRCB0eXBlIGZvciByZXNlcnZlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2BARnJlZXplSWRlbnRpZmllcgULBGQgVGhlIElEIHR5cGUgZm9yIGZyZWV6ZXMuAAoAAEhUcmFuc2FjdGlvblBheW1lbnQBSFRyYW5zYWN0aW9uUGF5bWVudAxETmV4dEZlZU11bHRpcGxpZXIBAA0FQAAAZKeztuANAAAAAAAAAAAAADhTdG9yYWdlVmVyc2lvbgEAGQsEAAAAPFR4UGF5bWVudENyZWRpdAAAHQsEAAzwIFRoZSBgT25DaGFyZ2VUcmFuc2FjdGlvbmAgc3RvcmVzIHRoZSB3aXRoZHJhd24gdHggZmVlIGhlcmUuADUBIFVzZSBgd2l0aGRyYXdfdHhmZWVgIGFuZCBgcmVtYWluaW5nX3R4ZmVlYCB0byBhY2Nlc3MgZnJvbSBvdXRzaWRlIHRoZSBjcmF0ZS4AAAGFCAAEYE9wZXJhdGlvbmFsRmVlTXVsdGlwbGllcgwEBVRZASBBIGZlZSBtdWx0aXBsaWVyIGZvciBgT3BlcmF0aW9uYWxgIGV4dHJpbnNpY3MgdG8gY29tcHV0ZSAidmlydHVhbCB0aXAiIHRvIGJvb3N0IHRoZWlyLCBgcHJpb3JpdHlgAFEBIFRoaXMgdmFsdWUgaXMgbXVsdGlwbGllZCBieSB0aGUgYGZpbmFsX2ZlZWAgdG8gb2J0YWluIGEgInZpcnR1YWwgdGlwIiB0aGF0IGlzIGxhdGVy9CBhZGRlZCB0byBhIHRpcCBjb21wb25lbnQgaW4gcmVndWxhciBgcHJpb3JpdHlgIGNhbGN1bGF0aW9ucy5NASBJdCBtZWFucyB0aGF0IGEgYE5vcm1hbGAgdHJhbnNhY3Rpb24gY2FuIGZyb250LXJ1biBhIHNpbWlsYXJseS1zaXplZCBgT3BlcmF0aW9uYWxgQQEgZXh0cmluc2ljICh3aXRoIG5vIHRpcCksIGJ5IGluY2x1ZGluZyBhIHRpcCB2YWx1ZSBncmVhdGVyIHRoYW4gdGhlIHZpcnR1YWwgdGlwLgA8IGBgYHJ1c3QsaWdub3JlQCAvLyBGb3IgYE5vcm1hbGCMIGxldCBwcmlvcml0eSA9IHByaW9yaXR5X2NhbGModGlwKTsAVCAvLyBGb3IgYE9wZXJhdGlvbmFsYBEBIGxldCB2aXJ0dWFsX3RpcCA9IChpbmNsdXNpb25fZmVlICsgdGlwKSAqIE9wZXJhdGlvbmFsRmVlTXVsdGlwbGllcjvEIGxldCBwcmlvcml0eSA9IHByaW9yaXR5X2NhbGModGlwICsgdmlydHVhbF90aXApOxAgYGBgAFEBIE5vdGUgdGhhdCBzaW5jZSB3ZSB1c2UgYGZpbmFsX2ZlZWAgdGhlIG11bHRpcGxpZXIgYXBwbGllcyBhbHNvIHRvIHRoZSByZWd1bGFyIGB0aXBgXQEgc2VudCB3aXRoIHRoZSB0cmFuc2FjdGlvbi4gU28sIG5vdCBvbmx5IGRvZXMgdGhlIHRyYW5zYWN0aW9uIGdldCBhIHByaW9yaXR5IGJ1bXAgYmFzZWRhASBvbiB0aGUgYGluY2x1c2lvbl9mZWVgLCBidXQgd2UgYWxzbyBhbXBsaWZ5IHRoZSBpbXBhY3Qgb2YgdGlwcyBhcHBsaWVkIHRvIGBPcGVyYXRpb25hbGA4IHRyYW5zYWN0aW9ucy4AAAAACwAAOEFzc2V0VHhQYXltZW50AAABiQgAAAAAAA0AABxWZXN0aW5nARxWZXN0aW5nCBxWZXN0aW5nAAEEAgQlCwQABNggSW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSB2ZXN0aW5nIG9mIGEgZ2l2ZW4gYWNjb3VudC4AOFN0b3JhZ2VWZXJzaW9uAQAtCwQADHwgU3RvcmFnZSB2ZXJzaW9uIG9mIHRoZSBwYWxsZXQuADEBIE5ldyBuZXR3b3JrcyBzdGFydCB3aXRoIGxhdGVzdCB2ZXJzaW9uLCBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBnZW5lc2lzIGJ1aWxkLgABZQEAAY0IAAhETWluVmVzdGVkVHJhbnNmZXJVAUAA4fUFAAAAAAAAAAAAAAAABOggVGhlIG1pbmltdW0gYW1vdW50IHRyYW5zZmVycmVkIHRvIGNhbGwgYHZlc3RlZF90cmFuc2ZlcmAuAExNYXhWZXN0aW5nU2NoZWR1bGVzOBAcAAAAAAABMQsAAAAOAAAYQ2xhaW1zARhDbGFpbXMUGENsYWltcwABBAZ5AVUBBAAAABRUb3RhbAEAVQFAAAAAAAAAAAAAAAAAAAAAAAAAHFZlc3RpbmcAAQQGeQGBAQQAEHggVmVzdGluZyBzY2hlZHVsZSBmb3IgYSBjbGFpbS4NASBGaXJzdCBiYWxhbmNlIGlzIHRoZSB0b3RhbCBhbW91bnQgdGhhdCBzaG91bGQgYmUgaGVsZCBmb3IgdmVzdGluZy7kIFNlY29uZCBiYWxhbmNlIGlzIGhvdyBtdWNoIHNob3VsZCBiZSB1bmxvY2tlZCBwZXIgYmxvY2suzCBUaGUgYmxvY2sgbnVtYmVyIGlzIHdoZW4gdGhlIHZlc3Rpbmcgc2hvdWxkIHN0YXJ0LgAcU2lnbmluZwABBAZ5AYkBBAAEwCBUaGUgc3RhdGVtZW50IGtpbmQgdGhhdCBtdXN0IGJlIHNpZ25lZCwgaWYgYW55LgAkUHJlY2xhaW1zAAEEBgR5AQQABC0BIFByZS1jbGFpbWVkIEV0aGVyZXVtIGFjY291bnRzLCBieSB0aGUgQWNjb3VudCBJRCB0aGF0IHRoZXkgYXJlIGNsYWltZWQgdG8uAAFtAQABkQgABBhQcmVmaXgYiIRQYXkgRE9UcyB0byB0aGUgUG9sa2Fkb3QgYWNjb3VudDoAAAE1CwAAAA8AAChBdXRob3JzaGlwAShBdXRob3JzaGlwBBhBdXRob3IAAAQEAARkIEF1dGhvciBvZiBjdXJyZW50IGJsb2NrLgAAAAAAAAAUAABEQ29sbGF0b3JTZWxlY3Rpb24BRENvbGxhdG9yU2VsZWN0aW9uFDRJbnZ1bG5lcmFibGVzAQA5CwQABBEBIFRoZSBpbnZ1bG5lcmFibGUsIHBlcm1pc3Npb25lZCBjb2xsYXRvcnMuIFRoaXMgbGlzdCBtdXN0IGJlIHNvcnRlZC4ANENhbmRpZGF0ZUxpc3QBAD0LBAAUaQEgVGhlIChjb21tdW5pdHksIGxpbWl0ZWQpIGNvbGxhdGlvbiBjYW5kaWRhdGVzLiBgQ2FuZGlkYXRlc2AgYW5kIGBJbnZ1bG5lcmFibGVzYCBzaG91bGQgYmVQIG11dHVhbGx5IGV4Y2x1c2l2ZS4AdQEgVGhpcyBsaXN0IGlzIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgZGVwb3NpdCBhbmQgd2hlbiB0aGUgZGVwb3NpdHMgYXJlIGVxdWFsLCB0aGUgbGVhc3SgIHJlY2VudGx5IHVwZGF0ZWQgaXMgY29uc2lkZXJlZCBncmVhdGVyLgBETGFzdEF1dGhvcmVkQmxvY2sBAQQFBDgQAAAAAASEIExhc3QgYmxvY2sgYXV0aG9yZWQgYnkgY29sbGF0b3IuAEREZXNpcmVkQ2FuZGlkYXRlcwEAOBAAAAAADHggRGVzaXJlZCBudW1iZXIgb2YgY2FuZGlkYXRlcy4AdQEgVGhpcyBzaG91bGQgaWRlYWxseSBhbHdheXMgYmUgbGVzcyB0aGFuIFtgQ29uZmlnOjpNYXhDYW5kaWRhdGVzYF0gZm9yIHdlaWdodHMgdG8gYmUgY29ycmVjdC4ANENhbmRpZGFjeUJvbmQBAFUBQAAAAAAAAAAAAAAAAAAAAAAMuCBGaXhlZCBhbW91bnQgdG8gZGVwb3NpdCB0byBiZWNvbWUgYSBjb2xsYXRvci4AQQEgV2hlbiBhIGNvbGxhdG9yIGNhbGxzIGBsZWF2ZV9pbnRlbnRgIHRoZXkgaW1tZWRpYXRlbHkgcmVjZWl2ZSB0aGUgZGVwb3NpdCBiYWNrLgABkQEAAZUIABgUUG90SWRJCyBQb3RTdGFrZQT0IEFjY291bnQgSWRlbnRpZmllciBmcm9tIHdoaWNoIHRoZSBpbnRlcm5hbCBQb3QgaXMgZ2VuZXJhdGVkLgA0TWF4Q2FuZGlkYXRlczgQZAAAAAzIIE1heGltdW0gbnVtYmVyIG9mIGNhbmRpZGF0ZXMgdGhhdCB3ZSBzaG91bGQgaGF2ZS4AzCBUaGlzIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBpbnZ1bG5lcmFibGVzLgBQTWluRWxpZ2libGVDb2xsYXRvcnM4EAQAAAAMVQEgTWluaW11bSBudW1iZXIgZWxpZ2libGUgY29sbGF0b3JzLiBTaG91bGQgYWx3YXlzIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiBUaGlzIGluY2x1ZGVzUQEgSW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlcmUgd2lsbCBhbHdheXMgYmUgb25lIGNvbGxhdG9yIHdobyBjYW5EIHByb2R1Y2UgYSBibG9jay4AQE1heEludnVsbmVyYWJsZXM4EBQAAAAEhCBNYXhpbXVtIG51bWJlciBvZiBpbnZ1bG5lcmFibGVzLgA0S2lja1RocmVzaG9sZDgQEA4AAAAALHBvdF9hY2NvdW50BIBtb2RsUG90U3Rha2UAAAAAAAAAAAAAAAAAAAAAAAAAAASgIEdldHMgdGhpcyBwYWxsZXQncyBkZXJpdmVkIHBvdCBhY2NvdW50LgABTQsABCxWYWxpZGF0b3JJZAQEdCBBIHN0YWJsZSBJRCBmb3IgYSB2YWxpZGF0b3IuABUAABxTZXNzaW9uARxTZXNzaW9uIChWYWxpZGF0b3JzAQBdAQQABHwgVGhlIGN1cnJlbnQgc2V0IG9mIHZhbGlkYXRvcnMuADBDdXJyZW50SW5kZXgBADgQAAAAAAR4IEN1cnJlbnQgaW5kZXggb2YgdGhlIHNlc3Npb24uADRRdWV1ZWRDaGFuZ2VkAQBZAQQACDkBIFRydWUgaWYgdGhlIHVuZGVybHlpbmcgZWNvbm9taWMgaWRlbnRpdGllcyBvciB3ZWlnaHRpbmcgYmVoaW5kIHRoZSB2YWxpZGF0b3JzpCBoYXMgY2hhbmdlZCBpbiB0aGUgcXVldWVkIHZhbGlkYXRvciBzZXQuAChRdWV1ZWRLZXlzAQBRCwQACD0BIFRoZSBxdWV1ZWQga2V5cyBmb3IgdGhlIG5leHQgc2Vzc2lvbi4gV2hlbiB0aGUgbmV4dCBzZXNzaW9uIGJlZ2lucywgdGhlc2Uga2V5c+Agd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgdmFsaWRhdG9yJ3Mgc2Vzc2lvbiBrZXlzLgBIRGlzYWJsZWRWYWxpZGF0b3JzAQBZCwQAFIAgSW5kaWNlcyBvZiBkaXNhYmxlZCB2YWxpZGF0b3JzLgA9ASBUaGUgdmVjIGlzIGFsd2F5cyBrZXB0IHNvcnRlZCBzbyB0aGF0IHdlIGNhbiBmaW5kIHdoZXRoZXIgYSBnaXZlbiB2YWxpZGF0b3IgaXM9ASBkaXNhYmxlZCB1c2luZyBiaW5hcnkgc2VhcmNoLiBJdCBnZXRzIGNsZWFyZWQgd2hlbiBgb25fc2Vzc2lvbl9lbmRpbmdgIHJldHVybnNkIGEgbmV3IHNldCBvZiBpZGVudGl0aWVzLgAgTmV4dEtleXMAAQQFBJkBBAAEnCBUaGUgbmV4dCBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yLgAgS2V5T3duZXIAAQQFZQsEBAAECQEgVGhlIG93bmVyIG9mIGEga2V5LiBUaGUga2V5IGlzIHRoZSBgS2V5VHlwZUlkYCArIHRoZSBlbmNvZGVkIGtleS4AREV4dGVybmFsbHlTZXRLZXlzAAEEBQQQBAAQMQEgQWNjb3VudHMgd2hvc2Uga2V5cyB3ZXJlIHNldCB2aWEgYFNlc3Npb25JbnRlcmZhY2VgIChleHRlcm5hbCBwYXRoKSB3aXRob3V0OQEgaW5jcmVtZW50aW5nIHRoZSBjb25zdW1lciByZWZlcmVuY2Ugb3IgcGxhY2luZyBhIGtleSBkZXBvc2l0LiBgZG9fcHVyZ2Vfa2V5c2A5ASBvbmx5IGRlY3JlbWVudHMgY29uc3VtZXJzIGZvciBhY2NvdW50cyB0aGF0IHdlcmUgcmVnaXN0ZXJlZCB0aHJvdWdoIHRoZSBsb2NhbEAgc2Vzc2lvbiBwYWxsZXQuAAGVAQABmQgABChLZXlEZXBvc2l0VQFAAAAAAAAAAAAAAAAAAAAAAASkIFRoZSBhbW91bnQgdG8gYmUgaGVsZCB3aGVuIHNldHRpbmcga2V5cy4AAW0LAAgsVmFsaWRhdG9ySWQEBHQgQSBzdGFibGUgSUQgZm9yIGEgdmFsaWRhdG9yLhBLZXlzmQEEKCBUaGUga2V5cy4AFgAAEEF1cmEBEEF1cmEILEF1dGhvcml0aWVzAQBxCwQABGwgVGhlIGN1cnJlbnQgYXV0aG9yaXR5IHNldC4ALEN1cnJlbnRTbG90AQB5CyAAAAAAAAAAAAyAIFRoZSBjdXJyZW50IHNsb3Qgb2YgdGhpcyBibG9jay4AlCBUaGlzIHdpbGwgYmUgc2V0IGluIGBvbl9pbml0aWFsaXplYC4AAAAEMFNsb3REdXJhdGlvbigg4C4AAAAAAAAUDQEgVGhlIHNsb3QgZHVyYXRpb24gQXVyYSBzaG91bGQgcnVuIHdpdGgsIGV4cHJlc3NlZCBpbiBtaWxsaXNlY29uZHMuACEBIFRoZSBlZmZlY3RpdmUgdmFsdWUgb2YgdGhpcyB0eXBlIGNhbiBiZSBjaGFuZ2VkIHdpdGggYSBydW50aW1lIHVwZ3JhZGUuADUBIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBlaXRoZXIgdXNlIFtgTWluaW11bVBlcmlvZFRpbWVzVHdvYF0gb3IgYSBjb25zdC4AAAQsQXV0aG9yaXR5SWSdAQSYIFRoZSBpZGVudGlmaWVyIHR5cGUgZm9yIGFuIGF1dGhvcml0eS4AFwAAHEF1cmFFeHQBHEF1cmFFeHQILEF1dGhvcml0aWVzAQBxCwQAFJQgU2VydmVzIGFzIGNhY2hlIGZvciB0aGUgYXV0aG9yaXRpZXMuAHEBIFRoZSBhdXRob3JpdGllcyBpbiBBdVJhIGFyZSBvdmVyd3JpdHRlbiBpbiBgb25faW5pdGlhbGl6ZWAgd2hlbiB3ZSBzd2l0Y2ggdG8gYSBuZXcgc2Vzc2lvbixdASBidXQgd2UgcmVxdWlyZSB0aGUgb2xkIGF1dGhvcml0aWVzIHRvIHZlcmlmeSB0aGUgc2VhbCB3aGVuIHZhbGlkYXRpbmcgYSBQb1YuIFRoaXMgd2lsbA0BIGFsd2F5cyBiZSB1cGRhdGVkIHRvIHRoZSBsYXRlc3QgQXVSYSBhdXRob3JpdGllcyBpbiBgb25fZmluYWxpemVgLgA0UmVsYXlTbG90SW5mbwAAfQsEABAJASBDdXJyZW50IHJlbGF5IGNoYWluIHNsb3QgcGFpcmVkIHdpdGggYSBudW1iZXIgb2YgYXV0aG9yZWQgYmxvY2tzLgBlASBUaGlzIGlzIHVwZGF0ZWQgaW4gW2BGaXhlZFZlbG9jaXR5Q29uc2Vuc3VzSG9vazo6b25fc3RhdGVfcHJvb2ZgXSB3aXRoIHRoZSBjdXJyZW50IHJlbGF53CBjaGFpbiBzbG90IGFzIHByb3ZpZGVkIGJ5IHRoZSByZWxheSBjaGFpbiBzdGF0ZSBwcm9vZi4AAAAAAAAAGAAAJFhjbXBRdWV1ZQEkWGNtcFF1ZXVlHFBJbmJvdW5kWGNtcFN1c3BlbmRlZAEAgQsEACANASBUaGUgc3VzcGVuZGVkIGluYm91bmQgWENNUCBjaGFubmVscy4gQWxsIG90aGVycyBhcmUgbm90IHN1c3BlbmRlZC4AcQEgVGhpcyBpcyBhIGBTdG9yYWdlVmFsdWVgIGluc3RlYWQgb2YgYSBgU3RvcmFnZU1hcGAgc2luY2Ugd2UgZXhwZWN0IG11bHRpcGxlIHJlYWRzIHBlciBibG9ja2kBIHRvIGRpZmZlcmVudCBrZXlzIHdpdGggYSBvbmUgYnl0ZSBwYXlsb2FkLiBUaGUgYWNjZXNzIHRvIGBCb3VuZGVkQlRyZWVTZXRgIHdpbGwgYmUgY2FjaGVkFQEgd2l0aGluIHRoZSBibG9jayBhbmQgdGhlcmVmb3JlIG9ubHkgaW5jbHVkZWQgb25jZSBpbiB0aGUgcHJvb2Ygc2l6ZS4AZQEgTk9URTogVGhlIFBvViBiZW5jaG1hcmtpbmcgY2Fubm90IGtub3cgdGhpcyBhbmQgd2lsbCBvdmVyLWVzdGltYXRlLCBidXQgdGhlIGFjdHVhbCBwcm9vZkQgd2lsbCBiZSBzbWFsbGVyLgBIT3V0Ym91bmRYY21wU3RhdHVzAQCJCwQAGF0BIFRoZSBub24tZW1wdHkgWENNUCBjaGFubmVscyBpbiBvcmRlciBvZiBiZWNvbWluZyBub24tZW1wdHksIGFuZCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0UQEgYW5kIGxhc3Qgb3V0Ym91bmQgbWVzc2FnZS4gSWYgdGhlIHR3byBpbmRpY2VzIGFyZSBlcXVhbCwgdGhlbiBpdCBpbmRpY2F0ZXMgYW4gZW1wdHlZASBxdWV1ZSBhbmQgdGhlcmUgbXVzdCBiZSBhIG5vbi1gT2tgIGBPdXRib3VuZFN0YXR1c2AuIFdlIGFzc3VtZSBxdWV1ZXMgZ3JvdyBubyBncmVhdGVyWQEgdGhhbiA2NTUzNSBpdGVtcy4gUXVldWUgaW5kaWNlcyBmb3Igbm9ybWFsIG1lc3NhZ2VzIGJlZ2luIGF0IG9uZTsgemVybyBpcyByZXNlcnZlZCBpbhEBIGNhc2Ugb2YgdGhlIG5lZWQgdG8gc2VuZCBhIGhpZ2gtcHJpb3JpdHkgc2lnbmFsIG1lc3NhZ2UgdGhpcyBibG9jay4JASBUaGUgYm9vbCBpcyB0cnVlIGlmIHRoZXJlIGlzIGEgc2lnbmFsIG1lc3NhZ2Ugd2FpdGluZyB0byBiZSBzZW50LgBQT3V0Ym91bmRYY21wTWVzc2FnZXMBAQgCBZ0LoQsEAAS8IFRoZSBtZXNzYWdlcyBvdXRib3VuZCBpbiBhIGdpdmVuIFhDTVAgY2hhbm5lbC4AOFNpZ25hbE1lc3NhZ2VzAQEEApyhCwQABKAgQW55IHNpZ25hbCBtZXNzYWdlcyB3YWl0aW5nIHRvIGJlIHNlbnQuACxRdWV1ZUNvbmZpZwEApQswIAAAADAAAAAIAAAABBUBIFRoZSBjb25maWd1cmF0aW9uIHdoaWNoIGNvbnRyb2xzIHRoZSBkeW5hbWljcyBvZiB0aGUgb3V0Ym91bmQgcXVldWUuADhRdWV1ZVN1c3BlbmRlZAEAWQEEAARBASBXaGV0aGVyIG9yIG5vdCB0aGUgWENNUCBxdWV1ZSBpcyBzdXNwZW5kZWQgZnJvbSBleGVjdXRpbmcgaW5jb21pbmcgWENNcyBvciBub3QuAEREZWxpdmVyeUZlZUZhY3RvcgEBBAWcDQVAAABkp7O24A0AAAAAAAAAAATEIFRoZSBmYWN0b3IgdG8gbXVsdGlwbHkgdGhlIGJhc2UgZGVsaXZlcnkgZmVlIGJ5LgABoQEAAZ0IAAxMTWF4SW5ib3VuZFN1c3BlbmRlZDgQ6AMAABRJASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5ib3VuZCBYQ01QIGNoYW5uZWxzIHRoYXQgY2FuIGJlIHN1c3BlbmRlZCBzaW11bHRhbmVvdXNseS4AXQEgQW55IGZ1cnRoZXIgY2hhbm5lbCBzdXNwZW5zaW9ucyB3aWxsIGZhaWwgYW5kIG1lc3NhZ2VzIG1heSBnZXQgZHJvcHBlZCB3aXRob3V0IGZ1cnRoZXJFASBub3RpY2UuIENob29zaW5nIGEgaGlnaCB2YWx1ZSAoMTAwMCkgaXMgb2theTsgdGhlIHRyYWRlLW9mZiB0aGF0IGlzIGRlc2NyaWJlZCBpbtggW2BJbmJvdW5kWGNtcFN1c3BlbmRlZGBdIHN0aWxsIGFwcGxpZXMgYXQgdGhhdCBzY2FsZS4AZE1heEFjdGl2ZU91dGJvdW5kQ2hhbm5lbHM4EIAAAAAgZQEgTWF4aW1hbCBudW1iZXIgb2Ygb3V0Ym91bmQgWENNUCBjaGFubmVscyB0aGF0IGNhbiBoYXZlIG1lc3NhZ2VzIHF1ZXVlZCBhdCB0aGUgc2FtZSB0aW1lLgBVASBJZiB0aGlzIGlzIHJlYWNoZWQsIHRoZW4gbm8gZnVydGhlciBtZXNzYWdlcyBjYW4gYmUgc2VudCB0byBjaGFubmVscyB0aGF0IGRvIG5vdCB5ZXRdASBoYXZlIGEgbWVzc2FnZSBxdWV1ZWQuIFRoaXMgc2hvdWxkIGJlIHNldCB0byB0aGUgZXhwZWN0ZWQgbWF4aW11bSBvZiBvdXRib3VuZCBjaGFubmVsc2EBIHdoaWNoIGlzIGRldGVybWluZWQgYnkgW2BTZWxmOjpDaGFubmVsSW5mb2BdLiBJdCBpcyBpbXBvcnRhbnQgdG8gc2V0IHRoaXMgbGFyZ2UgZW5vdWdoLF0BIHNpbmNlIG90aGVyd2lzZSB0aGUgY29uZ2VzdGlvbiBjb250cm9sIHByb3RvY29sIHdpbGwgbm90IHdvcmsgYXMgaW50ZW5kZWQgYW5kIG1lc3NhZ2VzUQEgbWF5IGJlIGRyb3BwZWQuIFRoaXMgdmFsdWUgaW5jcmVhc2VzIHRoZSBQb1YgYW5kIHNob3VsZCB0aGVyZWZvcmUgbm90IGJlIHBpY2tlZCB0b29NASBoaWdoLiBHb3Zlcm5hbmNlIG5lZWRzIHRvIHBheSBhdHRlbnRpb24gdG8gbm90IG9wZW4gbW9yZSBjaGFubmVscyB0aGFuIHRoaXMgdmFsdWUuACxNYXhQYWdlU2l6ZTgQAJwBABS4IFRoZSBtYXhpbWFsIHBhZ2Ugc2l6ZSBmb3IgSFJNUCBtZXNzYWdlIHBhZ2VzLgBhASBBIGxvd2VyIGxpbWl0IGNhbiBiZSBzZXQgZHluYW1pY2FsbHksIGJ1dCB0aGlzIGlzIHRoZSBoYXJkLWxpbWl0IGZvciB0aGUgUG9WIHdvcnN0IGNhc2VVASBiZW5jaG1hcmtpbmcuIFRoZSBsaW1pdCBmb3IgdGhlIHNpemUgb2YgYSBtZXNzYWdlIGlzIHNsaWdodGx5IGJlbG93IHRoaXMsIHNpbmNlIHNvbWW4IG92ZXJoZWFkIGlzIGluY3VycmVkIGZvciBlbmNvZGluZyB0aGUgZm9ybWF0LgABqQsAAAAeAAAsUG9sa2Fkb3RYY20BLFBvbGthZG90WGNtPDBRdWVyeUNvdW50ZXIBACggAAAAAAAAAAAEiCBUaGUgbGF0ZXN0IGF2YWlsYWJsZSBxdWVyeSBpbmRleC4AHFF1ZXJpZXMAAQQCKK0LBAAEVCBUaGUgb25nb2luZyBxdWVyaWVzLgAoQXNzZXRUcmFwcwEBBAY8OBAAAAAAEGggVGhlIGV4aXN0aW5nIGFzc2V0IHRyYXBzLgBhASBLZXkgaXMgdGhlIGJsYWtlMiAyNTYgaGFzaCBvZiAob3JpZ2luLCB2ZXJzaW9uZWQgYEFzc2V0c2ApIHBhaXIuIFZhbHVlIGlzIHRoZSBudW1iZXIgb2YdASB0aW1lcyB0aGlzIHBhaXIgaGFzIGJlZW4gdHJhcHBlZCAodXN1YWxseSBqdXN0IDEgaWYgaXQgZXhpc3RzIGF0IGFsbCkuADhTYWZlWGNtVmVyc2lvbgAAOAQACGEBIERlZmF1bHQgdmVyc2lvbiB0byBlbmNvZGUgWENNIHdoZW4gbGF0ZXN0IHZlcnNpb24gb2YgZGVzdGluYXRpb24gaXMgdW5rbm93bi4gSWYgYE5vbmVgLD0BIHRoZW4gdGhlIGRlc3RpbmF0aW9ucyB3aG9zZSBYQ00gdmVyc2lvbiBpcyB1bmtub3duIGFyZSBjb25zaWRlcmVkIHVucmVhY2hhYmxlLgBAU3VwcG9ydGVkVmVyc2lvbgABCAUCwQs4BAAE8CBUaGUgTGF0ZXN0IHZlcnNpb25zIHRoYXQgd2Uga25vdyB2YXJpb3VzIGxvY2F0aW9ucyBzdXBwb3J0LgBAVmVyc2lvbk5vdGlmaWVycwABCAUCwQsoBAAEBQEgQWxsIGxvY2F0aW9ucyB0aGF0IHdlIGhhdmUgcmVxdWVzdGVkIHZlcnNpb24gbm90aWZpY2F0aW9ucyBmcm9tLgBQVmVyc2lvbk5vdGlmeVRhcmdldHMAAQgFAsELxQsEAAhxASBUaGUgdGFyZ2V0IGxvY2F0aW9ucyB0aGF0IGFyZSBzdWJzY3JpYmVkIHRvIG91ciB2ZXJzaW9uIGNoYW5nZXMsIGFzIHdlbGwgYXMgdGhlIG1vc3QgcmVjZW50lCBvZiBvdXIgdmVyc2lvbnMgd2UgaW5mb3JtZWQgdGhlbSBvZi4AVFZlcnNpb25EaXNjb3ZlcnlRdWV1ZQEAyQsEAAxlASBEZXN0aW5hdGlvbnMgd2hvc2UgbGF0ZXN0IFhDTSB2ZXJzaW9uIHdlIHdvdWxkIGxpa2UgdG8ga25vdy4gRHVwbGljYXRlcyBub3QgYWxsb3dlZCwgYW5kcQEgdGhlIGB1MzJgIGNvdW50ZXIgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGEgc2VuZCB0byB0aGUgZGVzdGluYXRpb24gaGFzIGJlZW4gYXR0ZW1wdGVkLIwgd2hpY2ggaXMgdXNlZCBhcyBhIHByaW9yaXRpemF0aW9uLgBAQ3VycmVudE1pZ3JhdGlvbgAA1QsEAAScIFRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHN0YWdlLCBpZiBhbnkuAFRSZW1vdGVMb2NrZWRGdW5naWJsZXMAAQwFAgLZC90LBAAE8CBGdW5naWJsZSBhc3NldHMgd2hpY2ggd2Uga25vdyBhcmUgbG9ja2VkIG9uIGEgcmVtb3RlIGNoYWluLgA8TG9ja2VkRnVuZ2libGVzAAEEAgTtCwQABOAgRnVuZ2libGUgYXNzZXRzIHdoaWNoIHdlIGtub3cgYXJlIGxvY2tlZCBvbiB0aGlzIGNoYWluLgBUWGNtRXhlY3V0aW9uU3VzcGVuZGVkAQBZAQQABLQgR2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4APFNob3VsZFJlY29yZFhjbQEAWQEEABxZASBXaGV0aGVyIG9yIG5vdCBpbmNvbWluZyBYQ01zIChib3RoIGV4ZWN1dGVkIGxvY2FsbHkgYW5kIHJlY2VpdmVkKSBzaG91bGQgYmUgcmVjb3JkZWQuxCBPbmx5IG9uZSBYQ00gcHJvZ3JhbSB3aWxsIGJlIHJlY29yZGVkIGF0IGEgdGltZS4pASBUaGlzIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gcnVudGltZSBBUElzLCBhbmQgaXQncyBhZHZpc2VkIGl0IHN0YXlzIGZhbHNlDQEgZm9yIGFsbCBvdGhlciB1c2UgY2FzZXMsIHNvIGFzIHRvIG5vdCBkZWdyYWRlIHJlZ3VsYXIgcGVyZm9ybWFuY2UuAFkBIE9ubHkgcmVsZXZhbnQgaWYgdGhpcyBwYWxsZXQgaXMgYmVpbmcgdXNlZCBhcyB0aGUgW2B4Y21fZXhlY3V0b3I6OnRyYWl0czo6UmVjb3JkWGNtYF3IIGltcGxlbWVudGF0aW9uIGluIHRoZSBYQ00gZXhlY3V0b3IgY29uZmlndXJhdGlvbi4ALFJlY29yZGVkWGNtAAD1AgQAGEkBIElmIFtgU2hvdWxkUmVjb3JkWGNtYF0gaXMgc2V0IHRvIHRydWUsIHRoZW4gdGhlIGxhc3QgWENNIHByb2dyYW0gZXhlY3V0ZWQgbG9jYWxseVQgd2lsbCBiZSBzdG9yZWQgaGVyZS4pASBSdW50aW1lIEFQSXMgY2FuIGZldGNoIHRoZSBYQ00gdGhhdCB3YXMgZXhlY3V0ZWQgYnkgYWNjZXNzaW5nIHRoaXMgdmFsdWUuAFkBIE9ubHkgcmVsZXZhbnQgaWYgdGhpcyBwYWxsZXQgaXMgYmVpbmcgdXNlZCBhcyB0aGUgW2B4Y21fZXhlY3V0b3I6OnRyYWl0czo6UmVjb3JkWGNtYF3IIGltcGxlbWVudGF0aW9uIGluIHRoZSBYQ00gZXhlY3V0b3IgY29uZmlndXJhdGlvbi4AREF1dGhvcml6ZWRBbGlhc2VzAAEEAqkB+QsEAAxlASBNYXAgb2YgYXV0aG9yaXplZCBhbGlhc2VycyBvZiBsb2NhbCBvcmlnaW5zLiBFYWNoIGxvY2FsIGxvY2F0aW9uIGNhbiBhdXRob3JpemUgYSBsaXN0IG9mWQEgb3RoZXIgbG9jYXRpb25zIHRvIGFsaWFzIGludG8gaXQuIEVhY2ggYWxpYXNlciBpcyBvbmx5IHZhbGlkIHVudGlsIGl0cyBpbm5lciBgZXhwaXJ5YDggYmxvY2sgbnVtYmVyLgABpQEIAQK5AVRoaXMgZXh0cmluc2ljIHVzZXMgYFdlaWdodExpbWl0OjpVbmxpbWl0ZWRgLCBwbGVhc2UgbWlncmF0ZSB0byBgbGltaXRlZF90ZWxlcG9ydF9hc3NldHNgIG9yIGB0cmFuc2Zlcl9hc3NldHNgAAIC2QFUaGlzIGV4dHJpbnNpYyB1c2VzIGBXZWlnaHRMaW1pdDo6VW5saW1pdGVkYCwgcGxlYXNlIG1pZ3JhdGUgdG8gYGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHNgIG9yIGB0cmFuc2Zlcl9hc3NldHNgAAGhCAAQRFVuaXZlcnNhbExvY2F0aW9uAQIYAgkCAHEXBIQgVGhpcyBjaGFpbidzIFVuaXZlcnNhbCBMb2NhdGlvbi4AUEFkdmVydGlzZWRYY21WZXJzaW9uOBAFAAAACCUBIFRoZSBsYXRlc3Qgc3VwcG9ydGVkIHZlcnNpb24gdGhhdCB3ZSBhZHZlcnRpc2UuIEdlbmVyYWxseSBqdXN0IHNldCBpdCB0b4QgYHBhbGxldF94Y206OkN1cnJlbnRYY21WZXJzaW9uYC4AKE1heExvY2tlcnM4EAgAAAAEGQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGxvY2FsIFhDTSBsb2NrcyB0aGF0IGEgc2luZ2xlIGFjY291bnQgbWF5IGhhdmUuAFhNYXhSZW1vdGVMb2NrQ29uc3VtZXJzOBAAAAAABPwgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBhIHNpbmdsZSByZW1vdGUgbG9jayBtYXkgaGF2ZS4AAREMBBgCvFVzZSBgTG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlV2l0aEVycm9yYCBpbnN0ZWFkARgyMC4wLjAILFJ1bnRpbWVDYWxsIARkIFRoZSBydW50aW1lIGBDYWxsYCB0eXBlLnBSZW1vdGVMb2NrQ29uc3VtZXJJZGVudGlmaWVyEATEIFRoZSBJRCB0eXBlIGZvciBsb2NhbCBjb25zdW1lcnMgb2YgcmVtb3RlIGxvY2tzLgAfAAAoQ3VtdWx1c1hjbQABpQMAAbEIAAAAAAAgAABEVG9LdXNhbWFYY21Sb3V0ZXIBRFRvS3VzYW1hWGNtUm91dGVyBBhCcmlkZ2UBABkMRAAAZKeztuANAAAAAAAAAAAAHGggQnJpZGdlIHRoYXQgd2UgYXJlIHVzaW5nLgBxASAqKmJyaWRnZXMtdjEqKiBhc3N1bXB0aW9uczogYWxsIG91dGJvdW5kIG1lc3NhZ2VzIHRocm91Z2ggdGhpcyByb3V0ZXIgYXJlIHVzaW5nIHNpbmdsZSBsYW5lbQEgYW5kIHRvIHNpbmdsZSByZW1vdGUgY29uc2Vuc3VzLiBJZiB0aGVyZSBpcyBzb21lIG90aGVyIHJlbW90ZSBjb25zZW5zdXMgdGhhdCB1c2VzIHRoZSBzYW1lYQEgYnJpZGdlIGh1YiwgdGhlIHNlcGFyYXRlIHBhbGxldCBpbnN0YW5jZSBzaGFsbCBiZSB1c2VkLCBJbiBgdjJgIHdlJ2xsIGhhdmUgYWxsIHJlcXVpcmVkcQEgcHJpbWl0aXZlcyAobGFuZS1pZCBha2EgYnJpZGdlLWlkLCBkZXJpdmVkIGZyb20gWENNIGxvY2F0aW9ucykgdG8gc3VwcG9ydCBtdWx0aXBsZSAgYnJpZGdlc3QgYnkgdGhlIHNhbWUgcGFsbGV0IGluc3RhbmNlLgABqQMAAbUIAAAAAAAiAAAwTWVzc2FnZVF1ZXVlATBNZXNzYWdlUXVldWUMMEJvb2tTdGF0ZUZvcgEBBAWxAx0MdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMwgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBhbmQgbGFzdCAobm9uLWVtcHR5KSBwYWdlcy4ALFNlcnZpY2VIZWFkAACxAwQABLwgVGhlIG9yaWdpbiBhdCB3aGljaCB3ZSBzaG91bGQgYmVnaW4gc2VydmljaW5nLgAUUGFnZXMAAQgFBSkMLQwEAASIIFRoZSBtYXAgb2YgcGFnZSBpbmRpY2VzIHRvIHBhZ2VzLgABrQMAAbkIABAgSGVhcFNpemU4EAAAAQAUPQEgVGhlIHNpemUgb2YgdGhlIHBhZ2U7IHRoaXMgaW1wbGllcyB0aGUgbWF4aW11bSBtZXNzYWdlIHNpemUgd2hpY2ggY2FuIGJlIHNlbnQuAFkBIEEgZ29vZCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBleHBlY3RlZCBtZXNzYWdlIHNpemVzLCB0aGVpciB3ZWlnaHRzLCB0aGUgd2VpZ2h0IHRoYXQgaXNdASBhdmFpbGFibGUgZm9yIHByb2Nlc3NpbmcgdGhlbSBhbmQgdGhlIG1heGltYWwgbmVlZGVkIG1lc3NhZ2Ugc2l6ZS4gVGhlIG1heGltYWwgbWVzc2FnZREBIHNpemUgaXMgc2xpZ2h0bHkgbG93ZXIgdGhhbiB0aGlzIGFzIGRlZmluZWQgYnkgW2BNYXhNZXNzYWdlTGVuT2ZgXS4AIE1heFN0YWxlOBAIAAAADF0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFsZSBwYWdlcyAoaS5lLiBvZiBvdmVyd2VpZ2h0IG1lc3NhZ2VzKSBhbGxvd2VkIGJlZm9yZSBjdWxsaW5nUQEgY2FuIGhhcHBlbi4gT25jZSB0aGVyZSBhcmUgbW9yZSBzdGFsZSBwYWdlcyB0aGFuIHRoaXMsIHRoZW4gaGlzdG9yaWNhbCBwYWdlcyBtYXkgYmX8IGRyb3BwZWQsIGV2ZW4gaWYgdGhleSBjb250YWluIHVucHJvY2Vzc2VkIG92ZXJ3ZWlnaHQgbWVzc2FnZXMuADRTZXJ2aWNlV2VpZ2h0DQEsAQcAEKXU6AIAQAEYQQEgVGhlIGFtb3VudCBvZiB3ZWlnaHQgKGlmIGFueSkgd2hpY2ggc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlIGZvcqggc2VydmljaW5nIGVucXVldWVkIGl0ZW1zIGBvbl9pbml0aWFsaXplYC4A/CBUaGlzIG1heSBiZSBsZWdpdGltYXRlbHkgYE5vbmVgIGluIHRoZSBjYXNlIHRoYXQgeW91IHdpbGwgY2FsbF0BIGBTZXJ2aWNlUXVldWVzOjpzZXJ2aWNlX3F1ZXVlc2AgbWFudWFsbHkgb3Igc2V0IFtgU2VsZjo6SWRsZU1heFNlcnZpY2VXZWlnaHRgXSB0byBoYXZlVCBpdCBydW4gaW4gYG9uX2lkbGVgLgBQSWRsZU1heFNlcnZpY2VXZWlnaHQNASwBBwAQpdToAgBAARRdASBUaGUgbWF4aW11bSBhbW91bnQgb2Ygd2VpZ2h0IChpZiBhbnkpIHRvIGJlIHVzZWQgZnJvbSByZW1haW5pbmcgd2VpZ2h0IGBvbl9pZGxlYCB3aGljaEEBIHNob3VsZCBiZSBwcm92aWRlZCB0byB0aGUgbWVzc2FnZSBxdWV1ZSBmb3Igc2VydmljaW5nIGVucXVldWVkIGl0ZW1zIGBvbl9pZGxlYC49ASBVc2VmdWwgZm9yIHBhcmFjaGFpbnMgdG8gcHJvY2VzcyBtZXNzYWdlcyBhdCB0aGUgc2FtZSBibG9jayB0aGV5IGFyZSByZWNlaXZlZC4AKQEgSWYgYE5vbmVgLCBpdCB3aWxsIG5vdCBjYWxsIGBTZXJ2aWNlUXVldWVzOjpzZXJ2aWNlX3F1ZXVlc2AgaW4gYG9uX2lkbGVgLgABNQwABBBTaXplOARUIFBhZ2UvaGVhcCBzaXplIHR5cGUuACMAAGBTbm93YnJpZGdlU3lzdGVtRnJvbnRlbmQBYFNub3dicmlkZ2VTeXN0ZW1Gcm9udGVuZARMRXhwb3J0T3BlcmF0aW5nTW9kZQEAuQMEAATYIFRoZSBjdXJyZW50IG9wZXJhdGluZyBtb2RlIGZvciBleHBvcnRpbmcgdG8gRXRoZXJldW0uAAG1AwABwQgAAAE5DAAAACQAABxVdGlsaXR5AAHJAwABxQgABExiYXRjaGVkX2NhbGxzX2xpbWl0OBCqKgAABKggVGhlIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgYmF0Y2hlZCBjYWxscy4AAT0MAAgsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS40UGFsbGV0c09yaWdpbtUDBPAgVGhlIGNhbGxlciBvcmlnaW4sIG92ZXJhcmNoaW5nIHR5cGUgb2YgYWxsIHBhbGxldHMgb3JpZ2lucy4AKAAAIE11bHRpc2lnASBNdWx0aXNpZwQkTXVsdGlzaWdzAAEIBQJBDEUMBAAElCBUaGUgc2V0IG9mIG9wZW4gbXVsdGlzaWcgb3BlcmF0aW9ucy4AAQ0EAAHJCAAMLERlcG9zaXRCYXNlVQFAANu7dwAAAAAAAAAAAAAAABhZASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGEgbXVsdGlzaWcgZXhlY3V0aW9uIG9yIHRvhCBzdG9yZSBhIGRpc3BhdGNoIGNhbGwgZm9yIGxhdGVyLgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMxASBgNCArIHNpemVvZigoQmxvY2tOdW1iZXIsIEJhbGFuY2UsIEFjY291bnRJZCkpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXOAIGAzMiArIHNpemVvZihBY2NvdW50SWQpYCBieXRlcy4ANERlcG9zaXRGYWN0b3JVAUAA1DAAAAAAAAAAAAAAAAAADFUBIFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciB1bml0IHRocmVzaG9sZCB3aGVuIGNyZWF0aW5nIGEgbXVsdGlzaWcgZXhlY3V0aW9uLgAlASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyAzMiBieXRlcyBtb3JlIGludG8gYSBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4AOE1heFNpZ25hdG9yaWVzOBBkAAAABOwgVGhlIG1heGltdW0gYW1vdW50IG9mIHNpZ25hdG9yaWVzIGFsbG93ZWQgaW4gdGhlIG11bHRpc2lnLgABTQwABCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLgApAAAUUHJveHkBFFByb3h5CBxQcm94aWVzAQEEBQRRDEQAAAAAAAAAAAAAAAAAAAAAAAhFASBUaGUgc2V0IG9mIGFjY291bnQgcHJveGllcy4gTWFwcyB0aGUgYWNjb3VudCB3aGljaCBoYXMgZGVsZWdhdGVkIHRvIHRoZSBhY2NvdW50cyEBIHdoaWNoIGFyZSBiZWluZyBkZWxlZ2F0ZWQgdG8sIHRvZ2V0aGVyIHdpdGggdGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQuADRBbm5vdW5jZW1lbnRzAQEEBQRhDEQAAAAAAAAAAAAAAAAAAAAAAASsIFRoZSBhbm5vdW5jZW1lbnRzIG1hZGUgYnkgdGhlIHByb3h5IChrZXkpLgABGQQAAc0IABhAUHJveHlEZXBvc2l0QmFzZVUBQACdcncAAAAAAAAAAAAAAAAQEQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhIHByb3h5LgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMlASBgc2l6ZW9mKEJhbGFuY2UpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXMgYHNpemVvZihBY2NvdW50SWQpYCBieXRlcy4ASFByb3h5RGVwb3NpdEZhY3RvclUBQKBaMgAAAAAAAAAAAAAAAAAUvCBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgcHJveHkgYWRkZWQuADUBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIDMyIGJ5dGVzIHBsdXMgYW4gaW5zdGFuY2Ugb2YgYFByb3h5VHlwZWAgbW9yZSBpbnRvIGFhASBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4gVGh1cywgd2hlbiBjb25maWd1cmluZyBgUHJveHlEZXBvc2l0RmFjdG9yYCBvbmUgc2hvdWxkIHRha2X0IGludG8gYWNjb3VudCBgMzIgKyBwcm94eV90eXBlLmVuY29kZSgpLmxlbigpYCBieXRlcyBvZiBkYXRhLgAoTWF4UHJveGllczgQIAAAAATwIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBwcm94aWVzIGFsbG93ZWQgZm9yIGEgc2luZ2xlIGFjY291bnQuAChNYXhQZW5kaW5nOBAgAAAABEUBIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lLWRlbGF5ZWQgYW5ub3VuY2VtZW50cyB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIHBlbmRpbmcuAFxBbm5vdW5jZW1lbnREZXBvc2l0QmFzZVUBQADSfncAAAAAAAAAAAAAAAAQMQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhbiBhbm5vdW5jZW1lbnQuAEkBIFRoaXMgaXMgaGVsZCB3aGVuIGEgbmV3IHN0b3JhZ2UgaXRlbSBob2xkaW5nIGEgYEJhbGFuY2VgIGlzIGNyZWF0ZWQgKHR5cGljYWxseSAxNiAgYnl0ZXMpLgBkQW5ub3VuY2VtZW50RGVwb3NpdEZhY3RvclUBQEC1ZAAAAAAAAAAAAAAAAAAQ1CBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgYW5ub3VuY2VtZW50IG1hZGUuAFkBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIGFuIGBBY2NvdW50SWRgLCBgSGFzaGAgYW5kIGBCbG9ja051bWJlcmAgKHR5cGljYWxseSA2OCBieXRlcymMIGludG8gYSBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4AAXEMAAgsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS4kUHJveHlUeXBlIQQQVQEgQSBraW5kIG9mIHByb3h5OyBzcGVjaWZpZWQgd2l0aCB0aGUgcHJveHkgYW5kIHBhc3NlZCBpbiB0byB0aGUgYElzUHJveHlhYmxlYCBmaWx0ZXIuUQEgVGhlIGluc3RhbmNlIGZpbHRlciBkZXRlcm1pbmVzIHdoZXRoZXIgYSBnaXZlbiBjYWxsIG1heSBiZSBwcm94aWVkIHVuZGVyIHRoaXMgdHlwZS4ATQEgSU1QT1JUQU5UOiBgRGVmYXVsdGAgbXVzdCBiZSBwcm92aWRlZCBhbmQgTVVTVCBCRSB0aGUgdGhlICptb3N0IHBlcm1pc3NpdmUqIHZhbHVlLggYCdeDRnJ6DvWMD6A7r6Mjy8UUiNkqGqcTewO/tQ78F0RjaGVja19wZXJtaXNzaW9ucwgQY2FsbCAocHJveHlfdHlwZSEEWQEE9CBDaGVjayBpZiBhIGBSdW50aW1lQ2FsbGAgaXMgYWxsb3dlZCBmb3IgYSBnaXZlbiBgUHJveHlUeXBlYC4AGAnXg0Zyeg71jA+gO6+jIxcUsGB9Yq8KOzsK0sXVXFgsaXNfc3VwZXJzZXQIIHRvX2NoZWNrIQQcYWdhaW5zdCEEWQEE9CBDaGVjayBpZiBvbmUgYFByb3h5VHlwZWAgaXMgYSBzdWJzZXQgb2YgYW5vdGhlciBgUHJveHlUeXBlYC4AKgAAHEluZGljZXMBHEluZGljZXMEIEFjY291bnRzAAEEAjh1DAQABIggVGhlIGxvb2t1cCBmcm9tIGluZGV4IHRvIGFjY291bnQuAAElBAAB1QgABBxEZXBvc2l0VQFAANJ+dwAAAAAAAAAAAAAAAASsIFRoZSBkZXBvc2l0IG5lZWRlZCBmb3IgcmVzZXJ2aW5nIGFuIGluZGV4LgABeQwABDBBY2NvdW50SW5kZXg4CFUBIFR5cGUgdXNlZCBmb3Igc3RvcmluZyBhbiBhY2NvdW50J3MgaW5kZXg7IGltcGxpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGFjY291bnRzIHRoZUQgc3lzdGVtIGNhbiBob2xkLgArAAAYQXNzZXRzARhBc3NldHMYFEFzc2V0AAEEAjh9DAQABFQgRGV0YWlscyBvZiBhbiBhc3NldC4AHEFjY291bnQAAQgCAoUMiQwEAATkIFRoZSBob2xkaW5ncyBvZiBhIHNwZWNpZmljIGFjY291bnQgZm9yIGEgc3BlY2lmaWMgYXNzZXQuACRBcHByb3ZhbHMAAQwCAgKVDJkMBAAMWQEgQXBwcm92ZWQgYmFsYW5jZSB0cmFuc2ZlcnMuIEZpcnN0IGJhbGFuY2UgaXMgdGhlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIuIFNlY29uZOggaXMgdGhlIGFtb3VudCBvZiBgVDo6Q3VycmVuY3lgIHJlc2VydmVkIGZvciBzdG9yaW5nIHRoaXMuSQEgRmlyc3Qga2V5IGlzIHRoZSBhc3NldCBJRCwgc2Vjb25kIGtleSBpcyB0aGUgb3duZXIgYW5kIHRoaXJkIGtleSBpcyB0aGUgZGVsZWdhdGUuACBNZXRhZGF0YQEBBAI4nQxQAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4AIFJlc2VydmVzAQEEAjgtBAQABPwgTWFwcyBhbiBhc3NldCB0byBhIGxpc3Qgb2YgaXRzIGNvbmZpZ3VyZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbi4ALE5leHRBc3NldElkAAA4BAAkbQEgVGhlIGFzc2V0IElEIGVuZm9yY2VkIGZvciB0aGUgbmV4dCBhc3NldCBjcmVhdGlvbiwgaWYgYW55IHByZXNlbnQuIE90aGVyd2lzZSwgdGhpcyBzdG9yYWdlUCBpdGVtIGhhcyBubyBlZmZlY3QuAGUBIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Igc2V0dGluZyB1cCBjb25zdHJhaW50cyBmb3IgSURzIG9mIHRoZSBuZXcgYXNzZXRzLiBGb3IgZXhhbXBsZSwgYnlpASBwcm92aWRpbmcgYW4gaW5pdGlhbCBbYE5leHRBc3NldElkYF0gYW5kIHVzaW5nIHRoZSBbYGNyYXRlOjpBdXRvSW5jQXNzZXRJZGBdIGNhbGxiYWNrLCBhbuggYXV0by1pbmNyZW1lbnQgbW9kZWwgY2FuIGJlIGFwcGxpZWQgdG8gYWxsIG5ldyBhc3NldCBJRHMuACEBIFRoZSBpbml0aWFsIG5leHQgYXNzZXQgSUQgY2FuIGJlIHNldCB1c2luZyB0aGUgW2BHZW5lc2lzQ29uZmlnYF0gb3IgdGhlIQEgW1NldE5leHRBc3NldElkXShgbWlncmF0aW9uOjpuZXh0X2Fzc2V0X2lkOjpTZXROZXh0QXNzZXRJZGApIG1pZ3JhdGlvbi4AASkEAAHZCAAcQFJlbW92ZUl0ZW1zTGltaXQ4EOgDAAAMUQEgTWF4IG51bWJlciBvZiBpdGVtcyB0byBkZXN0cm95IHBlciBgZGVzdHJveV9hY2NvdW50c2AgYW5kIGBkZXN0cm95X2FwcHJvdmFsc2AgY2FsbC4AOQEgTXVzdCBiZSBjb25maWd1cmVkIHRvIHJlc3VsdCBpbiBhIHdlaWdodCB0aGF0IG1ha2VzIGVhY2ggY2FsbCBmaXQgaW4gYSBibG9jay4AMEFzc2V0RGVwb3NpdFUBQMB+V3gAAAAAAAAAAAAAAAAE+CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gYXNzZXQuAExBc3NldEFjY291bnREZXBvc2l0VQFAAP5NdwAAAAAAAAAAAAAAAAhFASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYSBub24tcHJvdmlkZXIgYXNzZXQgYWNjb3VudCB0byBiZTAgbWFpbnRhaW5lZC4ATE1ldGFkYXRhRGVwb3NpdEJhc2VVAUCAVp13AAAAAAAAAAAAAAAABFEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgYXNzZXQuAFhNZXRhZGF0YURlcG9zaXRQZXJCeXRlVQFAoIYBAAAAAAAAAAAAAAAAAAhVASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgeW91IHN0b3JlIGluIHlvdXIoIG1ldGFkYXRhLgA8QXBwcm92YWxEZXBvc2l0VQFAAOH1BQAAAAAAAAAAAAAAAAQhASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGNyZWF0aW5nIGEgbmV3IGFwcHJvdmFsLgAsU3RyaW5nTGltaXQ4EDIAAAAE4CBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBuYW1lIG9yIHN5bWJvbCBzdG9yZWQgb24tY2hhaW4uAAGlDAAUHEJhbGFuY2VVAQScIFRoZSB1bml0cyBpbiB3aGljaCB3ZSByZWNvcmQgYmFsYW5jZXMuHEFzc2V0SWQ4BIwgSWRlbnRpZmllciBmb3IgdGhlIGNsYXNzIG9mIGFzc2V0LkBBc3NldElkUGFyYW1ldGVyYBxZASBXcmFwcGVyIGFyb3VuZCBgU2VsZjo6QXNzZXRJZGAgdG8gdXNlIGluIGRpc3BhdGNoYWJsZSBjYWxsIHNpZ25hdHVyZXMuIEFsbG93cyB0aGUgdXNlUQEgb2YgY29tcGFjdCBlbmNvZGluZyBpbiBpbnN0YW5jZXMgb2YgdGhlIHBhbGxldCwgd2hpY2ggd2lsbCBwcmV2ZW50IGJyZWFraW5nIGNoYW5nZXMFASByZXN1bHRpbmcgZnJvbSB0aGUgcmVtb3ZhbCBvZiBgSGFzQ29tcGFjdGAgZnJvbSBgU2VsZjo6QXNzZXRJZGAuAFkBIFRoaXMgdHlwZSBpbmNsdWRlcyB0aGUgYEZyb208U2VsZjo6QXNzZXRJZD5gIGJvdW5kLCBzaW5jZSB0aWdodGx5IGNvdXBsZWQgcGFsbGV0cyBtYXlFASB3YW50IHRvIGNvbnZlcnQgYW4gYEFzc2V0SWRgIGludG8gYSBwYXJhbWV0ZXIgZm9yIGNhbGxpbmcgZGlzcGF0Y2hhYmxlIGZ1bmN0aW9ucyggZGlyZWN0bHkuLFJlc2VydmVEYXRhEAToIEluZm9ybWF0aW9uIGFib3V0IHJlc2VydmUgbG9jYXRpb25zIGZvciBhIGNsYXNzIG9mIGFzc2V0LhRFeHRyYRAE+CBBZGRpdGlvbmFsIGRhdGEgdG8gYmUgc3RvcmVkIHdpdGggYW4gYWNjb3VudCdzIGFzc2V0IGJhbGFuY2UuEGgqWdUaueSKjIzEGP+XCNKnApetC0vdPaS3RimmWm5cNGFzc2V0X2RldGFpbHMECGlkOKkMBKggUHJvdmlkZSB0aGUgYXNzZXQgZGV0YWlscyBmb3IgYXNzZXQgYGlkYC4AaCpZ1Rq55IqMjMQY/5cI0lMax+IbdrEh52Hkc0GaGwIoYmFsYW5jZV9vZggMd2hvBAhpZDhJBAS0IFByb3ZpZGUgdGhlIGJhbGFuY2Ugb2YgYHdob2AgZm9yIGFzc2V0IGBpZGAuAGgqWdUaueSKjIzEGP+XCNIuh2akDRtp1hUb2AHldVBeMGdldF9tZXRhZGF0YQQIaWQ4rQwEwCBQcm92aWRlIHRoZSBjb25maWd1cmVkIG1ldGFkYXRhIGZvciBhc3NldCBgaWRgLgBoKlnVGrnkioyMxBj/lwjSZPY/KSPjmCgkMWOBrh5phkRnZXRfcmVzZXJ2ZXNfZGF0YQQIaWQ4MQQE1CBQcm92aWRlIHRoZSBjb25maWd1cmVkIHJlc2VydmVzIGRhdGEgZm9yIGFzc2V0IGBpZGAuADIAABxVbmlxdWVzARxVbmlxdWVzKBRDbGFzcwABBAI4sQwEAARkIERldGFpbHMgb2YgYSBjb2xsZWN0aW9uLgBMT3duZXJzaGlwQWNjZXB0YW5jZQABBAIEOAQABCkBIFRoZSBjb2xsZWN0aW9uLCBpZiBhbnksIG9mIHdoaWNoIGFuIGFjY291bnQgaXMgd2lsbGluZyB0byB0YWtlIG93bmVyc2hpcC4AHEFjY291bnQAAQwCAgK1DBAEAAhZASBUaGUgaXRlbXMgaGVsZCBieSBhbnkgZ2l2ZW4gYWNjb3VudDsgc2V0IG91dCB0aGlzIHdheSBzbyB0aGF0IGl0ZW1zIG93bmVkIGJ5IGEgc2luZ2xlbCBhY2NvdW50IGNhbiBiZSBlbnVtZXJhdGVkLgAwQ2xhc3NBY2NvdW50AAEIAgKJBRAEAAhpASBUaGUgY29sbGVjdGlvbnMgb3duZWQgYnkgYW55IGdpdmVuIGFjY291bnQ7IHNldCBvdXQgdGhpcyB3YXkgc28gdGhhdCBjb2xsZWN0aW9ucyBvd25lZCBieZAgYSBzaW5nbGUgYWNjb3VudCBjYW4gYmUgZW51bWVyYXRlZC4AFEFzc2V0AAEIAgLMuQwEAATQIFRoZSBpdGVtcyBpbiBleGlzdGVuY2UgYW5kIHRoZWlyIG93bmVyc2hpcCBkZXRhaWxzLgA8Q2xhc3NNZXRhZGF0YU9mAAEEAji9DAQABGggTWV0YWRhdGEgb2YgYSBjb2xsZWN0aW9uLgBISW5zdGFuY2VNZXRhZGF0YU9mAAEIAgLMwQwEAARUIE1ldGFkYXRhIG9mIGFuIGl0ZW0uACRBdHRyaWJ1dGUAAQwCAgLFDMkMBAAEcCBBdHRyaWJ1dGVzIG9mIGEgY29sbGVjdGlvbi4ALEl0ZW1QcmljZU9mAAEIAgLMzQwEAARwIFByaWNlIG9mIGFuIGFzc2V0IGluc3RhbmNlLgBMQ29sbGVjdGlvbk1heFN1cHBseQABBAI4OAQABPAgS2VlcHMgdHJhY2sgb2YgdGhlIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gbWlnaHQgaGF2ZS4AATUEAAHdCAAgRENvbGxlY3Rpb25EZXBvc2l0VQFAAOh2SBcAAAAAAAAAAAAAAAQBASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgY29sbGVjdGlvbi4ALEl0ZW1EZXBvc2l0VQFAAOH1BQAAAAAAAAAAAAAAAAT0IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBpdGVtLgBMTWV0YWRhdGFEZXBvc2l0QmFzZVUBQKBq+ncAAAAAAAAAAAAAAAAETQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBpdGVtLgBQQXR0cmlidXRlRGVwb3NpdEJhc2VVAUAAlDV3AAAAAAAAAAAAAAAABFUBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIGFuIGF0dHJpYnV0ZSB0byBhbiBpdGVtLgA4RGVwb3NpdFBlckJ5dGVVAUCghgEAAAAAAAAAAAAAAAAACFkBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyBzdG9yZSBpbiBtZXRhZGF0YSzAIGVpdGhlciAibm9ybWFsIiBtZXRhZGF0YSBvciBhdHRyaWJ1dGUgbWV0YWRhdGEuACxTdHJpbmdMaW1pdDgQgAAAAASwIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBkYXRhIHN0b3JlZCBvbi1jaGFpbi4AIEtleUxpbWl0OBAgAAAABKAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFuIGF0dHJpYnV0ZSBrZXkuAChWYWx1ZUxpbWl0OBBAAAAABKggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFuIGF0dHJpYnV0ZSB2YWx1ZS4AAdEMAAgwQ29sbGVjdGlvbklkOAScIElkZW50aWZpZXIgZm9yIHRoZSBjb2xsZWN0aW9uIG9mIGl0ZW0uGEl0ZW1JZDgE9CBUaGUgdHlwZSB1c2VkIHRvIGlkZW50aWZ5IGEgdW5pcXVlIGl0ZW0gd2l0aGluIGEgY29sbGVjdGlvbi4AMwAAEE5mdHMBEE5mdHM8KENvbGxlY3Rpb24AAQQCONUMBAAEZCBEZXRhaWxzIG9mIGEgY29sbGVjdGlvbi4ATE93bmVyc2hpcEFjY2VwdGFuY2UAAQQCBDgEAAQpASBUaGUgY29sbGVjdGlvbiwgaWYgYW55LCBvZiB3aGljaCBhbiBhY2NvdW50IGlzIHdpbGxpbmcgdG8gdGFrZSBvd25lcnNoaXAuABxBY2NvdW50AAEMAgICtQwQBAAIWQEgVGhlIGl0ZW1zIGhlbGQgYnkgYW55IGdpdmVuIGFjY291bnQ7IHNldCBvdXQgdGhpcyB3YXkgc28gdGhhdCBpdGVtcyBvd25lZCBieSBhIHNpbmdsZWwgYWNjb3VudCBjYW4gYmUgZW51bWVyYXRlZC4ARENvbGxlY3Rpb25BY2NvdW50AAEIAgKJBRAEAAhpASBUaGUgY29sbGVjdGlvbnMgb3duZWQgYnkgYW55IGdpdmVuIGFjY291bnQ7IHNldCBvdXQgdGhpcyB3YXkgc28gdGhhdCBjb2xsZWN0aW9ucyBvd25lZCBieZAgYSBzaW5nbGUgYWNjb3VudCBjYW4gYmUgZW51bWVyYXRlZC4AQENvbGxlY3Rpb25Sb2xlT2YAAQgCAoUM2QwEAAjQIFRoZSBpdGVtcyBpbiBleGlzdGVuY2UgYW5kIHRoZWlyIG93bmVyc2hpcCBkZXRhaWxzLqAgU3RvcmVzIGNvbGxlY3Rpb24gcm9sZXMgYXMgcGVyIGFjY291bnQuABBJdGVtAAEIAgLM4QwEAATQIFRoZSBpdGVtcyBpbiBleGlzdGVuY2UgYW5kIHRoZWlyIG93bmVyc2hpcCBkZXRhaWxzLgBQQ29sbGVjdGlvbk1ldGFkYXRhT2YAAQQCOPkMBAAEaCBNZXRhZGF0YSBvZiBhIGNvbGxlY3Rpb24uADhJdGVtTWV0YWRhdGFPZgABCAICzP0MBAAEVCBNZXRhZGF0YSBvZiBhbiBpdGVtLgAkQXR0cmlidXRlAAEQAgICAgUNCQ0EAARwIEF0dHJpYnV0ZXMgb2YgYSBjb2xsZWN0aW9uLgAsSXRlbVByaWNlT2YAAQgCAszNDAQABFAgQSBwcmljZSBvZiBhbiBpdGVtLgBkSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbHNPZgEBCAICzBENBAAEaCBJdGVtIGF0dHJpYnV0ZSBhcHByb3ZhbHMuAEBOZXh0Q29sbGVjdGlvbklkAAA4BAAIMQEgU3RvcmVzIHRoZSBgQ29sbGVjdGlvbklkYCB0aGF0IGlzIGdvaW5nIHRvIGJlIHVzZWQgZm9yIHRoZSBuZXh0IGNvbGxlY3Rpb24u8CBUaGlzIGdldHMgaW5jcmVtZW50ZWQgd2hlbmV2ZXIgYSBuZXcgY29sbGVjdGlvbiBpcyBjcmVhdGVkLgA0UGVuZGluZ1N3YXBPZgABCAICzBkNBAAEfCBIYW5kbGVzIGFsbCB0aGUgcGVuZGluZyBzd2Fwcy4ASENvbGxlY3Rpb25Db25maWdPZgABBAI4UQQEAARgIENvbmZpZyBvZiBhIGNvbGxlY3Rpb24uADBJdGVtQ29uZmlnT2YAAQgCAsx5BAQABEwgQ29uZmlnIG9mIGFuIGl0ZW0uAAFNBAAB4QgAOERDb2xsZWN0aW9uRGVwb3NpdFUBQEDx+3cAAAAAAAAAAAAAAAAEAQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGNvbGxlY3Rpb24uACxJdGVtRGVwb3NpdFUBQBAyAQMAAAAAAAAAAAAAAAAE9CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gaXRlbS4ATE1ldGFkYXRhRGVwb3NpdEJhc2VVAUAQcf8LAAAAAAAAAAAAAAAABE0BIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgaXRlbS4AUEF0dHJpYnV0ZURlcG9zaXRCYXNlVQFAAMLrCwAAAAAAAAAAAAAAAARVASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBhbiBhdHRyaWJ1dGUgdG8gYW4gaXRlbS4AOERlcG9zaXRQZXJCeXRlVQFAoIYBAAAAAAAAAAAAAAAAAAhZASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgc3RvcmUgaW4gbWV0YWRhdGEswCBlaXRoZXIgIm5vcm1hbCIgbWV0YWRhdGEgb3IgYXR0cmlidXRlIG1ldGFkYXRhLgAsU3RyaW5nTGltaXQ4EAABAAAEsCBUaGUgbWF4aW11bSBsZW5ndGggb2YgZGF0YSBzdG9yZWQgb24tY2hhaW4uACBLZXlMaW1pdDgQQAAAAASgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbiBhdHRyaWJ1dGUga2V5LgAoVmFsdWVMaW1pdDgQAAEAAASoIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbiBhdHRyaWJ1dGUgdmFsdWUuADhBcHByb3ZhbHNMaW1pdDgQFAAAAASoIFRoZSBtYXhpbXVtIGFwcHJvdmFscyBhbiBpdGVtIGNvdWxkIGhhdmUuAHBJdGVtQXR0cmlidXRlc0FwcHJvdmFsc0xpbWl0OBAeAAAABNQgVGhlIG1heGltdW0gYXR0cmlidXRlcyBhcHByb3ZhbHMgYW4gaXRlbSBjb3VsZCBoYXZlLgAcTWF4VGlwczgQCgAAAASoIFRoZSBtYXggbnVtYmVyIG9mIHRpcHMgYSB1c2VyIGNvdWxkIHNlbmQuAExNYXhEZWFkbGluZUR1cmF0aW9uOBAAGk8ABKggVGhlIG1heCBkdXJhdGlvbiBpbiBibG9ja3MgZm9yIGRlYWRsaW5lcy4AUE1heEF0dHJpYnV0ZXNQZXJDYWxsOBAKAAAABOAgVGhlIG1heCBudW1iZXIgb2YgYXR0cmlidXRlcyBhIHVzZXIgY291bGQgc2V0IHBlciBjYWxsLgAgRmVhdHVyZXMdDSAAAAAAAAAAAASQIERpc2FibGVzIHNvbWUgb2YgcGFsbGV0J3MgZmVhdHVyZXMuAAElDQAMMENvbGxlY3Rpb25JZDgknCBJZGVudGlmaWVyIGZvciB0aGUgY29sbGVjdGlvbiBvZiBpdGVtLgBJASBTQUZFVFk6IFRoZSBmdW5jdGlvbnMgaW4gdGhlIGBJbmNyZW1lbnRhYmxlYCB0cmFpdCBhcmUgZmFsbGlibGUuIElmIHRoZSBmdW5jdGlvbnNBASBvZiB0aGUgaW1wbGVtZW50YXRpb24gYm90aCByZXR1cm4gYE5vbmVgLCB0aGUgYXV0b21hdGljIENvbGxlY3Rpb25JZCBnZW5lcmF0aW9uKQEgc2hvdWxkIG5vdCBiZSB1c2VkLiBTbyB0aGUgYGNyZWF0ZWAgYW5kIGBmb3JjZV9jcmVhdGVgIGV4dHJpbnNpY3MgYW5kIHRoZU0BIGBjcmVhdGVfY29sbGVjdGlvbmAgZnVuY3Rpb24gd2lsbCByZXR1cm4gYW4gYFVua25vd25Db2xsZWN0aW9uYCBFcnJvci4gSW5zdGVhZCB1c2VBASB0aGUgYGNyZWF0ZV9jb2xsZWN0aW9uX3dpdGhfaWRgIGZ1bmN0aW9uLiBIb3dldmVyLCBpZiB0aGUgYEluY3JlbWVudGFibGVgIHRyYWl0SQEgaW1wbGVtZW50YXRpb24gaGFzIGFuIGluY3JlbWVudGFsIG9yZGVyLCB0aGUgYGNyZWF0ZV9jb2xsZWN0aW9uX3dpdGhfaWRgIGZ1bmN0aW9u/CBzaG91bGQgbm90IGJlIHVzZWQgYXMgaXQgY2FuIGNsYWltIGEgdmFsdWUgaW4gdGhlIElEIHNlcXVlbmNlLhhJdGVtSWQ4BPQgVGhlIHR5cGUgdXNlZCB0byBpZGVudGlmeSBhIHVuaXF1ZSBpdGVtIHdpdGhpbiBhIGNvbGxlY3Rpb24uRE9mZmNoYWluU2lnbmF0dXJloQQMaCBPZmYtQ2hhaW4gc2lnbmF0dXJlIHR5cGUuAAkBIENhbiB2ZXJpZnkgd2hldGhlciBhbiBgU2VsZjo6T2ZmY2hhaW5QdWJsaWNgIGNyZWF0ZWQgYSBzaWduYXR1cmUuADQAADRGb3JlaWduQXNzZXRzATRGb3JlaWduQXNzZXRzGBRBc3NldAABBAL9AX0MBAAEVCBEZXRhaWxzIG9mIGFuIGFzc2V0LgAcQWNjb3VudAABCAICKQ2JDAQABOQgVGhlIGhvbGRpbmdzIG9mIGEgc3BlY2lmaWMgYWNjb3VudCBmb3IgYSBzcGVjaWZpYyBhc3NldC4AJEFwcHJvdmFscwABDAICAi0NmQwEAAxZASBBcHByb3ZlZCBiYWxhbmNlIHRyYW5zZmVycy4gRmlyc3QgYmFsYW5jZSBpcyB0aGUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2Zlci4gU2Vjb25k6CBpcyB0aGUgYW1vdW50IG9mIGBUOjpDdXJyZW5jeWAgcmVzZXJ2ZWQgZm9yIHN0b3JpbmcgdGhpcy5JASBGaXJzdCBrZXkgaXMgdGhlIGFzc2V0IElELCBzZWNvbmQga2V5IGlzIHRoZSBvd25lciBhbmQgdGhpcmQga2V5IGlzIHRoZSBkZWxlZ2F0ZS4AIE1ldGFkYXRhAQEEAv0BMQ1QAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4AIFJlc2VydmVzAQEEAv0BsQQEAAT8IE1hcHMgYW4gYXNzZXQgdG8gYSBsaXN0IG9mIGl0cyBjb25maWd1cmVkIHJlc2VydmUgaW5mb3JtYXRpb24uACxOZXh0QXNzZXRJZAAA/QEEACRtASBUaGUgYXNzZXQgSUQgZW5mb3JjZWQgZm9yIHRoZSBuZXh0IGFzc2V0IGNyZWF0aW9uLCBpZiBhbnkgcHJlc2VudC4gT3RoZXJ3aXNlLCB0aGlzIHN0b3JhZ2VQIGl0ZW0gaGFzIG5vIGVmZmVjdC4AZQEgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBzZXR0aW5nIHVwIGNvbnN0cmFpbnRzIGZvciBJRHMgb2YgdGhlIG5ldyBhc3NldHMuIEZvciBleGFtcGxlLCBieWkBIHByb3ZpZGluZyBhbiBpbml0aWFsIFtgTmV4dEFzc2V0SWRgXSBhbmQgdXNpbmcgdGhlIFtgY3JhdGU6OkF1dG9JbmNBc3NldElkYF0gY2FsbGJhY2ssIGFu6CBhdXRvLWluY3JlbWVudCBtb2RlbCBjYW4gYmUgYXBwbGllZCB0byBhbGwgbmV3IGFzc2V0IElEcy4AIQEgVGhlIGluaXRpYWwgbmV4dCBhc3NldCBJRCBjYW4gYmUgc2V0IHVzaW5nIHRoZSBbYEdlbmVzaXNDb25maWdgXSBvciB0aGUhASBbU2V0TmV4dEFzc2V0SWRdKGBtaWdyYXRpb246Om5leHRfYXNzZXRfaWQ6OlNldE5leHRBc3NldElkYCkgbWlncmF0aW9uLgABrQQAAekIABxAUmVtb3ZlSXRlbXNMaW1pdDgQ6AMAAAxRASBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIGRlc3Ryb3kgcGVyIGBkZXN0cm95X2FjY291bnRzYCBhbmQgYGRlc3Ryb3lfYXBwcm92YWxzYCBjYWxsLgA5ASBNdXN0IGJlIGNvbmZpZ3VyZWQgdG8gcmVzdWx0IGluIGEgd2VpZ2h0IHRoYXQgbWFrZXMgZWFjaCBjYWxsIGZpdCBpbiBhIGJsb2NrLgAwQXNzZXREZXBvc2l0VQFAwH5XeAAAAAAAAAAAAAAAAAT4IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBhc3NldC4ATEFzc2V0QWNjb3VudERlcG9zaXRVAUAA/k13AAAAAAAAAAAAAAAACEUBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhIG5vbi1wcm92aWRlciBhc3NldCBhY2NvdW50IHRvIGJlMCBtYWludGFpbmVkLgBMTWV0YWRhdGFEZXBvc2l0QmFzZVUBQIBWnXcAAAAAAAAAAAAAAAAEUQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBhc3NldC4AWE1ldGFkYXRhRGVwb3NpdFBlckJ5dGVVAUCghgEAAAAAAAAAAAAAAAAACFUBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyB5b3Ugc3RvcmUgaW4geW91ciggbWV0YWRhdGEuADxBcHByb3ZhbERlcG9zaXRVAUAA4fUFAAAAAAAAAAAAAAAABCEBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gY3JlYXRpbmcgYSBuZXcgYXBwcm92YWwuACxTdHJpbmdMaW1pdDgQMgAAAATgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIG5hbWUgb3Igc3ltYm9sIHN0b3JlZCBvbi1jaGFpbi4AATkNABQcQmFsYW5jZVUBBJwgVGhlIHVuaXRzIGluIHdoaWNoIHdlIHJlY29yZCBiYWxhbmNlcy4cQXNzZXRJZP0BBIwgSWRlbnRpZmllciBmb3IgdGhlIGNsYXNzIG9mIGFzc2V0LkBBc3NldElkUGFyYW1ldGVy/QEcWQEgV3JhcHBlciBhcm91bmQgYFNlbGY6OkFzc2V0SWRgIHRvIHVzZSBpbiBkaXNwYXRjaGFibGUgY2FsbCBzaWduYXR1cmVzLiBBbGxvd3MgdGhlIHVzZVEBIG9mIGNvbXBhY3QgZW5jb2RpbmcgaW4gaW5zdGFuY2VzIG9mIHRoZSBwYWxsZXQsIHdoaWNoIHdpbGwgcHJldmVudCBicmVha2luZyBjaGFuZ2VzBQEgcmVzdWx0aW5nIGZyb20gdGhlIHJlbW92YWwgb2YgYEhhc0NvbXBhY3RgIGZyb20gYFNlbGY6OkFzc2V0SWRgLgBZASBUaGlzIHR5cGUgaW5jbHVkZXMgdGhlIGBGcm9tPFNlbGY6OkFzc2V0SWQ+YCBib3VuZCwgc2luY2UgdGlnaHRseSBjb3VwbGVkIHBhbGxldHMgbWF5RQEgd2FudCB0byBjb252ZXJ0IGFuIGBBc3NldElkYCBpbnRvIGEgcGFyYW1ldGVyIGZvciBjYWxsaW5nIGRpc3BhdGNoYWJsZSBmdW5jdGlvbnMoIGRpcmVjdGx5LixSZXNlcnZlRGF0YbUEBOggSW5mb3JtYXRpb24gYWJvdXQgcmVzZXJ2ZSBsb2NhdGlvbnMgZm9yIGEgY2xhc3Mgb2YgYXNzZXQuFEV4dHJhEAT4IEFkZGl0aW9uYWwgZGF0YSB0byBiZSBzdG9yZWQgd2l0aCBhbiBhY2NvdW50J3MgYXNzZXQgYmFsYW5jZS4QMOZKVgJvS148LRlig6mhfacCl60LS909pLdGKaZablw0YXNzZXRfZGV0YWlscwQIaWT9AakMBKggUHJvdmlkZSB0aGUgYXNzZXQgZGV0YWlscyBmb3IgYXNzZXQgYGlkYC4AMOZKVgJvS148LRlig6mhfVMax+IbdrEh52Hkc0GaGwIoYmFsYW5jZV9vZggMd2hvBAhpZP0BSQQEtCBQcm92aWRlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGZvciBhc3NldCBgaWRgLgAw5kpWAm9LXjwtGWKDqaF9LodmpA0badYVG9gB5XVQXjBnZXRfbWV0YWRhdGEECGlk/QE9DQTAIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgbWV0YWRhdGEgZm9yIGFzc2V0IGBpZGAuADDmSlYCb0tePC0ZYoOpoX1k9j8pI+OYKCQxY4GuHmmGRGdldF9yZXNlcnZlc19kYXRhBAhpZP0BuQQE1CBQcm92aWRlIHRoZSBjb25maWd1cmVkIHJlc2VydmVzIGRhdGEgZm9yIGFzc2V0IGBpZGAuADUAAChQb29sQXNzZXRzAShQb29sQXNzZXRzGBRBc3NldAABBAI4fQwEAARUIERldGFpbHMgb2YgYW4gYXNzZXQuABxBY2NvdW50AAEIAgKFDIkMBAAE5CBUaGUgaG9sZGluZ3Mgb2YgYSBzcGVjaWZpYyBhY2NvdW50IGZvciBhIHNwZWNpZmljIGFzc2V0LgAkQXBwcm92YWxzAAEMAgIClQyZDAQADFkBIEFwcHJvdmVkIGJhbGFuY2UgdHJhbnNmZXJzLiBGaXJzdCBiYWxhbmNlIGlzIHRoZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyLiBTZWNvbmToIGlzIHRoZSBhbW91bnQgb2YgYFQ6OkN1cnJlbmN5YCByZXNlcnZlZCBmb3Igc3RvcmluZyB0aGlzLkkBIEZpcnN0IGtleSBpcyB0aGUgYXNzZXQgSUQsIHNlY29uZCBrZXkgaXMgdGhlIG93bmVyIGFuZCB0aGlyZCBrZXkgaXMgdGhlIGRlbGVnYXRlLgAgTWV0YWRhdGEBAQQCOEENUAAAAAAAAAAAAAAAAAAAAAAAAAAABFggTWV0YWRhdGEgb2YgYW4gYXNzZXQuACBSZXNlcnZlcwEBBAI4LQQEAAT8IE1hcHMgYW4gYXNzZXQgdG8gYSBsaXN0IG9mIGl0cyBjb25maWd1cmVkIHJlc2VydmUgaW5mb3JtYXRpb24uACxOZXh0QXNzZXRJZAAAOAQAJG0BIFRoZSBhc3NldCBJRCBlbmZvcmNlZCBmb3IgdGhlIG5leHQgYXNzZXQgY3JlYXRpb24sIGlmIGFueSBwcmVzZW50LiBPdGhlcndpc2UsIHRoaXMgc3RvcmFnZVAgaXRlbSBoYXMgbm8gZWZmZWN0LgBlASBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHNldHRpbmcgdXAgY29uc3RyYWludHMgZm9yIElEcyBvZiB0aGUgbmV3IGFzc2V0cy4gRm9yIGV4YW1wbGUsIGJ5aQEgcHJvdmlkaW5nIGFuIGluaXRpYWwgW2BOZXh0QXNzZXRJZGBdIGFuZCB1c2luZyB0aGUgW2BjcmF0ZTo6QXV0b0luY0Fzc2V0SWRgXSBjYWxsYmFjaywgYW7oIGF1dG8taW5jcmVtZW50IG1vZGVsIGNhbiBiZSBhcHBsaWVkIHRvIGFsbCBuZXcgYXNzZXQgSURzLgAhASBUaGUgaW5pdGlhbCBuZXh0IGFzc2V0IElEIGNhbiBiZSBzZXQgdXNpbmcgdGhlIFtgR2VuZXNpc0NvbmZpZ2BdIG9yIHRoZSEBIFtTZXROZXh0QXNzZXRJZF0oYG1pZ3JhdGlvbjo6bmV4dF9hc3NldF9pZDo6U2V0TmV4dEFzc2V0SWRgKSBtaWdyYXRpb24uAAG9BAAB7QgAHEBSZW1vdmVJdGVtc0xpbWl0OBDoAwAADFEBIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gZGVzdHJveSBwZXIgYGRlc3Ryb3lfYWNjb3VudHNgIGFuZCBgZGVzdHJveV9hcHByb3ZhbHNgIGNhbGwuADkBIE11c3QgYmUgY29uZmlndXJlZCB0byByZXN1bHQgaW4gYSB3ZWlnaHQgdGhhdCBtYWtlcyBlYWNoIGNhbGwgZml0IGluIGEgYmxvY2suADBBc3NldERlcG9zaXRVAUAAAAAAAAAAAAAAAAAAAAAABPggVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGFzc2V0LgBMQXNzZXRBY2NvdW50RGVwb3NpdFUBQAD+TXcAAAAAAAAAAAAAAAAIRQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGEgbm9uLXByb3ZpZGVyIGFzc2V0IGFjY291bnQgdG8gYmUwIG1haW50YWluZWQuAExNZXRhZGF0YURlcG9zaXRCYXNlVQFAAAAAAAAAAAAAAAAAAAAAAARRASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGFzc2V0LgBYTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZVUBQAAAAAAAAAAAAAAAAAAAAAAIVQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHlvdSBzdG9yZSBpbiB5b3VyKCBtZXRhZGF0YS4APEFwcHJvdmFsRGVwb3NpdFUBQADh9QUAAAAAAAAAAAAAAAAEIQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBhcHByb3ZhbC4ALFN0cmluZ0xpbWl0OBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgABSQ0AFBxCYWxhbmNlVQEEnCBUaGUgdW5pdHMgaW4gd2hpY2ggd2UgcmVjb3JkIGJhbGFuY2VzLhxBc3NldElkOASMIElkZW50aWZpZXIgZm9yIHRoZSBjbGFzcyBvZiBhc3NldC5AQXNzZXRJZFBhcmFtZXRlcjgcWQEgV3JhcHBlciBhcm91bmQgYFNlbGY6OkFzc2V0SWRgIHRvIHVzZSBpbiBkaXNwYXRjaGFibGUgY2FsbCBzaWduYXR1cmVzLiBBbGxvd3MgdGhlIHVzZVEBIG9mIGNvbXBhY3QgZW5jb2RpbmcgaW4gaW5zdGFuY2VzIG9mIHRoZSBwYWxsZXQsIHdoaWNoIHdpbGwgcHJldmVudCBicmVha2luZyBjaGFuZ2VzBQEgcmVzdWx0aW5nIGZyb20gdGhlIHJlbW92YWwgb2YgYEhhc0NvbXBhY3RgIGZyb20gYFNlbGY6OkFzc2V0SWRgLgBZASBUaGlzIHR5cGUgaW5jbHVkZXMgdGhlIGBGcm9tPFNlbGY6OkFzc2V0SWQ+YCBib3VuZCwgc2luY2UgdGlnaHRseSBjb3VwbGVkIHBhbGxldHMgbWF5RQEgd2FudCB0byBjb252ZXJ0IGFuIGBBc3NldElkYCBpbnRvIGEgcGFyYW1ldGVyIGZvciBjYWxsaW5nIGRpc3BhdGNoYWJsZSBmdW5jdGlvbnMoIGRpcmVjdGx5LixSZXNlcnZlRGF0YRAE6CBJbmZvcm1hdGlvbiBhYm91dCByZXNlcnZlIGxvY2F0aW9ucyBmb3IgYSBjbGFzcyBvZiBhc3NldC4URXh0cmEQBPggQWRkaXRpb25hbCBkYXRhIHRvIGJlIHN0b3JlZCB3aXRoIGFuIGFjY291bnQncyBhc3NldCBiYWxhbmNlLhBNsGuhym8Yse2wb/CC0kQJpwKXrQtL3T2kt0YpplpuXDRhc3NldF9kZXRhaWxzBAhpZDipDASoIFByb3ZpZGUgdGhlIGFzc2V0IGRldGFpbHMgZm9yIGFzc2V0IGBpZGAuAE2wa6HKbxix7bBv8ILSRAlTGsfiG3axIedh5HNBmhsCKGJhbGFuY2Vfb2YIDHdobwQIaWQ4SQQEtCBQcm92aWRlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGZvciBhc3NldCBgaWRgLgBNsGuhym8Yse2wb/CC0kQJLodmpA0badYVG9gB5XVQXjBnZXRfbWV0YWRhdGEECGlkOE0NBMAgUHJvdmlkZSB0aGUgY29uZmlndXJlZCBtZXRhZGF0YSBmb3IgYXNzZXQgYGlkYC4ATbBrocpvGLHtsG/wgtJECWT2Pykj45goJDFjga4eaYZEZ2V0X3Jlc2VydmVzX2RhdGEECGlkODEEBNQgUHJvdmlkZSB0aGUgY29uZmlndXJlZCByZXNlcnZlcyBkYXRhIGZvciBhc3NldCBgaWRgLgA2AAA8QXNzZXRDb252ZXJzaW9uATxBc3NldENvbnZlcnNpb24IFFBvb2xzAAEEAvUIUQ0EAAhpASBNYXAgZnJvbSBgUG9vbEFzc2V0SWRgIHRvIGBQb29sSW5mb2AuIFRoaXMgZXN0YWJsaXNoZXMgd2hldGhlciBhIHBvb2wgaGFzIGJlZW4gb2ZmaWNpYWxseT0BIGNyZWF0ZWQgcmF0aGVyIHRoYW4gcGVvcGxlIHNlbmRpbmcgdG9rZW5zIGRpcmVjdGx5IHRvIGEgcG9vbCdzIHB1YmxpYyBhY2NvdW50LgA8TmV4dFBvb2xBc3NldElkAAA4BAAIJQEgU3RvcmVzIHRoZSBgUG9vbEFzc2V0SWRgIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBmb3IgdGhlIG5leHQgbHAgdG9rZW4u5CBUaGlzIGdldHMgaW5jcmVtZW50ZWQgd2hlbmV2ZXIgYSBuZXcgbHAgcG9vbCBpcyBjcmVhdGVkLgABwQQAAfEIABwUTFBGZWX5CBC4CwAABB0BIFRoZSBmcmFjdGlvbiBvZiBldmVyeSBzd2FwIHRoYXQgdGhlIGxpcXVpZGl0eSBwcm92aWRlcnMgdGFrZSBhcyBhIGZlZS4AMFBvb2xTZXR1cEZlZVUBQEAtk+8AAAAAAAAAAAAAAAAEiCBBIG9uZS10aW1lIGZlZSB0byBzZXR1cCB0aGUgcG9vbC4ARFBvb2xTZXR1cEZlZUFzc2V0/QEIAQAEOQEgQXNzZXQgY2xhc3MgZnJvbSBbYENvbmZpZzo6QXNzZXRzYF0gdXNlZCB0byBwYXkgdGhlIFtgQ29uZmlnOjpQb29sU2V0dXBGZWVgXS4AWExpcXVpZGl0eVdpdGhkcmF3YWxGZWX5CBAAAAAABIQgQSBmZWUgdG8gd2l0aGRyYXcgdGhlIGxpcXVpZGl0eS4AQE1pbnRNaW5MaXF1aWRpdHlVAUBkAAAAAAAAAAAAAAAAAAAABD0BIFRoZSBtaW5pbXVtIExQIHRva2VuIGFtb3VudCB0aGF0IGNvdWxkIGJlIG1pbnRlZC4gQW1lbGlvcmF0ZXMgcm91bmRpbmcgZXJyb3JzLgBETWF4U3dhcFBhdGhMZW5ndGg4EAMAAAAEiCBUaGUgbWF4IG51bWJlciBvZiBob3BzIGluIGEgc3dhcC4AIFBhbGxldElkSQsgcHkvYXNjb24E9CBUaGUgcGFsbGV0J3MgaWQsIHVzZWQgZm9yIGRlcml2aW5nIGl0cyBzb3ZlcmVpZ24gYWNjb3VudCBJRC4AAVUNAAgkQXNzZXRLaW5k/QEIXQEgVHlwZSBvZiBhc3NldCBjbGFzcywgc291cmNlZCBmcm9tIFtgQ29uZmlnOjpBc3NldHNgXSwgdXRpbGl6ZWQgdG8gb2ZmZXIgbGlxdWlkaXR5IHRvIGEYIHBvb2wuGFBvb2xJZPUIBGwgTGlxdWlkaXR5IHBvb2wgaWRlbnRpZmllci4MtSYG2oDQKrN0QoNppfJG8UtaZ1Zm3v/90xrRL9uq/+MwZ2V0X3Jlc2VydmVzCBhhc3NldDH9ARhhc3NldDL9AVkNCLwgUmV0dXJucyB0aGUgYmFsYW5jZSBvZiBlYWNoIGFzc2V0IGluIHRoZSBwb29sLlUBIFRoZSB0dXBsZSByZXN1bHQgaXMgaW4gdGhlIG9yZGVyIHJlcXVlc3RlZCAobm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHBvb2wgb3JkZXIpLgC1JgbagNAqs3RCg2ml8kbxeOeDcL3VXJhkSbxs1VAQC4xxdW90ZV9wcmljZV9leGFjdF90b2tlbnNfZm9yX3Rva2VucxAYYXNzZXQx/QEYYXNzZXQy/QEYYW1vdW50VQEsaW5jbHVkZV9mZWVZAUkEHBEBIEdldHMgYSBxdW90ZSBmb3Igc3dhcHBpbmcgYW4gZXhhY3QgYW1vdW50IG9mIGBhc3NldDFgIGZvciBgYXNzZXQyYC4ANQEgSWYgYGluY2x1ZGVfZmVlYCBpcyB0cnVlLCB0aGUgcXVvdGUgd2lsbCBpbmNsdWRlIHRoZSBsaXF1aWRpdHkgcHJvdmlkZXIgZmVlLhEBIElmIHRoZSBwb29sIGRvZXMgbm90IGV4aXN0IG9yIGhhcyBubyBsaXF1aWRpdHksIGBOb25lYCBpcyByZXR1cm5lZC45ASBOb3RlIHRoYXQgdGhlIHByaWNlIG1heSBoYXZlIGNoYW5nZWQgYnkgdGhlIHRpbWUgdGhlIHRyYW5zYWN0aW9uIGlzIGV4ZWN1dGVkLrAgKFVzZSBgYW1vdW50X291dF9taW5gIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKaggUmV0dXJucyBgU29tZShxdW90ZWRfYW1vdW50KWAgb24gc3VjY2Vzcy4AtSYG2oDQKrN0QoNppfJG8Sh5D++bLeNfRI0+w3OTaY2McXVvdGVfcHJpY2VfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnMQGGFzc2V0Mf0BGGFzc2V0Mv0BGGFtb3VudFUBLGluY2x1ZGVfZmVlWQFJBBxBASBHZXRzIGEgcXVvdGUgZm9yIHN3YXBwaW5nIGBhbW91bnRgIG9mIGBhc3NldDFgIGZvciBhbiBleGFjdCBhbW91bnQgb2YgYGFzc2V0MmAuADUBIElmIGBpbmNsdWRlX2ZlZWAgaXMgdHJ1ZSwgdGhlIHF1b3RlIHdpbGwgaW5jbHVkZSB0aGUgbGlxdWlkaXR5IHByb3ZpZGVyIGZlZS4RASBJZiB0aGUgcG9vbCBkb2VzIG5vdCBleGlzdCBvciBoYXMgbm8gbGlxdWlkaXR5LCBgTm9uZWAgaXMgcmV0dXJuZWQuOQEgTm90ZSB0aGF0IHRoZSBwcmljZSBtYXkgaGF2ZSBjaGFuZ2VkIGJ5IHRoZSB0aW1lIHRoZSB0cmFuc2FjdGlvbiBpcyBleGVjdXRlZC6sIChVc2UgYGFtb3VudF9pbl9tYXhgIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKaggUmV0dXJucyBgU29tZShxdW90ZWRfYW1vdW50KWAgb24gc3VjY2Vzcy4ANwAANEFzc2V0c0ZyZWV6ZXIBNEFzc2V0c0ZyZWV6ZXIIHEZyZWV6ZXMBAQgCAoUM/QoEAAQVASBBIG1hcCB0aGF0IHN0b3JlcyBmcmVlemVzIGFwcGxpZWQgb24gYW4gYWNjb3VudCBmb3IgYSBnaXZlbiBBc3NldElkLgA4RnJvemVuQmFsYW5jZXMAAQgCAoUMVQEEAARlASBBIG1hcCB0aGF0IHN0b3JlcyB0aGUgY3VycmVudCB0b3RhbCBmcm96ZW4gYmFsYW5jZSBmb3IgZXZlcnkgYWNjb3VudCBvbiBhIGdpdmVuIEFzc2V0SWQuAAABBQkAAAFhDQAETFJ1bnRpbWVGcmVlemVSZWFzb24FCwR8IFRoZSBvdmVyYXJjaGluZyBmcmVlemUgcmVhc29uLgA4AAAwQXNzZXRzSG9sZGVyATBBc3NldHNIb2xkZXIIFEhvbGRzAQEIAgKFDPEKBAAEDQEgQSBtYXAgdGhhdCBzdG9yZXMgaG9sZHMgYXBwbGllZCBvbiBhbiBhY2NvdW50IGZvciBhIGdpdmVuIEFzc2V0SWQuADhCYWxhbmNlc09uSG9sZAABCAIChQxVAQQABGkBIEEgbWFwIHRoYXQgc3RvcmVzIHRoZSBjdXJyZW50IHRvdGFsIGJhbGFuY2Ugb24gaG9sZCBmb3IgZXZlcnkgYWNjb3VudCBvbiBhIGdpdmVuIEFzc2V0SWQuAAABCQkAAAFlDQAERFJ1bnRpbWVIb2xkUmVhc29uVQgEfCBUaGUgb3ZlcmFyY2hpbmcgZnJlZXplIHJlYXNvbi4AOQAAIFRyZWFzdXJ5ASBUcmVhc3VyeRw0UHJvcG9zYWxDb3VudAEAOBAAAAAAEEEBIERFUFJFQ0FURUQ6IGFzc29jaWF0ZWQgd2l0aCBgc3BlbmRfbG9jYWxgIGNhbGwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBNYXkgMjAyNS5pASBSZWZlciB0byA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvcG9sa2Fkb3Qtc2RrL3B1bGwvNTk2MT4gZm9yIG1pZ3JhdGlvbiB0byBgc3BlbmRgLgCkIE51bWJlciBvZiBwcm9wb3NhbHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4AJFByb3Bvc2FscwABBAU4aQ0EABBBASBERVBSRUNBVEVEOiBhc3NvY2lhdGVkIHdpdGggYHNwZW5kX2xvY2FsYCBjYWxsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gTWF5IDIwMjUuaQEgUmVmZXIgdG8gPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9wdWxsLzU5NjE+IGZvciBtaWdyYXRpb24gdG8gYHNwZW5kYC4AfCBQcm9wb3NhbHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4ALERlYWN0aXZhdGVkAQBVAUAAAAAAAAAAAAAAAAAAAAAABPAgVGhlIGFtb3VudCB3aGljaCBoYXMgYmVlbiByZXBvcnRlZCBhcyBpbmFjdGl2ZSB0byBDdXJyZW5jeS4AJEFwcHJvdmFscwEAbQ0EABBBASBERVBSRUNBVEVEOiBhc3NvY2lhdGVkIHdpdGggYHNwZW5kX2xvY2FsYCBjYWxsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gTWF5IDIwMjUuaQEgUmVmZXIgdG8gPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9wdWxsLzU5NjE+IGZvciBtaWdyYXRpb24gdG8gYHNwZW5kYC4A+CBQcm9wb3NhbCBpbmRpY2VzIHRoYXQgaGF2ZSBiZWVuIGFwcHJvdmVkIGJ1dCBub3QgeWV0IGF3YXJkZWQuAChTcGVuZENvdW50AQA4EAAAAAAEpCBUaGUgY291bnQgb2Ygc3BlbmRzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuABhTcGVuZHMAAQQFOHENBAAE0CBTcGVuZHMgdGhhdCBoYXZlIGJlZW4gYXBwcm92ZWQgYW5kIGJlaW5nIHByb2Nlc3NlZC4APExhc3RTcGVuZFBlcmlvZAAAOAQABNQgVGhlIGJsb2NrbnVtYmVyIGZvciB0aGUgbGFzdCB0cmlnZ2VyZWQgc3BlbmQgcGVyaW9kLgAByQQIAwKVAVRoZSBgc3BlbmRfbG9jYWxgIGNhbGwgd2lsbCBiZSByZW1vdmVkIGJ5IE1heSAyMDI1LiBNaWdyYXRlIHRvIHRoZSBuZXcgZmxvdyBhbmQgdXNlIHRoZSBgc3BlbmRgIGNhbGwuAAQCtQFUaGUgYHJlbW92ZV9hcHByb3ZhbGAgY2FsbCB3aWxsIGJlIHJlbW92ZWQgYnkgTWF5IDIwMjUuIEl0IGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVwcmVjYXRlZCBgc3BlbmRfbG9jYWxgIGNhbGwuAAENCQAYLFNwZW5kUGVyaW9kOBDAqAAABIggUGVyaW9kIGJldHdlZW4gc3VjY2Vzc2l2ZSBzcGVuZHMuABBCdXJu+QgQAAAAAAQRASBQZXJjZW50YWdlIG9mIHNwYXJlIGZ1bmRzIChpZiBhbnkpIHRoYXQgYXJlIGJ1cm50IHBlciBzcGVuZCBwZXJpb2QuACBQYWxsZXRJZEkLIHB5L3Ryc3J5BBkBIFRoZSB0cmVhc3VyeSdzIHBhbGxldCBpZCwgdXNlZCBmb3IgZGVyaXZpbmcgaXRzIHNvdmVyZWlnbiBhY2NvdW50IElELgAwTWF4QXBwcm92YWxzOBBkAAAAGEEBIERFUFJFQ0FURUQ6IGFzc29jaWF0ZWQgd2l0aCBgc3BlbmRfbG9jYWxgIGNhbGwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBNYXkgMjAyNS5pASBSZWZlciB0byA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvcG9sa2Fkb3Qtc2RrL3B1bGwvNTk2MT4gZm9yIG1pZ3JhdGlvbiB0byBgc3BlbmRgLgAVASBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXBwcm92YWxzIHRoYXQgY2FuIHdhaXQgaW4gdGhlIHNwZW5kaW5nIHF1ZXVlLgBNASBOT1RFOiBUaGlzIHBhcmFtZXRlciBpcyBhbHNvIHVzZWQgd2l0aGluIHRoZSBCb3VudGllcyBQYWxsZXQgZXh0ZW5zaW9uIGlmIGVuYWJsZWQuADBQYXlvdXRQZXJpb2Q4EADhAAAEGQEgVGhlIHBlcmlvZCBkdXJpbmcgd2hpY2ggYW4gYXBwcm92ZWQgdHJlYXN1cnkgc3BlbmQgaGFzIHRvIGJlIGNsYWltZWQuACxwb3RfYWNjb3VudASAbW9kbHB5L3Ryc3J5AAAAAAAAAAAAAAAAAAAAAAAAAAAEoCBHZXRzIHRoaXMgcGFsbGV0J3MgZGVyaXZlZCBwb3QgYWNjb3VudC4AAXkNAAgkQXNzZXRLaW5kzQQELQEgVHlwZSBwYXJhbWV0ZXIgcmVwcmVzZW50aW5nIHRoZSBhc3NldCBraW5kcyB0byBiZSBzcGVudCBmcm9tIHRoZSB0cmVhc3VyeS4sQmVuZWZpY2lhcnnRBARdASBUeXBlIHBhcmFtZXRlciB1c2VkIHRvIGlkZW50aWZ5IHRoZSBiZW5lZmljaWFyaWVzIGVsaWdpYmxlIHRvIHJlY2VpdmUgdHJlYXN1cnkgc3BlbmRzLgA8AABAQ29udmljdGlvblZvdGluZwFAQ29udmljdGlvblZvdGluZwgkVm90aW5nRm9yAQEIBQV9DYEN2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAh1ASBBbGwgdm90aW5nIGZvciBhIHBhcnRpY3VsYXIgdm90ZXIgaW4gYSBwYXJ0aWN1bGFyIHZvdGluZyBjbGFzcy4gV2Ugc3RvcmUgdGhlIGJhbGFuY2UgZm9yIHRoZZwgbnVtYmVyIG9mIHZvdGVzIHRoYXQgd2UgaGF2ZSByZWNvcmRlZC4ANENsYXNzTG9ja3NGb3IBAQQFBKENBAAMaQEgVGhlIHZvdGluZyBjbGFzc2VzIHdoaWNoIGhhdmUgYSBub24temVybyBsb2NrIHJlcXVpcmVtZW50IGFuZCB0aGUgbG9jayBhbW91bnRzIHdoaWNoIHRoZXltASByZXF1aXJlLiBUaGUgYWN0dWFsIGFtb3VudCBsb2NrZWQgb24gYmVoYWxmIG9mIHRoaXMgcGFsbGV0IHNob3VsZCBhbHdheXMgYmUgdGhlIG1heGltdW0gb2YsIHRoaXMgbGlzdC4AAdUEAAERCQAIIE1heFZvdGVzOBAAAgAAEPAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbmN1cnJlbnQgdm90ZXMgYW4gYWNjb3VudCBtYXkgaGF2ZS4AVQEgQWxzbyB1c2VkIHRvIGNvbXB1dGUgd2VpZ2h0LCBhbiBvdmVybHkgbGFyZ2UgdmFsdWUgY2FuIGxlYWQgdG8gZXh0cmluc2ljcyB3aXRoIGxhcmdlwCB3ZWlnaHQgZXN0aW1hdGlvbjogc2VlIGBkZWxlZ2F0ZWAgZm9yIGluc3RhbmNlLgBEVm90ZUxvY2tpbmdQZXJpb2Q4EMCJAQAQkCBUaGUgbWluaW11bSBwZXJpb2Qgb2Ygdm90ZSBsb2NraW5nLgBlASBJdCBzaG91bGQgYmUgbm8gc2hvcnRlciB0aGFuIGVuYWN0bWVudCBwZXJpb2QgdG8gZW5zdXJlIHRoYXQgaW4gdGhlIGNhc2Ugb2YgYW4gYXBwcm92YWwsSQEgdGhvc2Ugc3VjY2Vzc2Z1bCB2b3RlcnMgYXJlIGxvY2tlZCBpbnRvIHRoZSBjb25zZXF1ZW5jZXMgdGhhdCB0aGVpciB2b3RlcyBlbnRhaWwuAAGtDQAAAD0AACRSZWZlcmVuZGEBJFJlZmVyZW5kYRQ8UmVmZXJlbmR1bUNvdW50AQA4EAAAAAAEMQEgVGhlIG5leHQgZnJlZSByZWZlcmVuZHVtIGluZGV4LCBha2EgdGhlIG51bWJlciBvZiByZWZlcmVuZGEgc3RhcnRlZCBzbyBmYXIuAERSZWZlcmVuZHVtSW5mb0ZvcgABBAI4sQ0EAAS0IEluZm9ybWF0aW9uIGNvbmNlcm5pbmcgYW55IGdpdmVuIHJlZmVyZW5kdW0uAChUcmFja1F1ZXVlAQEEBdED0Q0EABBdASBUaGUgc29ydGVkIGxpc3Qgb2YgcmVmZXJlbmRhIHJlYWR5IHRvIGJlIGRlY2lkZWQgYnV0IG5vdCB5ZXQgYmVpbmcgZGVjaWRlZCwgb3JkZXJlZCBieXwgY29udmljdGlvbi13ZWlnaHRlZCBhcHByb3ZhbHMuAEEBIFRoaXMgc2hvdWxkIGJlIGVtcHR5IGlmIGBEZWNpZGluZ0NvdW50YCBpcyBsZXNzIHRoYW4gYFRyYWNrSW5mbzo6bWF4X2RlY2lkaW5nYC4ANERlY2lkaW5nQ291bnQBAQQF0QM4EAAAAAAExCBUaGUgbnVtYmVyIG9mIHJlZmVyZW5kYSBiZWluZyBkZWNpZGVkIGN1cnJlbnRseS4AKE1ldGFkYXRhT2YAAQQCODwEABgFASBUaGUgbWV0YWRhdGEgaXMgYSBnZW5lcmFsIGluZm9ybWF0aW9uIGNvbmNlcm5pbmcgdGhlIHJlZmVyZW5kdW0uSQEgVGhlIGBIYXNoYCByZWZlcnMgdG8gdGhlIHByZWltYWdlIG9mIHRoZSBgUHJlaW1hZ2VzYCBwcm92aWRlciB3aGljaCBjYW4gYmUgYSBKU09OiCBkdW1wIG9yIElQRlMgaGFzaCBvZiBhIEpTT04gZmlsZS4AdQEgQ29uc2lkZXIgYSBnYXJiYWdlIGNvbGxlY3Rpb24gZm9yIGEgbWV0YWRhdGEgb2YgZmluaXNoZWQgcmVmZXJlbmR1bXMgdG8gYHVucmVxdWVzdGAgKHJlbW92ZSlEIGxhcmdlIHByZWltYWdlcy4AAekEAAEVCQAURFN1Ym1pc3Npb25EZXBvc2l0VQFAAOh2SBcAAAAAAAAAAAAAAAQ1ASBUaGUgbWluaW11bSBhbW91bnQgdG8gYmUgdXNlZCBhcyBhIGRlcG9zaXQgZm9yIGEgcHVibGljIHJlZmVyZW5kdW0gcHJvcG9zYWwuACRNYXhRdWV1ZWQ4EGQAAAAE5CBNYXhpbXVtIHNpemUgb2YgdGhlIHJlZmVyZW5kdW0gcXVldWUgZm9yIGEgc2luZ2xlIHRyYWNrLgBEVW5kZWNpZGluZ1RpbWVvdXQ4EMCoAAAIVQEgVGhlIG51bWJlciBvZiBibG9ja3MgYWZ0ZXIgc3VibWlzc2lvbiB0aGF0IGEgcmVmZXJlbmR1bSBtdXN0IGJlZ2luIGJlaW5nIGRlY2lkZWQgYnku5CBPbmNlIHRoaXMgcGFzc2VzLCB0aGVuIGFueW9uZSBtYXkgY2FuY2VsIHRoZSByZWZlcmVuZHVtLgA0QWxhcm1JbnRlcnZhbDgQAQAAAAxdASBRdWFudGl6YXRpb24gbGV2ZWwgZm9yIHRoZSByZWZlcmVuZHVtIHdha2V1cCBzY2hlZHVsZXIuIEEgaGlnaGVyIG51bWJlciB3aWxsIHJlc3VsdCBpbl0BIGZld2VyIHN0b3JhZ2UgcmVhZHMvd3JpdGVzIG5lZWRlZCBmb3Igc21hbGxlciB2b3RlcnMsIGJ1dCBhbHNvIHJlc3VsdCBpbiBkZWxheXMgdG8gdGhlVQEgYXV0b21hdGljIHJlZmVyZW5kdW0gc3RhdHVzIGNoYW5nZXMuIEV4cGxpY2l0IHNlcnZpY2luZyBpbnN0cnVjdGlvbnMgYXJlIHVuYWZmZWN0ZWQuABhUcmFja3PdDRUaQAAAZHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAIDGpH6NAwAAAAAAAAAAALAEAAAAJwYAQDgAAEA4AAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAADKmjsAAAAAAGXNHQEAZHdoaXRlbGlzdGVkX2NhbGxlcgAAAAAAAABkAAAAAEB6EPNaAAAAAAAAAAAAACwBAAAAJwYAZAAAAGQAAAAC7JclEAAAAAB7VzwXAAAAAEI5LxIAAAAAAg4AhAAAAAAA1uYfAQAAAAA5YnkCAAAAAAIAZHdpc2hfZm9yX2NoYW5nZQAAAAAAAAAAAAAKAAAAAID0IOa1AAAAAAAAAAAAALAEAAAAJwYAQDgAAGQAAAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAADKmjsAAAAAAGXNHQoAZHN0YWtpbmdfYWRtaW4AAAAAAAAAAAAAAAAKAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////wsAZHRyZWFzdXJlcgAAAAAAAAAAAAAAAAAAAAACAAAAAKAxqV/jAAAAAAAAAAAAALAEAAAAJwYAwIkBAEA4AAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAADKmjuAlpgAAGXNHQwAZGxlYXNlX2FkbWluAAAAAAAAAAAAAAAAAAAKAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////w0AZGZlbGxvd3NoaXBfYWRtaW4AAAAAAAAAAAAKAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////w4AZGdlbmVyYWxfYWRtaW4AAAAAAAAAAAAAAAAKAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAlmi9AIAAAAAoylrBQAAAAAua0r9/////w8AZGF1Y3Rpb25fYWRtaW4AAAAAAAAAAAAAAAAKAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAlmi9AIAAAAAoylrBQAAAAAua0r9/////xQAZHJlZmVyZW5kdW1fY2FuY2VsbGVyAAAAAAD0AQAAACA9iHktAAAAAAAAAAAAALAEAADAiQEACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////xUAZHJlZmVyZW5kdW1fa2lsbGVyAAAAAAAAAADoAwAAAEBjUr/GAQAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////x4AZHNtYWxsX3RpcHBlcgAAAAAAAAAAAAAAAADIAAAAAOQLVAIAAAAAAAAAAAAAAAoAAADAiQEAZAAAAAoAAAAASZFJFQBlzR0Aypo7Avm6GAAAAAAAKk0xAAAAAABrWef//////x8AZGJpZ190aXBwZXIAAAAAAAAAAAAAAAAAAABkAAAAAOh2SBcAAAAAAAAAAAAAAGQAAADAiQEAWAIAAGQAAAAASZFJFQBlzR0Aypo7AmlPPwAAAAAANZZ9AAAAAADlNMH//////yAAZHNtYWxsX3NwZW5kZXIAAAAAAAAAAAAAAAAFAAAAAKByThgJAAAAAAAAAAAAAGAJAAAAJwYAgHAAAEA4AAAAyUMwJABlzR0Aypo7AgqzOgAAAAAAU611AAAAAAA3CxIAAAAAACEAZG1lZGl1bV9zcGVuZGVyAAAAAAAAAAAAAAAyAAAAACBKqdEBAAAAAAAAAAAAAGAJAAAAJwYAAOEAAEA4AAAAWwH2MABlzR0Aypo7AiCeaQAAAAAAT3fSAAAAAAD+HOT//////yIAZGJpZ19zcGVuZGVyAAAAAAAAAAAAAAAAAAADAAAAACA9iHktAAAAAAAAAAAAAGAJAAAAJwYAwIkBAEA4AAAAAMqaOwBlzR0Aypo7As1YYgAAAAAAWyTFAAAAAAA1WREAAAAAAAxIIEEgbGlzdCBvZiB0cmFja3MuAF0BIE5vdGU6IGlmIHRoZSB0cmFja3MgYXJlIGR5bmFtaWMsIHRoZSB2YWx1ZSBpbiB0aGUgc3RhdGljIG1ldGFkYXRhIG1pZ2h0IGJlIGluYWNjdXJhdGUuAAH1DQAMLFJ1bnRpbWVDYWxsIAAUVm90ZXNVAQTMIFRoZSBjb3VudGluZyB0eXBlIGZvciB2b3Rlcy4gVXN1YWxseSBqdXN0IGJhbGFuY2UuFFRhbGx5GQkETCBUaGUgdGFsbHlpbmcgdHlwZS4APgAAHE9yaWdpbnMAAAAAAAAAPwAAJFdoaXRlbGlzdAEkV2hpdGVsaXN0BDxXaGl0ZWxpc3RlZENhbGwAAQQFPBAEAAAAAf0EAAEdCQAAAfkNAAQsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS4AQAAAIEJvdW50aWVzASBCb3VudGllcxAsQm91bnR5Q291bnQBADgQAAAAAATAIE51bWJlciBvZiBib3VudHkgcHJvcG9zYWxzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuACBCb3VudGllcwABBAU4/Q0EAAR4IEJvdW50aWVzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuAEhCb3VudHlEZXNjcmlwdGlvbnMAAQQFOAUOBAAEgCBUaGUgZGVzY3JpcHRpb24gb2YgZWFjaCBib3VudHkuADxCb3VudHlBcHByb3ZhbHMBAG0NBAAE7CBCb3VudHkgaW5kaWNlcyB0aGF0IGhhdmUgYmVlbiBhcHByb3ZlZCBidXQgbm90IHlldCBmdW5kZWQuAAEBBQABLQkAJERCb3VudHlEZXBvc2l0QmFzZVUBQACODAEAAAAAAAAAAAAAAAAE6CBUaGUgYW1vdW50IGhlbGQgb24gZGVwb3NpdCBmb3IgcGxhY2luZyBhIGJvdW50eSBwcm9wb3NhbC4AYEJvdW50eURlcG9zaXRQYXlvdXREZWxheTgQAAAAAARZASBUaGUgZGVsYXkgcGVyaW9kIGZvciB3aGljaCBhIGJvdW50eSBiZW5lZmljaWFyeSBuZWVkIHRvIHdhaXQgYmVmb3JlIGNsYWltIHRoZSBwYXlvdXQuAEhCb3VudHlVcGRhdGVQZXJpb2Q4EAAEFwMY9CBUaGUgdGltZSBsaW1pdCBmb3IgYSBjdXJhdG9yIHRvIGFjdCBiZWZvcmUgYSBib3VudHkgZXhwaXJlcy4AVQEgVGhlIHBlcmlvZCB0aGF0IHN0YXJ0cyB3aGVuIGEgY3VyYXRvciBpcyBhcHByb3ZlZCwgZHVyaW5nIHdoaWNoIHRoZXkgbXVzdCBleGVjdXRlIG9yVQEgdXBkYXRlIHRoZSBib3VudHkgdmlhIGBleHRlbmRfYm91bnR5X2V4cGlyeWAuIElmIG1pc3NlZCwgdGhlIGJvdW50eSBleHBpcmVzLCBhbmQgdGhlVQEgY3VyYXRvciBtYXkgYmUgc2xhc2hlZC4gSWYgYEJsb2NrTnVtYmVyRm9yOjpNQVhgLCBib3VudGllcyBzdGF5IGFjdGl2ZSBpbmRlZmluaXRlbHksuCByZW1vdmluZyB0aGUgbmVlZCBmb3IgYGV4dGVuZF9ib3VudHlfZXhwaXJ5YC4AYEN1cmF0b3JEZXBvc2l0TXVsdGlwbGllcvkIECChBwAQGQEgVGhlIGN1cmF0b3IgZGVwb3NpdCBpcyBjYWxjdWxhdGVkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgY3VyYXRvciBmZWUuADkBIFRoaXMgZGVwb3NpdCBoYXMgb3B0aW9uYWwgdXBwZXIgYW5kIGxvd2VyIGJvdW5kcyB3aXRoIGBDdXJhdG9yRGVwb3NpdE1heGAgYW5kVCBgQ3VyYXRvckRlcG9zaXRNaW5gLgBEQ3VyYXRvckRlcG9zaXRNYXhJBEQBACBKqdEBAAAAAAAAAAAAAARJASBNYXhpbXVtIGFtb3VudCBvZiBmdW5kcyB0aGF0IHNob3VsZCBiZSBwbGFjZWQgaW4gYSBkZXBvc2l0IGZvciBtYWtpbmcgYSBwcm9wb3NhbC4AREN1cmF0b3JEZXBvc2l0TWluSQREAQDodkgXAAAAAAAAAAAAAAAESQEgTWluaW11bSBhbW91bnQgb2YgZnVuZHMgdGhhdCBzaG91bGQgYmUgcGxhY2VkIGluIGEgZGVwb3NpdCBmb3IgbWFraW5nIGEgcHJvcG9zYWwuAEhCb3VudHlWYWx1ZU1pbmltdW1VAUAA6HZIFwAAAAAAAAAAAAAABHAgTWluaW11bSB2YWx1ZSBmb3IgYSBib3VudHkuAEhEYXRhRGVwb3NpdFBlckJ5dGVVAUCghgEAAAAAAAAAAAAAAAAABGEBIFRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0IHBlciBieXRlIHdpdGhpbiB0aGUgdGlwIHJlcG9ydCByZWFzb24gb3IgYm91bnR5IGRlc2NyaXB0aW9uLgBMTWF4aW11bVJlYXNvbkxlbmd0aDgQAEAAAAyIIE1heGltdW0gYWNjZXB0YWJsZSByZWFzb24gbGVuZ3RoLgBlASBCZW5jaG1hcmtzIGRlcGVuZCBvbiB0aGlzIHZhbHVlLCBiZSBzdXJlIHRvIHVwZGF0ZSB3ZWlnaHRzIGZpbGUgd2hlbiBjaGFuZ2luZyB0aGlzIHZhbHVlAAEJDgAAAEEAADRDaGlsZEJvdW50aWVzATRDaGlsZEJvdW50aWVzHEBDaGlsZEJvdW50eUNvdW50AQA4EAAAAAAIbQEgREVQUkVDQVRFRDogUmVwbGFjZWQgd2l0aCBgUGFyZW50VG90YWxDaGlsZEJvdW50aWVzYCBzdG9yYWdlIGl0ZW0ga2VlcGluZyBkZWRpY2F0ZWQgY291bnRzVQEgZm9yIGVhY2ggcGFyZW50IGJvdW50eS4gTnVtYmVyIG9mIHRvdGFsIGNoaWxkIGJvdW50aWVzLiBXaWxsIGJlIHJlbW92ZWQgaW4gTWF5IDIwMjUuAExQYXJlbnRDaGlsZEJvdW50aWVzAQEEBTg4EAAAAAAIzCBOdW1iZXIgb2YgYWN0aXZlIGNoaWxkIGJvdW50aWVzIHBlciBwYXJlbnQgYm91bnR5LuAgTWFwIG9mIHBhcmVudCBib3VudHkgaW5kZXggdG8gbnVtYmVyIG9mIGNoaWxkIGJvdW50aWVzLgBgUGFyZW50VG90YWxDaGlsZEJvdW50aWVzAQEEBTg4EAAAAAAEQQEgTnVtYmVyIG9mIHRvdGFsIGNoaWxkIGJvdW50aWVzIHBlciBwYXJlbnQgYm91bnR5LCBpbmNsdWRpbmcgY29tcGxldGVkIGJvdW50aWVzLgA0Q2hpbGRCb3VudGllcwABCAUFzA0OBAAElCBDaGlsZCBib3VudGllcyB0aGF0IGhhdmUgYmVlbiBhZGRlZC4AZENoaWxkQm91bnR5RGVzY3JpcHRpb25zVjEAAQgFBcwFDgQADCkBIFRoZSBkZXNjcmlwdGlvbiBvZiBlYWNoIGNoaWxkLWJvdW50eS4gSW5kZXhlZCBieSBgKHBhcmVudF9pZCwgY2hpbGRfaWQpYC4AbQEgVGhpcyBpdGVtIHJlcGxhY2VzIHRoZSBgQ2hpbGRCb3VudHlEZXNjcmlwdGlvbnNgIHN0b3JhZ2UgaXRlbSBmcm9tIHRoZSBWMCBzdG9yYWdlIHZlcnNpb24uAFBWMFRvVjFDaGlsZEJvdW50eUlkcwABBAU4zAQAFF0BIFRoZSBtYXBwaW5nIG9mIHRoZSBjaGlsZCBib3VudHkgaWRzIGZyb20gc3RvcmFnZSB2ZXJzaW9uIGBWMGAgdG8gdGhlIG5ldyBgVjFgIHZlcnNpb24uAG0BIFRoZSBgVjBgIGlkcyBiYXNlZCBvbiB0b3RhbCBjaGlsZCBib3VudHkgY291bnQgW2BDaGlsZEJvdW50eUNvdW50YF1gLiBUaGUgYFYxYCB2ZXJzaW9uIGlkc0EBIGJhc2VkIG9uIHRoZSBjaGlsZCBib3VudHkgY291bnQgcGVyIHBhcmVudCBib3VudHkgW2BQYXJlbnRUb3RhbENoaWxkQm91bnRpZXNgXS5lASBUaGUgaXRlbSBpbnRlbmRlZCBzb2xlbHkgZm9yIGNsaWVudCBjb252ZW5pZW5jZSBhbmQgbm90IHVzZWQgaW4gdGhlIHBhbGxldCdzIGNvcmUgbG9naWMuAExDaGlsZHJlbkN1cmF0b3JGZWVzAQEEBThVAUAAAAAAAAAAAAAAAAAAAAAABAEBIFRoZSBjdW11bGF0aXZlIGNoaWxkLWJvdW50eSBjdXJhdG9yIGZlZSBmb3IgZWFjaCBwYXJlbnQgYm91bnR5LgABBQUAATEJAAhkTWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudDgQZAAAAAQdASBNYXhpbXVtIG51bWJlciBvZiBjaGlsZCBib3VudGllcyB0aGF0IGNhbiBiZSBhZGRlZCB0byBhIHBhcmVudCBib3VudHkuAFxDaGlsZEJvdW50eVZhbHVlTWluaW11bVUBQADkC1QCAAAAAAAAAAAAAAAEiCBNaW5pbXVtIHZhbHVlIGZvciBhIGNoaWxkLWJvdW50eS4AARUOAAAAQgAAJEFzc2V0UmF0ZQEkQXNzZXRSYXRlBFhDb252ZXJzaW9uUmF0ZVRvTmF0aXZlAAEEAs0EDQUEAAwdASBNYXBzIGFuIGFzc2V0IHRvIGl0cyBmaXhlZCBwb2ludCByZXByZXNlbnRhdGlvbiBpbiB0aGUgbmF0aXZlIGJhbGFuY2UuAE0BIEUuZy4gYG5hdGl2ZV9hbW91bnQgPSBhc3NldF9hbW91bnQgKiBDb252ZXJzaW9uUmF0ZVRvTmF0aXZlOjo8VD46OmdldChhc3NldF9raW5kKWAAAQkFAAE1CQAAARkOAAQkQXNzZXRLaW5kzQQERQEgVGhlIHR5cGUgZm9yIGFzc2V0IGtpbmRzIGZvciB3aGljaCB0aGUgY29udmVyc2lvbiByYXRlIHRvIG5hdGl2ZSBiYWxhbmNlIGlzIHNldC4AQwAASE11bHRpQXNzZXRCb3VudGllcwFITXVsdGlBc3NldEJvdW50aWVzHCxCb3VudHlDb3VudAEAOBAAAAAABMAgTnVtYmVyIG9mIGJvdW50eSBwcm9wb3NhbHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4AIEJvdW50aWVzAAEEBTgdDgQABHggQm91bnRpZXMgdGhhdCBoYXZlIGJlZW4gbWFkZS4ANENoaWxkQm91bnRpZXMAAQgFBcwpDgQADJQgQ2hpbGQgYm91bnRpZXMgdGhhdCBoYXZlIGJlZW4gYWRkZWQuAMggSW5kZXhlZCBieSBgKHBhcmVudF9ib3VudHlfaWQsIGNoaWxkX2JvdW50eV9pZClgLgBYQ2hpbGRCb3VudGllc1BlclBhcmVudAEBBAU4OBAAAAAADMwgTnVtYmVyIG9mIGFjdGl2ZSBjaGlsZCBib3VudGllcyBwZXIgcGFyZW50IGJvdW50eS4AfCBJbmRleGVkIGJ5IGBwYXJlbnRfYm91bnR5X2lkYC4AbFRvdGFsQ2hpbGRCb3VudGllc1BlclBhcmVudAEBBAU4OBAAAAAADEEBIE51bWJlciBvZiB0b3RhbCBjaGlsZCBib3VudGllcyBwZXIgcGFyZW50IGJvdW50eSwgaW5jbHVkaW5nIGNvbXBsZXRlZCBib3VudGllcy4AfCBJbmRleGVkIGJ5IGBwYXJlbnRfYm91bnR5X2lkYC4AbENoaWxkQm91bnRpZXNWYWx1ZVBlclBhcmVudAEBBAU4VQFAAAAAAAAAAAAAAAAAAAAAABBtASBUaGUgY3VtdWxhdGl2ZSBjaGlsZC1ib3VudHkgdmFsdWUgZm9yIGVhY2ggcGFyZW50IGJvdW50eS4gVG8gYmUgc3VidHJhY3RlZCBmcm9tIHRoZSBwYXJlbnSQIGJvdW50eSBwYXlvdXQgd2hlbiBhd2FyZGluZyBib3VudHkuAHwgSW5kZXhlZCBieSBgcGFyZW50X2JvdW50eV9pZGAuADhDdXJhdG9yRGVwb3NpdAABCAUFLQ4xDgQALGUBIFRoZSBjb25zaWRlcmF0aW9uIGNvc3QgaW5jdXJyZWQgYnkgdGhlIGNoaWxkLS9ib3VudHkgY3VyYXRvciBmb3IgY29tbWl0dGluZyB0byB0aGUgcm9sZS4AcQEgRGV0ZXJtaW5lZCBieSBbYHBhbGxldDo6Q29uZmlnOjpDb25zaWRlcmF0aW9uYF0uIEl0IGlzIGNyZWF0ZWQgd2hlbiB0aGUgY3VyYXRvciBhY2NlcHRzIHRoZUUBIHJvbGUsIGFuZCBpcyBlaXRoZXIgYnVybmVkIGlmIHRoZSBjdXJhdG9yIG1pc2JlaGF2ZXMgb3IgY29uc3VtZWQgdXBvbiBzdWNjZXNzZnVshCBjb21wbGV0aW9uIG9mIHRoZSBjaGlsZC0vYm91bnR5LgARASBOb3RlOiBJZiB0aGUgcGFyZW50IGN1cmF0b3IgaXMgYWxzbyBhc3NpZ25lZCB0byB0aGUgY2hpbGQtYm91bnR5LCAgDQEgdGhlIGNvbnNpZGVyYXRpb24gY29zdCBpcyBjaGFyZ2VkIG9ubHkgb25jZSDigJQgd2hlbiB0aGUgY3VyYXRvciAgoCBhY2NlcHRzIHRoZSByb2xlIGZvciB0aGUgcGFyZW50IGJvdW50eS4AyCBJbmRleGVkIGJ5IGAocGFyZW50X2JvdW50eV9pZCwgY2hpbGRfYm91bnR5X2lkKWAuAAERBQABOQkADEhCb3VudHlWYWx1ZU1pbmltdW1VAUAAyBeoBAAAAAAAAAAAAAAABHAgTWluaW11bSB2YWx1ZSBmb3IgYSBib3VudHkuAFxDaGlsZEJvdW50eVZhbHVlTWluaW11bVUBQACUNXcAAAAAAAAAAAAAAAAEiCBNaW5pbXVtIHZhbHVlIGZvciBhIGNoaWxkLWJvdW50eS4AZE1heEFjdGl2ZUNoaWxkQm91bnR5Q291bnQ4EGQAAAAEHQEgTWF4aW11bSBudW1iZXIgb2YgY2hpbGQgYm91bnRpZXMgdGhhdCBjYW4gYmUgYWRkZWQgdG8gYSBwYXJlbnQgYm91bnR5LgABNQ4ACCRBc3NldEtpbmTNBAhBASBUeXBlIHBhcmFtZXRlciByZXByZXNlbnRpbmcgdGhlIGFzc2V0IGtpbmRzIHVzZWQgdG8gZnVuZCwgcmVmdW5kIGFuZCBzcGVuZCBmcm9tKCBib3VudGllcy4sQmVuZWZpY2lhcnnRBARBASBUeXBlIHBhcmFtZXRlciB1c2VkIHRvIGlkZW50aWZ5IHRoZSBiZW5lZmljaWFyaWVzIGVsaWdpYmxlIHRvIHJlY2VpdmUgcGF5bWVudHMuAEQAAAxEYXABDERhcAhAQnVkZ2V0QWxsb2NhdGlvbgEAGQUEABC8IEJ1ZGdldCBhbGxvY2F0aW9uIG1hcDogYEJ1ZGdldEtleSAtPiBQZXJiaWxsYC4ANQEgS2V5cyBtdXN0IGNvcnJlc3BvbmQgdG8gcmVnaXN0ZXJlZCBgQnVkZ2V0UmVjaXBpZW50c2AuIFN1bSBvZiB2YWx1ZXMgbXVzdCBiZSkBIGV4YWN0bHkgYFBlcmJpbGw6Om9uZSgpYCAoMTAwJSkuIFJlY2lwaWVudHMgbm90IGluY2x1ZGVkIHJlY2VpdmUgbm90aGluZy4AVExhc3RJc3N1YW5jZVRpbWVzdGFtcAEAKCAAAAAAAAAAABCoIFRpbWVzdGFtcCAobXMpIG9mIHRoZSBsYXN0IGlzc3VhbmNlIGRyaXAuALAgT24gZXhpc3RpbmcgY2hhaW5zLCB0aGlzIG11c3QgYmUgc2VlZGVkIHZpYTkBIFtgbWlncmF0aW9uczo6TWlncmF0ZVYxVG9WMmBdIHRvIHByZXZlbnQgaW5jb3JyZWN0IG1pbnRpbmcgb24gdGhlIGZpcnN0IGRyaXAuAAEVBQABPQkADCBQYWxsZXRJZEkLIGRhcC9idWZmBMQgVGhlIHBhbGxldCBJRCB1c2VkIHRvIGRlcml2ZSB0aGUgYnVmZmVyIGFjY291bnQuADxJc3N1YW5jZUNhZGVuY2UoIGDqAAAAAAAAGMggTWluaW11bSBlbGFwc2VkIHRpbWUgKG1zKSBiZXR3ZWVuIGlzc3VhbmNlIGRyaXBzLgBkIC0gYDBgID0gZHJpcCBldmVyeSBibG9ja7QgLSBgNjBfMDAwYCA9IGRyaXAgZXZlcnkgbWludXRlIChSZWNvbW1lbmRlZCkAoCBTaG91bGQgYmUgc21hbGwgcmVsYXRpdmUgdG8gZXJhIGxlbmd0aC4ARE1heEVsYXBzZWRQZXJEcmlwKCDAJwkAAAAAABQdASBTYWZldHkgY2VpbGluZzogbWF4aW11bSBlbGFwc2VkIHRpbWUgKG1zKSBjb25zaWRlcmVkIGluIGEgc2luZ2xlIGRyaXAuABUBIElmIG1vcmUgdGltZSBoYXMgcGFzc2VkIHRoYW4gdGhpcywgZWxhcHNlZCBpcyBjbGFtcGVkIHRvIHRoaXMgdmFsdWUuGQEgUHJldmVudHMgYWNjaWRlbnRhbCBvdmVyLW1pbnRpbmcgZnJvbSBidWdzLCBtaXNjb25maWd1cmF0aW9uLCBvciBsb25nYCBwZXJpb2RzIHdpdGhvdXQgYmxvY2tzLgABOQ4AAAjNFDEPhSb1BNuNmFSNi+42hlr7SN7NdkcDLDTwUTR5RURidWRnZXRfcmVjaXBpZW50cwA9DhAdASBBbGwgcmVnaXN0ZXJlZCBidWRnZXQgcmVjaXBpZW50cyB3aXRoIHRoZWlyIGN1cnJlbnQgYWxsb2NhdGlvbiBzaGFyZXMuAB0BIFRoZSBgUGVyYmlsbGAgaXMgdGFrZW4gZnJvbSBgQnVkZ2V0QWxsb2NhdGlvbmA7IHJlY2lwaWVudHMgYWJzZW50IGZyb22cIHRoZSBtYXAgYXBwZWFyIHdpdGggYFBlcmJpbGw6Onplcm8oKWAuAM0UMQ+FJvUE242YVI2L7japZ2sG/fgSxL9xSQ7M7Z09HHN0YWdpbmcABAwVASBBY2NvdW50IHRoYXQgaG9sZHMgYnVybmVkL3NsYXNoZWQgZnVuZHMgYmVmb3JlIHRoZXkgYXJlIGRyYWluZWQgaW50bxkBIHRoZSBEQVAgYnVmZmVyIGJ5IGBvbl9pZGxlYC4gRXhwb3NlZCB0byBjbGllbnRzIHNvIHRoZXkgZG9uJ3QgaGF2ZSB0b5ggcmUtZGVyaXZlIHRoZSBzdWItYWNjb3VudCB0aGVtc2VsdmVzLgBFAABIU3RhdGVUcmllTWlncmF0aW9uAUhTdGF0ZVRyaWVNaWdyYXRpb24MQE1pZ3JhdGlvblByb2Nlc3MBADkFOAAAAAAAAAAAAAAAAAAAEFAgTWlncmF0aW9uIHByb2dyZXNzLgBdASBUaGlzIHN0b3JlcyB0aGUgc25hcHNob3Qgb2YgdGhlIGxhc3QgbWlncmF0ZWQga2V5cy4gSXQgY2FuIGJlIHNldCBpbnRvIG1vdGlvbiBhbmQgbW92ZdQgZm9yd2FyZCBieSBhbnkgb2YgdGhlIG1lYW5zIHByb3ZpZGVkIGJ5IHRoaXMgcGFsbGV0LgAoQXV0b0xpbWl0cwEAMQUEAAzUIFRoZSBsaW1pdHMgdGhhdCBhcmUgaW1wb3NlZCBvbiBhdXRvbWF0aWMgbWlncmF0aW9ucy4A1CBJZiBzZXQgdG8gTm9uZSwgdGhlbiBubyBhdXRvbWF0aWMgbWlncmF0aW9uIGhhcHBlbnMuAGBTaWduZWRNaWdyYXRpb25NYXhMaW1pdHMAADUFBAAM4CBUaGUgbWF4aW11bSBsaW1pdHMgdGhhdCB0aGUgc2lnbmVkIG1pZ3JhdGlvbiBjb3VsZCB1c2UuALQgSWYgbm90IHNldCwgbm8gc2lnbmVkIHN1Ym1pc3Npb24gaXMgYWxsb3dlZC4AAS0FAAFFCQAEJE1heEtleUxlbjgQAAIAAFS0IE1heGltYWwgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgYSBrZXkgY2FuIGhhdmUuALAgRlJBTUUgaXRzZWxmIGRvZXMgbm90IGxpbWl0IHRoZSBrZXkgbGVuZ3RoLgEBIFRoZSBjb25jcmV0ZSB2YWx1ZSBtdXN0IHRoZXJlZm9yZSBkZXBlbmQgb24geW91ciBzdG9yYWdlIHVzYWdlLlkBIEEgW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlTk1hcGBdIGZvciBleGFtcGxlIGNhbiBoYXZlIGFuIGFyYml0cmFyeSBudW1iZXIgb2ZFASBrZXlzIHdoaWNoIGFyZSB0aGVuIGhhc2hlZCBhbmQgY29uY2F0ZW5hdGVkLCByZXN1bHRpbmcgaW4gYXJiaXRyYXJpbHkgbG9uZyBrZXlzLgBBASBVc2UgdGhlICpzdGF0ZSBtaWdyYXRpb24gUlBDKiB0byByZXRyaWV2ZSB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IGtleSBpbiB5b3VyAQEgc3RvcmFnZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9pc3N1ZXMvMTE2NDI+ACkBIFRoZSBtaWdyYXRpb24gd2lsbCBoYWx0IHdpdGggYSBgSGFsdGVkYCBldmVudCBpZiB0aGlzIHZhbHVlIGlzIHRvbyBzbWFsbC5JASBTaW5jZSB0aGVyZSBpcyBubyByZWFsIHBlbmFsdHkgZnJvbSBvdmVyLWVzdGltYXRpbmcsIGl0IGlzIGFkdmlzZWQgdG8gdXNlIGEgbGFyZ2WAIHZhbHVlLiBUaGUgZGVmYXVsdCBpcyA1MTIgYnl0ZS4AgCBTb21lIGtleSBsZW5ndGhzIGZvciByZWZlcmVuY2U60CAtIFtgZnJhbWVfc3VwcG9ydDo6c3RvcmFnZTo6U3RvcmFnZVZhbHVlYF06IDMyIGJ5dGXIIC0gW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlTWFwYF06IDY0IGJ5dGXgIC0gW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlRG91YmxlTWFwYF06IDk2IGJ5dGUASCBGb3IgbW9yZSBpbmZvIHNlZUUBIDxodHRwczovL3d3dy5zaGF3bnRhYnJpemkuY29tL2Jsb2cvaW50ZXJhY3Rpbmctd2l0aC10aGUtc3Vic3RyYXRlLXJwYy1lbmRwb2ludC8+AAFNCQAAAEYAADxOb21pbmF0aW9uUG9vbHMBPE5vbWluYXRpb25Qb29sc1RAVG90YWxWYWx1ZUxvY2tlZAEAVQFAAAAAAAAAAAAAAAAAAAAAABSMIFRoZSBzdW0gb2YgZnVuZHMgYWNyb3NzIGFsbCBwb29scy4AcQEgVGhpcyBtaWdodCBiZSBsb3dlciBidXQgbmV2ZXIgaGlnaGVyIHRoYW4gdGhlIHN1bSBvZiBgdG90YWxfYmFsYW5jZWAgb2YgYWxsIFtgUG9vbE1lbWJlcnNgXVkBIGJlY2F1c2UgY2FsbGluZyBgcG9vbF93aXRoZHJhd191bmJvbmRlZGAgbWlnaHQgZGVjcmVhc2UgdGhlIHRvdGFsIHN0YWtlIG9mIHRoZSBwb29sJ3MpASBgYm9uZGVkX2FjY291bnRgIHdpdGhvdXQgYWRqdXN0aW5nIHRoZSBwYWxsZXQtaW50ZXJuYWwgYFVuYm9uZGluZ1Bvb2xgJ3MuACxNaW5Kb2luQm9uZAEAVQFAAAAAAAAAAAAAAAAAAAAAAAScIE1pbmltdW0gYW1vdW50IHRvIGJvbmQgdG8gam9pbiBhIHBvb2wuADRNaW5DcmVhdGVCb25kAQBVAUAAAAAAAAAAAAAAAAAAAAAAHKAgTWluaW11bSBib25kIHJlcXVpcmVkIHRvIGNyZWF0ZSBhIHBvb2wuAGUBIFRoaXMgaXMgdGhlIGFtb3VudCB0aGF0IHRoZSBkZXBvc2l0b3IgbXVzdCBwdXQgYXMgdGhlaXIgaW5pdGlhbCBzdGFrZSBpbiB0aGUgcG9vbCwgYXMgYW6IIGluZGljYXRpb24gb2YgInNraW4gaW4gdGhlIGdhbWUiLgBpASBUaGlzIGlzIHRoZSB2YWx1ZSB0aGF0IHdpbGwgYWx3YXlzIGV4aXN0IGluIHRoZSBzdGFraW5nIGxlZGdlciBvZiB0aGUgcG9vbCBib25kZWQgYWNjb3VudIAgd2hpbGUgYWxsIG90aGVyIGFjY291bnRzIGxlYXZlLgAgTWF4UG9vbHMAADgEAAhpASBNYXhpbXVtIG51bWJlciBvZiBub21pbmF0aW9uIHBvb2xzIHRoYXQgY2FuIGV4aXN0LiBJZiBgTm9uZWAsIHRoZW4gYW4gdW5ib3VuZGVkIG51bWJlciBvZkQgcG9vbHMgY2FuIGV4aXN0LgA4TWF4UG9vbE1lbWJlcnMAADgEAAhJASBNYXhpbXVtIG51bWJlciBvZiBtZW1iZXJzIHRoYXQgY2FuIGV4aXN0IGluIHRoZSBzeXN0ZW0uIElmIGBOb25lYCwgdGhlbiB0aGUgY291bnS4IG1lbWJlcnMgYXJlIG5vdCBib3VuZCBvbiBhIHN5c3RlbSB3aWRlIGJhc2lzLgBUTWF4UG9vbE1lbWJlcnNQZXJQb29sAAA4BAAIQQEgTWF4aW11bSBudW1iZXIgb2YgbWVtYmVycyB0aGF0IG1heSBiZWxvbmcgdG8gcG9vbC4gSWYgYE5vbmVgLCB0aGVuIHRoZSBjb3VudCBvZqggbWVtYmVycyBpcyBub3QgYm91bmQgb24gYSBwZXIgcG9vbCBiYXNpcy4ATEdsb2JhbE1heENvbW1pc3Npb24AAB0FBAAMaQEgVGhlIG1heGltdW0gY29tbWlzc2lvbiB0aGF0IGNhbiBiZSBjaGFyZ2VkIGJ5IGEgcG9vbC4gVXNlZCBvbiBjb21taXNzaW9uIHBheW91dHMgdG8gYm91bmQlASBwb29sIGNvbW1pc3Npb25zIHRoYXQgYXJlID4gYEdsb2JhbE1heENvbW1pc3Npb25gLCBuZWNlc3NhcnkgaWYgYSBmdXR1cmUNASBgR2xvYmFsTWF4Q29tbWlzc2lvbmAgaXMgbG93ZXIgdGhhbiBzb21lIGN1cnJlbnQgcG9vbCBjb21taXNzaW9ucy4ALFBvb2xNZW1iZXJzAAEEBQRFDgQADEAgQWN0aXZlIG1lbWJlcnMuANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAFRDb3VudGVyRm9yUG9vbE1lbWJlcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAsQm9uZGVkUG9vbHMAAQQFOFEOBAAEaCBTdG9yYWdlIGZvciBib25kZWQgcG9vbHMuAFRDb3VudGVyRm9yQm9uZGVkUG9vbHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAsUmV3YXJkUG9vbHMAAQQFOGEOBAAIdQEgUmV3YXJkIHBvb2xzLiBUaGlzIGlzIHdoZXJlIHRoZXJlIHJld2FyZHMgZm9yIGVhY2ggcG9vbCBhY2N1bXVsYXRlLiBXaGVuIGEgbWVtYmVycyBwYXlvdXQgaXNZASBjbGFpbWVkLCB0aGUgYmFsYW5jZSBjb21lcyBvdXQgb2YgdGhlIHJld2FyZCBwb29sLiBLZXllZCBieSB0aGUgYm9uZGVkIHBvb2xzIGFjY291bnQuAFRDb3VudGVyRm9yUmV3YXJkUG9vbHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAA8U3ViUG9vbHNTdG9yYWdlAAEEBThlDgQACBkBIEdyb3VwcyBvZiB1bmJvbmRpbmcgcG9vbHMuIEVhY2ggZ3JvdXAgb2YgdW5ib25kaW5nIHBvb2xzIGJlbG9uZ3MgdG8gYSkBIGJvbmRlZCBwb29sLCBoZW5jZSB0aGUgbmFtZSBzdWItcG9vbHMuIEtleWVkIGJ5IHRoZSBib25kZWQgcG9vbHMgYWNjb3VudC4AZENvdW50ZXJGb3JTdWJQb29sc1N0b3JhZ2UBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAgTWV0YWRhdGEBAQQFOEEBBAAEXCBNZXRhZGF0YSBmb3IgdGhlIHBvb2wuAEhDb3VudGVyRm9yTWV0YWRhdGEBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAoTGFzdFBvb2xJZAEAOBAAAAAABNAgRXZlciBpbmNyZWFzaW5nIG51bWJlciBvZiBhbGwgcG9vbHMgY3JlYXRlZCBzbyBmYXIuAExSZXZlcnNlUG9vbElkTG9va3VwAAEEBQQ4BAAQ3CBBIHJldmVyc2UgbG9va3VwIGZyb20gdGhlIHBvb2wncyBhY2NvdW50IGlkIHRvIGl0cyBpZC4AdQEgVGhpcyBpcyBvbmx5IHVzZWQgZm9yIHNsYXNoaW5nIGFuZCBvbiBhdXRvbWF0aWMgd2l0aGRyYXcgdXBkYXRlLiBJbiBhbGwgb3RoZXIgaW5zdGFuY2VzLCB0aGUlASBwb29sIGlkIGlzIHVzZWQsIGFuZCB0aGUgYWNjb3VudHMgYXJlIGRldGVybWluaXN0aWNhbGx5IGRlcml2ZWQgZnJvbSBpdC4AdENvdW50ZXJGb3JSZXZlcnNlUG9vbElkTG9va3VwAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAQENsYWltUGVybWlzc2lvbnMBAQQFBGEFBAIEAQEgTWFwIGZyb20gYSBwb29sIG1lbWJlciBhY2NvdW50IHRvIHRoZWlyIG9wdGVkIGNsYWltIHBlcm1pc3Npb24uAAFFBQABUQkADCBQYWxsZXRJZEkLIHB5L25vcGxzBIQgVGhlIG5vbWluYXRpb24gcG9vbCdzIHBhbGxldCBpZC4ASE1heFBvaW50c1RvQmFsYW5jZQwECjAdASBUaGUgbWF4aW11bSBwb29sIHBvaW50cy10by1iYWxhbmNlIHJhdGlvIHRoYXQgYW4gYG9wZW5gIHBvb2wgY2FuIGhhdmUuAFUBIFRoaXMgaXMgaW1wb3J0YW50IGluIHRoZSBldmVudCBzbGFzaGluZyB0YWtlcyBwbGFjZSBhbmQgdGhlIHBvb2wncyBwb2ludHMtdG8tYmFsYW5jZXwgcmF0aW8gYmVjb21lcyBkaXNwcm9wb3J0aW9uYWwuAGUBIE1vcmVvdmVyLCB0aGlzIHJlbGF0ZXMgdG8gdGhlIGBSZXdhcmRDb3VudGVyYCB0eXBlIGFzIHdlbGwsIGFzIHRoZSBhcml0aG1ldGljIG9wZXJhdGlvbnNVASBhcmUgYSBmdW5jdGlvbiBvZiBudW1iZXIgb2YgcG9pbnRzLCBhbmQgYnkgc2V0dGluZyB0aGlzIHZhbHVlIHRvIGUuZy4gMTAsIHlvdSBlbnN1cmVlASB0aGF0IHRoZSB0b3RhbCBudW1iZXIgb2YgcG9pbnRzIGluIHRoZSBzeXN0ZW0gYXJlIGF0IG1vc3QgMTAgdGltZXMgdGhlIHRvdGFsX2lzc3VhbmNlIG9mnCB0aGUgY2hhaW4sIGluIHRoZSBhYnNvbHV0ZSB3b3JzZSBjYXNlLgBJASBGb3IgYSB2YWx1ZSBvZiAxMCwgdGhlIHRocmVzaG9sZCB3b3VsZCBiZSBhIHBvb2wgcG9pbnRzLXRvLWJhbGFuY2UgcmF0aW8gb2YgMTA6MS4xASBTdWNoIGEgc2NlbmFyaW8gd291bGQgYWxzbyBiZSB0aGUgZXF1aXZhbGVudCBvZiB0aGUgcG9vbCBiZWluZyA5MCUgc2xhc2hlZC4AME1heFVuYm9uZGluZzgQIAAAAAQ9ASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIHVuYm9uZGluZyBjaHVua3MgdGhhdCBjYW4gZXhpc3QgcGVyIG1lbWJlci4AAX0OAAQ0UmV3YXJkQ291bnRlcg0FMKggVGhlIHR5cGUgdGhhdCBpcyB1c2VkIGZvciByZXdhcmQgY291bnRlci4ANQEgVGhlIGFyaXRobWV0aWMgb2YgdGhlIHJld2FyZCBjb3VudGVyIG1pZ2h0IHNhdHVyYXRlIGJhc2VkIG9uIHRoZSBzaXplIG9mIHRoZWUBIGBDdXJyZW5jeTo6QmFsYW5jZWAuIElmIHRoaXMgaGFwcGVucywgb3BlcmF0aW9ucyBmYWlscy4gTm9uZXRoZWxlc3MsIHRoaXMgdHlwZSBzaG91bGQgYmVlASBjaG9zZW4gc3VjaCB0aGF0IHRoaXMgZmFpbHVyZSBhbG1vc3QgbmV2ZXIgaGFwcGVucywgYXMgaWYgaXQgaGFwcGVucywgdGhlIHBvb2wgYmFzaWNhbGx5ZQEgbmVlZHMgdG8gYmUgZGlzbWFudGxlZCAob3IgYWxsIHBvb2xzIG1pZ3JhdGVkIHRvIGEgbGFyZ2VyIGBSZXdhcmRDb3VudGVyYCB0eXBlLCB3aGljaCBpczwgYSBQSVRBIHRvIGRvKS4AYQEgU2VlIHRoZSBpbmxpbmUgY29kZSBkb2NzIG9mIGBNZW1iZXI6OnBlbmRpbmdfcmV3YXJkc2AgYW5kIGBSZXdhcmRQb29sOjp1cGRhdGVfcmVjb3JkZWRgZQEgZm9yIGV4YW1wbGUgYW5hbHlzaXMuIEEgW2BzcF9ydW50aW1lOjpGaXhlZFUxMjhgXSBzaG91bGQgYmUgZmluZSBmb3IgY2hhaW5zIHdpdGggYmFsYW5jZVEBIHR5cGVzIHNpbWlsYXIgdG8gdGhhdCBvZiBQb2xrYWRvdCBhbmQgS3VzYW1hLCBpbiB0aGUgYWJzZW5jZSBvZiBzZXZlcmUgc2xhc2hpbmcgKG9yPQEgcHJldmVudGVkIHZpYSBhIHJlYXNvbmFibGUgYE1heFBvaW50c1RvQmFsYW5jZWApLCBmb3IgbWFueSBtYW55IHllYXJzIHRvIGNvbWUuAFAAACRWb3Rlckxpc3QBJFZvdGVyTGlzdBwkTGlzdE5vZGVzAAEEBQSFDgQADIAgQSBzaW5nbGUgbm9kZSwgd2l0aGluIHNvbWUgYmFnLgAFASBOb2RlcyBzdG9yZSBsaW5rcyBmb3J3YXJkIGFuZCBiYWNrIHdpdGhpbiB0aGVpciByZXNwZWN0aXZlIGJhZ3MuAExDb3VudGVyRm9yTGlzdE5vZGVzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAIExpc3RCYWdzAAEEBSiJDgQADGQgQSBiYWcgc3RvcmVkIGluIHN0b3JhZ2UuABkBIFN0b3JlcyBhIGBCYWdgIHN0cnVjdCwgd2hpY2ggc3RvcmVzIGhlYWQgYW5kIHRhaWwgcG9pbnRlcnMgdG8gaXRzZWxmLgBQTmV4dE5vZGVBdXRvUmViYWdnZWQAAAQEAAgFASBQb2ludGVyIHRoYXQgcmVtZW1iZXJzIHRoZSBuZXh0IG5vZGUgdGhhdCB3aWxsIGJlIGF1dG8tcmViYWdnZWQuAQEgV2hlbiBgTm9uZWAsIHRoZSBuZXh0IHNjYW4gd2lsbCBzdGFydCBmcm9tIHRoZSBsaXN0IGhlYWQgYWdhaW4uABBMb2NrAAAQBAAQhCBMb2NrIGFsbCB1cGRhdGVzIHRvIHRoaXMgcGFsbGV0LgA5ASBJZiBhbnkgbm9kZXMgbmVlZHMgdXBkYXRpbmcsIHJlbW92YWwgb3IgYWRkaXRpb24gZHVlIHRvIGEgdGVtcG9yYXJ5IGxvY2ssIHRoZXQgW2BDYWxsOjpyZWJhZ2BdIGNhbiBiZSB1c2VkLgAwUGVuZGluZ1JlYmFnAAEEBQQQBAA4HQEgQWNjb3VudHMgdGhhdCBmYWlsZWQgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgYmFncy1saXN0IGR1ZSB0byBsb2NraW5nLlkBIFRoZXNlIGFjY291bnRzIHdpbGwgYmUgcHJvY2Vzc2VkIHdpdGggcHJpb3JpdHkgaW4gYG9uX2lkbGVgIG9yIHZpYSBgcmViYWdgIGV4dHJpbnNpYy4ATQEgTm90ZTogVGhpcyBzdG9yYWdlIGlzIGludGVudGlvbmFsbHkgdW5ib3VuZGVkLiBUaGUgZm9sbG93aW5nIGZhY3RvcnMgbWFrZSBib3VuZGluZzQgdW5uZWNlc3Nhcnk6UQEgMS4gVGhlIHN0b3JhZ2UgdXNhZ2UgaXMgdGVtcG9yYXJ5IC0gYWNjb3VudHMgYXJlIHByb2Nlc3NlZCBhbmQgcmVtb3ZlZCBpbiBgb25faWRsZWBFASAyLiBUaGUgcGFsbGV0IGlzIG9ubHkgbG9ja2VkIGR1cmluZyBzbmFwc2hvdCBnZW5lcmF0aW9uLCB3aGljaCBpcyB3ZWlnaHQtbGltaXRlZG0BIDMuIFByb2Nlc3NpbmcgaGFwcGVucyBhdCBtdWx0aXBsZSBhY2NvdW50cyBwZXIgYmxvY2ssIGNsZWFyaW5nIGV2ZW4gbGFyZ2UgYmFja2xvZ3MgcXVpY2tseUEBIDQuIEFuIGFydGlmaWNpYWwgbGltaXQgY291bGQgYmUgZXhoYXVzdGVkIGJ5IGFuIGF0dGFja2VyLCBwcmV2ZW50aW5nIGxlZ2l0aW1hdGUBASAgICBhdXRvLXJlYmFnZ2luZyBmcm9tIHB1dHRpbmcgYWNjb3VudHMgaW4gdGhlIGNvcnJlY3QgcG9zaXRpb24AaQEgV2UgZG9uJ3Qgc3RvcmUgdGhlIHNjb3JlIGhlcmUgLSBpdCdzIGFsd2F5cyBmZXRjaGVkIGZyb20gYFNjb3JlUHJvdmlkZXJgIHdoZW4gcHJvY2Vzc2luZyxpASBlbnN1cmluZyB3ZSB1c2UgdGhlIG1vc3QgdXAtdG8tZGF0ZSBzY29yZSAoYWNjb3VudHMgbWF5IGhhdmUgYmVlbiBzbGFzaGVkLCByZXdhcmRlZCwgZXRjLnQgd2hpbGUgd2FpdGluZyBpbiB0aGUgcXVldWUpLgBYQ291bnRlckZvclBlbmRpbmdSZWJhZwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAAF5BQABWQkACDRCYWdUaHJlc2hvbGRzjQ4JGSEDAOQLVAIAAADznoCXAgAAAKixl+ICAAAAlEkuNgMAAAAnnDqTAwAAAAO8zvoDAAAAQsAbbgQAAAAbR3XuBAAAADheVX0FAAAARtxgHAYAAACJOGzNBgAAALbugJIHAAAA/n7jbQgAAADoGxpiCQAAALAZ9HEKAAAAEDWSoAsAAADPyW/xDAAAAEEUbWgOAAAA55vaCRAAAADO6IXaEQAAACipx98TAAAAu3CTHxYAAACOQImgGAAAAIEKCWobAAAANmpIhB4AAABb02r4IQAAAIB8nNAlAAAAyVUwGCoAAAC9Y8HbLgAAAHHgVyk0AAAAaJCSEDoAAADtxNSiQAAAAGmTefNHAAAAj9gMGFAAAABLr4ooWQAAAGoWpj9jAAAACZUXe24AAAB4xfT7egAAAGLIEeeIAAAAUb9tZZgAAAAEjqukqQAAAFRGmNe8AAAAkcrANtIAAAAXXxgB6gAAAL0VsnwEAQAAQzWP9yEBAAC4/ITIQgEAAJlnPFBnAQAAB+RO+o8BAACzQYM+vQEAAAJ/LqLvAQAAmIO8uScCAAAWTWUqZgIAALSVE6yrAgAALY6CC/kCAACh5pgsTwMAAKYWCA2vAwAAzJ03xxkEAACg1YSVkAQAAELn4NUUBQAAAozXDagFAAAPdQrvSwYAAOqNLlwCBwAAw8uZbs0HAACx5XF8rwgAAKorjh+rCQAAtcEgPcMKAAAm0D0O+wsAAHDHWSlWDQAA663ajNgOAAD3l9uqhhAAAM/wRHZlEgAAHyZgcXoUAAAJphG+yxYAAB376C9gGQAAlDo8YD8cAACK/onEcR8AAM7ZY8cAIwAAA6kq5PYmAAD+cu7FXysAADbJzGlIMAAA2uMyRb81AAAGKnRw1DsAAHyXMtaZQgAAhKMkaCNKAABXGtRZh1IAAOfxAmLeWwAADbh2A0RmAACuBAHe1nEAAH2eswi5fgAAHgRKdhCNAAA6HfBkB50AAOBPr9rMrgAAVnnwL5XCAACVw6qpmtgAAJZ8BSUe8QAAF3pm1mcMAQAoyx8eyCoBAPooL3WYTAEA1X3IdDxyAQB9xLP7IpwBADZc3nTHygEAnrjhQrP+AQAMMa5UfzgCAF/hAejVeAIAY3PafnTAAgBR0aYNLhADAMfppGjtaAMAYcCR97fLAwC/J6G3sDkEAHsUmZQbtAQAhSPtImE8BQBppdTFEtQFAOyMk03vfAYA9aqQG+g4BwCMvl3bJgoIAAKXjOET8wgA+uMUQ132CQDd8S26/hYLAC663G9KWAwADFUYxPK9DQDwu1QxFUwPAEmOhmtGBxEAssFT3p/0EgAnii+yzhkVALI5n4QkfRcA4ZnnBKolGgC6E/WrMxsdACZHhcx4ZiAAiL+APy0RJAAcmCP4HSYoAMzEItRQsSwA8IiCBSjAMQA2fG1+iWE3AG6TKdMKpj0AjLxsEyKgRAAAcPMqXGRMALQ7hGmZCVUAgLSr5FCpXgCgzal5219pAEzCf0zHTHUA0KwOujSTggBIPgzPPVqRAGjGjnRpzaEAKB5vpSsdtACYqSMmdH/IAPCadGNNMN8AgM38S41y+ACQFGAtmpAUAfC0E9lF3TMBIJc1lsG0VgFQ3PuurX19AeARmLlHqqgBMMfuFru52AEgbkiGlzkOAqD6Sx1yx0kCwBFxcLUSjAKAihZDpt7VAsD4I7GiBCgDgK9ZcKJ2gwPAby2H/0HpA0CTf6yPkloEAJEJcRe22ARAD99bISBlBQBJwUlEbgEGAI68puVsrwYAWVaGhRxxB4BoqjSkt0gIgKHinlK5OAkAvavogORDCgAqcrQgTG0LgPHAEzNcuAwAoDzL3OMoDoC4YpqeIMMPAN5Wk9LKixEAXX9MkyOIEwAah981BL4VAKfOS4TvMxgAARD76iTxGgCAKuXRtf0dACKhNGCdYiEARCFr8NopJQACYfGCj14pAGYgz4UeDS4AhBAZUlJDMwCgwY/KhBA5ACatFJPMhT8A0M0kZi+2RgCc4Zoc2rZOAFjMwgxfn1cAIAp1ePuJYQAwu7vW5JNsAGDLp9ye3XgAuDvAQluLhgC4hiNhZMWVAPjxX9yTuKYAIGqRwNaWuQDY7+KPwJfOAGgpm/Uu+eX//////////6zQIFRoZSBsaXN0IG9mIHRocmVzaG9sZHMgc2VwYXJhdGluZyB0aGUgdmFyaW91cyBiYWdzLgBJASBJZHMgYXJlIHNlcGFyYXRlZCBpbnRvIHVuc29ydGVkIGJhZ3MgYWNjb3JkaW5nIHRvIHRoZWlyIHNjb3JlLiBUaGlzIHNwZWNpZmllcyB0aGVhASB0aHJlc2hvbGRzIHNlcGFyYXRpbmcgdGhlIGJhZ3MuIEFuIGlkJ3MgYmFnIGlzIHRoZSBsYXJnZXN0IGJhZyBmb3Igd2hpY2ggdGhlIGlkJ3Mgc2NvcmW4IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBpdHMgdXBwZXIgdGhyZXNob2xkLgBlASBXaGVuIGlkcyBhcmUgaXRlcmF0ZWQsIGhpZ2hlciBiYWdzIGFyZSBpdGVyYXRlZCBjb21wbGV0ZWx5IGJlZm9yZSBsb3dlciBiYWdzLiBUaGlzIG1lYW5zWQEgdGhhdCBpdGVyYXRpb24gaXMgX3NlbWktc29ydGVkXzogaWRzIG9mIGhpZ2hlciBzY29yZSB0ZW5kIHRvIGNvbWUgYmVmb3JlIGlkcyBvZiBsb3dlci0BIHNjb3JlLCBidXQgcGVlciBpZHMgd2l0aGluIGEgcGFydGljdWxhciBiYWcgYXJlIHNvcnRlZCBpbiBpbnNlcnRpb24gb3JkZXIuAGggIyBFeHByZXNzaW5nIHRoZSBjb25zdGFudABNASBUaGlzIGNvbnN0YW50IG11c3QgYmUgc29ydGVkIGluIHN0cmljdGx5IGluY3JlYXNpbmcgb3JkZXIuIER1cGxpY2F0ZSBpdGVtcyBhcmUgbm90LCBwZXJtaXR0ZWQuAEEBIFRoZXJlIGlzIGFuIGltcGxpZWQgdXBwZXIgbGltaXQgb2YgYFNjb3JlOjpNQVhgOyB0aGF0IHZhbHVlIGRvZXMgbm90IG5lZWQgdG8gYmUhASBzcGVjaWZpZWQgd2l0aGluIHRoZSBiYWcuIEZvciBhbnkgdHdvIHRocmVzaG9sZCBsaXN0cywgaWYgb25lIGVuZHMgd2l0aDEBIGBTY29yZTo6TUFYYCwgdGhlIG90aGVyIG9uZSBkb2VzIG5vdCwgYW5kIHRoZXkgYXJlIG90aGVyd2lzZSBlcXVhbCwgdGhlIHR3b3wgbGlzdHMgd2lsbCBiZWhhdmUgaWRlbnRpY2FsbHkuADggIyBDYWxjdWxhdGlvbgBVASBJdCBpcyByZWNvbW1lbmRlZCB0byBnZW5lcmF0ZSB0aGUgc2V0IG9mIHRocmVzaG9sZHMgaW4gYSBnZW9tZXRyaWMgc2VyaWVzLCBzdWNoIHRoYXRBASB0aGVyZSBleGlzdHMgc29tZSBjb25zdGFudCByYXRpbyBzdWNoIHRoYXQgYHRocmVzaG9sZFtrICsgMV0gPT0gKHRocmVzaG9sZFtrXSAq0CBjb25zdGFudF9yYXRpbykubWF4KHRocmVzaG9sZFtrXSArIDEpYCBmb3IgYWxsIGBrYC4AWQEgVGhlIGhlbHBlcnMgaW4gdGhlIGAvdXRpbHMvZnJhbWUvZ2VuZXJhdGUtYmFnc2AgbW9kdWxlIGNhbiBzaW1wbGlmeSB0aGlzIGNhbGN1bGF0aW9uLgAsICMgRXhhbXBsZXMAUQEgLSBJZiBgQmFnVGhyZXNob2xkczo6Z2V0KCkuaXNfZW1wdHkoKWAsIHRoZW4gYWxsIGlkcyBhcmUgcHV0IGludG8gdGhlIHNhbWUgYmFnLCBhbmSwICAgaXRlcmF0aW9uIGlzIHN0cmljdGx5IGluIGluc2VydGlvbiBvcmRlci5hASAtIElmIGBCYWdUaHJlc2hvbGRzOjpnZXQoKS5sZW4oKSA9PSA2NGAsIGFuZCB0aGUgdGhyZXNob2xkcyBhcmUgZGV0ZXJtaW5lZCBhY2NvcmRpbmcgdG8RASAgIHRoZSBwcm9jZWR1cmUgZ2l2ZW4gYWJvdmUsIHRoZW4gdGhlIGNvbnN0YW50IHJhdGlvIGlzIGVxdWFsIHRvIDIuZQEgLSBJZiBgQmFnVGhyZXNob2xkczo6Z2V0KCkubGVuKCkgPT0gMjAwYCwgYW5kIHRoZSB0aHJlc2hvbGRzIGFyZSBkZXRlcm1pbmVkIGFjY29yZGluZyB0b1kBICAgdGhlIHByb2NlZHVyZSBnaXZlbiBhYm92ZSwgdGhlbiB0aGUgY29uc3RhbnQgcmF0aW8gaXMgYXBwcm94aW1hdGVseSBlcXVhbCB0byAxLjI0OC5hASAtIElmIHRoZSB0aHJlc2hvbGQgbGlzdCBiZWdpbnMgYFsxLCAyLCAzLCAuLi5dYCwgdGhlbiBhbiBpZCB3aXRoIHNjb3JlIDAgb3IgMSB3aWxsIGZhbGzwICAgaW50byBiYWcgMCwgYW4gaWQgd2l0aCBzY29yZSAyIHdpbGwgZmFsbCBpbnRvIGJhZyAxLCBldGMuADAgIyBNaWdyYXRpb24AYQEgSW4gdGhlIGV2ZW50IHRoYXQgdGhpcyBsaXN0IGV2ZXIgY2hhbmdlcywgYSBjb3B5IG9mIHRoZSBvbGQgYmFncyBsaXN0IG11c3QgYmUgcmV0YWluZWQuXQEgV2l0aCB0aGF0IGBMaXN0OjptaWdyYXRlYCBjYW4gYmUgY2FsbGVkLCB3aGljaCB3aWxsIHBlcmZvcm0gdGhlIGFwcHJvcHJpYXRlIG1pZ3JhdGlvbi4AUE1heEF1dG9SZWJhZ1BlckJsb2NrOBAKAAAAEDUBIE1heGltdW0gbnVtYmVyIG9mIGFjY291bnRzIHRoYXQgbWF5IGJlIHJlLWJhZ2dlZCBhdXRvbWF0aWNhbGx5IGluIGBvbl9pZGxlYC4AUQEgQSB2YWx1ZSBvZiBgMGAgKG9idGFpbmVkIGJ5IGNvbmZpZ3VyaW5nIGB0eXBlIE1heEF1dG9SZWJhZ1BlckJsb2NrID0gKCk7YCkgZGlzYWJsZXM0IHRoZSBmZWF0dXJlLgABkQ4ABBRTY29yZSgECQEgVGhlIHR5cGUgdXNlZCB0byBkaWN0YXRlIGEgbm9kZSBwb3NpdGlvbiByZWxhdGl2ZSB0byBvdGhlciBub2Rlcy4EdN1wLaRvd9es939aSNSvfRJGUJ0hzbEm6LrFaBPEop4Yc2NvcmVzBAx3aG8EmQ4YsCBHZXQgdGhlIGN1cnJlbnQgYHNjb3JlYCBvZiBhIGdpdmVuIGFjY291bnQuAGEBIFJldHVybnMgYChjdXJyZW50LCByZWFsX3Njb3JlKWAsIHRoZSBmb3JtZXIgYmVpbmcgdGhlIGN1cnJlbnQgc2NvcmUgdGhhdCB0aGlzIHBhbGxldCBpc1kBIGF3YXJlIG9mLCB3aGljaCBtYXkgb3IgbWF5IG5vdCBiZSB1cCB0byBkYXRlLCBhbmQgdGhlIGxhdHRlciBiZWluZyB0aGUgcmVhbCBzY29yZSwgYXMwIHByb3ZpZGVkIGJ5HQEgSWYgdGhlIHR3byBkaWZmZXIsIGl0IG1lYW5zIHRoaXMgbm9kZSBpcyBlbGlnaWJsZSBmb3IgW2BDYWxsOjpyZWJhZ2BdLgBSAABARGVsZWdhdGVkU3Rha2luZwFARGVsZWdhdGVkU3Rha2luZxAoRGVsZWdhdG9ycwABBAUEnQ4EABCkIE1hcCBvZiBEZWxlZ2F0b3JzIHRvIHRoZWlyIGBEZWxlZ2F0aW9uYC4AYQEgSW1wbGVtZW50YXRpb24gbm90ZTogV2UgYXJlIG5vdCB1c2luZyBhIGRvdWJsZSBtYXAgd2l0aCBgZGVsZWdhdG9yYCBhbmQgYGFnZW50YCBhY2NvdW50YQEgYXMga2V5cyBzaW5jZSB3ZSB3YW50IHRvIHJlc3RyaWN0IGRlbGVnYXRvcnMgdG8gZGVsZWdhdGUgb25seSB0byBvbmUgYWNjb3VudCBhdCBhIHRpbWUuAFBDb3VudGVyRm9yRGVsZWdhdG9ycwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwABhBZ2VudHMAAQQFBKEOBAAEiCBNYXAgb2YgYEFnZW50YCB0byB0aGVpciBgTGVkZ2VyYC4AQENvdW50ZXJGb3JBZ2VudHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAAAV0JAAggUGFsbGV0SWRJCyBweS9kbHN0awSQIEluamVjdGVkIGlkZW50aWZpZXIgZm9yIHRoZSBwYWxsZXQuAExTbGFzaFJld2FyZEZyYWN0aW9uHQUQgJaYAARRASBGcmFjdGlvbiBvZiB0aGUgc2xhc2ggdGhhdCBpcyByZXdhcmRlZCB0byB0aGUgY2FsbGVyIG9mIHBlbmRpbmcgc2xhc2ggdG8gdGhlIGFnZW50LgABpQ4AAABTAAA8U3Rha2luZ1JjQ2xpZW50ATxTdGFraW5nUmNDbGllbnQMXEluY29tcGxldGVTZXNzaW9uUmVwb3J0AACBBQQABB0BIEFuIGluY29tcGxldGUgaW5jb21pbmcgc2Vzc2lvbiByZXBvcnQgdGhhdCB3ZSBoYXZlIG5vdCBhY3RlZCB1cG9uIHlldC4AcExhc3RTZXNzaW9uUmVwb3J0RW5kaW5nSW5kZXgAADgEACD8IFRoZSBsYXN0IHNlc3Npb24gcmVwb3J0J3MgYGVuZF9pbmRleGAgdGhhdCB3ZSBoYXZlIGFjdGVkIHVwb24uAGEBIFRoaXMgYWxsb3dzIHRoaXMgcGFsbGV0IHRvIGVuc3VyZSBhIHNlcXVlbnRpYWxseSBpbmNyZWFzaW5nIHNlcXVlbmNlIG9mIHNlc3Npb24gcmVwb3J0c0wgcGFzc2VkIHRvIHN0YWtpbmcuAF0BIE5vdGUgdGhhdCB3aXRoIHRoZSBYQ00gYmVpbmcgdGhlIGJhY2tib25lIG9mIGNvbW11bmljYXRpb24sIHdlIGhhdmUgYSBndWFyYW50ZWUgb24gdGhlYQEgb3JkZXJpbmcgb2YgbWVzc2FnZXMuIEFzIGxvbmcgYXMgdGhlIFJDIHNlbmRzIHNlc3Npb24gcmVwb3J0cyBpbiBvcmRlciwgd2UgX2V2ZW50dWFsbHlfwCByZWNlaXZlIHRoZW0gaW4gdGhlIHNhbWUgY29ycmVjdCBvcmRlciBhcyB3ZWxsLgBQT3V0Z29pbmdWYWxpZGF0b3JTZXQAAKkOBAAQ2CBBIHZhbGlkYXRvciBzZXQgdGhhdCBpcyBvdXRnb2luZywgYW5kIHNob3VsZCBiZSBzZW50LgB1ASBUaGlzIHdpbGwgYmUgYXR0ZW1wdGVkIHRvIGJlIHNlbnQsIHBvc3NpYmx5IG9uIGV2ZXJ5IGBvbl9pbml0aWFsaXplYCBjYWxsLCB1bnRpbCBpdCBpcyBzZW50LPQgb3IgdGhlIHNlY29uZCB2YWx1ZSByZWFjaGVzIHplcm8sIGF0IHdoaWNoIHBvaW50IHdlIGRyb3AgaXQuAAF9BQABYQkABChLZXlEZXBvc2l0VQFAAOh2SBcAAAAAAAAAAAAAAAQtASBEZXBvc2l0IGhlbGQgd2hlbiBhIHZhbGlkYXRvciBzZXRzIHNlc3Npb24ga2V5cy4gUmVsZWFzZWQgb24gYHB1cmdlX2tleXNgLgABsQ4AAABUAABITXVsdGlCbG9ja0VsZWN0aW9uAUhNdWx0aUJsb2NrRWxlY3Rpb24cFFJvdW5kAQA4EAAAAAAYrCBJbnRlcm5hbCBjb3VudGVyIGZvciB0aGUgbnVtYmVyIG9mIHJvdW5kcy4AVQEgVGhpcyBpcyB1c2VmdWwgZm9yIGRlLWR1cGxpY2F0aW9uIG9mIHRyYW5zYWN0aW9ucyBzdWJtaXR0ZWQgdG8gdGhlIHBvb2wsIGFuZCBnZW5lcmFsbCBkaWFnbm9zdGljcyBvZiB0aGUgcGFsbGV0LgBNASBUaGlzIGlzIG1lcmVseSBpbmNyZW1lbnRlZCBvbmNlIHBlciBldmVyeSB0aW1lIHRoYXQgYW4gdXBzdHJlYW0gYGVsZWN0YCBpcyBjYWxsZWQuADBDdXJyZW50UGhhc2UBAKkFBAAEPCBDdXJyZW50IHBoYXNlLgA4RGVzaXJlZFRhcmdldHMAAQQFODgEAATMIERlc2lyZWQgbnVtYmVyIG9mIHRhcmdldHMgdG8gZWxlY3QgZm9yIHRoaXMgcm91bmQuAEhQYWdlZFZvdGVyU25hcHNob3QAAQgFBcy1DgQABAEBIFBhZ2luYXRlZCB2b3RlciBzbmFwc2hvdC4gQXQgbW9zdCBbYFQ6OlBhZ2VzYF0ga2V5cyB3aWxsIGV4aXN0LgBYUGFnZWRWb3RlclNuYXBzaG90SGFzaAABCAUFzDwEAAwxASBTYW1lIGFzIFtgUGFnZWRWb3RlclNuYXBzaG90YF0sIGJ1dCBpdCB3aWxsIHN0b3JlIHRoZSBoYXNoIG9mIHRoZSBzbmFwc2hvdC4A/CBUaGUgaGFzaCBpcyBnZW5lcmF0ZWQgdXNpbmcgW2BmcmFtZV9zeXN0ZW06OkNvbmZpZzo6SGFzaGluZ2BdLgBMUGFnZWRUYXJnZXRTbmFwc2hvdAABCAUFzMUOBAAMbCBQYWdpbmF0ZWQgdGFyZ2V0IHNuYXBzaG90LgBZASBGb3IgdGhlIHRpbWUgYmVpbmcsIHNpbmNlIHdlIGFzc3VtZSBvbmUgcGFnZXMgb2YgdGFyZ2V0cywgYXQgbW9zdCBPTkUga2V5IHdpbGwgZXhpc3QuAFxQYWdlZFRhcmdldFNuYXBzaG90SGFzaAABCAUFzDwEAAw1ASBTYW1lIGFzIFtgUGFnZWRUYXJnZXRTbmFwc2hvdGBdLCBidXQgaXQgd2lsbCBzdG9yZSB0aGUgaGFzaCBvZiB0aGUgc25hcHNob3QuAPwgVGhlIGhhc2ggaXMgZ2VuZXJhdGVkIHVzaW5nIFtgZnJhbWVfc3lzdGVtOjpDb25maWc6Okhhc2hpbmdgXS4AAaEFAAFpCQAYNFVuc2lnbmVkUGhhc2U4EJYAAAAEgCBEdXJhdGlvbiBvZiB0aGUgdW5zaWduZWQgcGhhc2UuACxTaWduZWRQaGFzZTgQLAEAAAR4IER1cmF0aW9uIG9mIHRoZSBzaWduZWQgcGhhc2UuAFRTaWduZWRWYWxpZGF0aW9uUGhhc2U4EAACAAAQpCBEdXJhdGlvbiBvZiB0aGUgc2luZ2VkIHZhbGlkYXRpb24gcGhhc2UuAFUBIFRoZSBkdXJhdGlvbiBvZiB0aGlzIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIGBUOjpQYWdlc2AsIGFuZCB0aGVyZSBpcyBubyBwb2ludCBpbiBpdAEBIGJlaW5nIG1vcmUgdGhhbiBgU2lnbmVkUGhhc2U6Ok1heFN1Ym1pc3Npb246OmdldCgpICogVDo6UGFnZXNgLgBUVm90ZXJTbmFwc2hvdFBlckJsb2NrOBDAAgAABMggVGhlIG51bWJlciBvZiBzbmFwc2hvdCB2b3RlcnMgdG8gZmV0Y2ggcGVyIGJsb2NrLgBYVGFyZ2V0U25hcHNob3RQZXJCbG9jazgQ0AcAAATMIFRoZSBudW1iZXIgb2Ygc25hcHNob3QgdGFyZ2V0cyB0byBmZXRjaCBwZXIgYmxvY2suABRQYWdlczgQIAAAABhUIFRoZSBudW1iZXIgb2YgcGFnZXMuAAEBIFRoZSBzbmFwc2hvdCBpcyBjcmVhdGVkIHdpdGggdGhpcyBtYW55IGtleXMgaW4gdGhlIHN0b3JhZ2UgbWFwLgBRASBUaGUgc29sdXRpb25zIG1heSBjb250YWluIGF0IE1PU1QgdGhpcyBtYW55IHBhZ2VzLCBidXQgbGVzcyBwYWdlcyBhcmUgYWNjZXB0YWJsZSBhcxggd2VsbC4AAckOAAAAVQAAaE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyAWhNdWx0aUJsb2NrRWxlY3Rpb25WZXJpZmllchw8UXVldWVkU29sdXRpb25YAAEIBQXMsQUEABw9ASBUaGUgYFhgIHZhcmlhbnQgb2YgdGhlIGN1cnJlbnQgcXVldWVkIHNvbHV0aW9uLiBNaWdodCBiZSB0aGUgdmFsaWQgb25lIG9yIG5vdC4AaQEgVGhlIHR3byB2YXJpYW50cyBvZiB0aGlzIHN0b3JhZ2UgaXRlbSBpcyB0byBhdm9pZCB0aGUgbmVlZCBvZiBjb3B5aW5nLiBSZWNhbGwgdGhhdCBvbmNlIGFxASBgVmVyaWZ5aW5nU29sdXRpb25gIGlzIGJlaW5nIHByb2Nlc3NlZCwgaXQgbmVlZHMgdG8gd3JpdGUgaXRzIHBhcnRpYWwgc3VwcG9ydHMgKnNvbWV3aGVyZSouaQEgV3JpdGluZyB0aGVzZXMgc3VwcG9ydHMgb24gdG9wIG9mIGEgKmdvb2QqIHF1ZXVlZCBzdXBwb3J0cyBpcyB3cm9uZywgc2luY2Ugd2UgbWlnaHQgYmFpbC51ASBXcml0aW5nIHRoZW0gdG8gYSBidWdnZXIgYW5kIGNvcHlpbmcgYXQgdGhlIG5lZCBpcyBzbGlnaHRseSBiZXR0ZXIsIGJ1dCBleHBlbnNpdmUuIFRoaXMgZmxhZ3wgc3lzdGVtIGlzIGJlc3Qgb2YgYm90aCB3b3JsZHMuADxRdWV1ZWRTb2x1dGlvblkAAQgFBcyxBQQABD0BIFRoZSBgWWAgdmFyaWFudCBvZiB0aGUgY3VycmVudCBxdWV1ZWQgc29sdXRpb24uIE1pZ2h0IGJlIHRoZSB2YWxpZCBvbmUgb3Igbm90LgBIUXVldWVkVmFsaWRWYXJpYW50AQEEBTjNDgQBCF0BIFBvaW50ZXIgdG8gdGhlIHZhcmlhbnQgb2YgW2BRdWV1ZWRTb2x1dGlvblhgXSBvciBbYFF1ZXVlZFNvbHV0aW9uWWBdIHRoYXQgaXMgY3VycmVudGx5HCB2YWxpZC4AWFF1ZXVlZFNvbHV0aW9uQmFja2luZ3MAAQgFBczRDgQAINQgVGhlIGAoYW1vdW50LCBjb3VudClgIG9mIGJhY2tpbmdzLCBkaXZpZGVkIHBlciBwYWdlLgBxASBUaGlzIGlzIHN0b3JlZCBiZWNhdXNlIGluIHRoZSBsYXN0IGJsb2NrIG9mIHZlcmlmaWNhdGlvbiB3ZSBuZWVkIHRoZW0gdG8gY29tcHV0ZSB0aGUgc2NvcmUsmCBhbmQgY2hlY2sgYE1heEJhY2tlcnNQZXJXaW5uZXJGaW5hbGAuAHEBIFRoaXMgY2FuIG9ubHkgZXZlciBsaXZlIGZvciB0aGUgaW52YWxpZCB2YXJpYW50IG9mIHRoZSBzb2x1dGlvbi4gT25jZSBpdCBpcyB2YWxpZCwgd2UgZG9uJ3QVASBuZWVkIHRoaXMgaW5mb3JtYXRpb24gYW55bW9yZTsgdGhlIHNjb3JlIGlzIGFscmVhZHkgY29tcHV0ZWQgb25jZSBpbvQgW2BRdWV1ZWRTb2x1dGlvblNjb3JlYF0sIGFuZCB0aGUgYmFja2luZyBjb3VudHMgYXJlIGNoZWNrZWQuAExRdWV1ZWRTb2x1dGlvblNjb3JlAAEEBTjRBQQADNggVGhlIHNjb3JlIG9mIHRoZSB2YWxpZCB2YXJpYW50IG9mIFtgUXVldWVkU29sdXRpb25gXS4AuCBUaGlzIG9ubHkgZXZlciBsaXZlcyBmb3IgdGhlIGB2YWxpZGAgdmFyaWFudC4AME1pbmltdW1TY29yZQAA0QUEAARVASBUaGUgbWluaW11bSBzY29yZSB0aGF0IGVhY2ggc29sdXRpb24gbXVzdCBhdHRhaW4gaW4gb3JkZXIgdG8gYmUgY29uc2lkZXJlZCBmZWFzaWJsZS4ANFN0YXR1c1N0b3JhZ2UBAOEOBAEEdCBTdG9yYWdlIGl0ZW0gZm9yIFtgU3RhdHVzYF0uAAHVBQABbQkADGBNYXhCYWNrZXJzUGVyV2lubmVyRmluYWw4EORXAAAUHQEgTWF4aW11bSBudW1iZXIgb2YgYmFja2VycywgcGVyIHdpbm5lciwgYW1vbmcgYWxsIHBhZ2VzIG9mIGFuIGVsZWN0aW9uLgAFASBUaGlzIGNhbiBvbmx5IGJlIGNoZWNrZWQgYXQgdGhlIHZlcnkgZmluYWwgc3RlcCBvZiB2ZXJpZmljYXRpb24uAF0BIE5PVEU6IGF0IHRoZSBtb21lbnQsIHdlIGRvbid0IGNoZWNrIHRoaXMsIGFuZCBpdCBpcyBpbiBwbGFjZSBmb3IgZnV0dXJlIGNvbXBhdGliaWxpdHkuAExNYXhCYWNrZXJzUGVyV2lubmVyOBDAAgAABMQgTWF4aW11bSBudW1iZXIgb2YgYmFja2VycywgcGVyIHdpbm5lciwgcGVyIHBhZ2UuAERNYXhXaW5uZXJzUGVyUGFnZTgQ6AMAAAhhASBNYXhpbXVtIG51bWJlciBvZiBzdXBwb3J0cyAoYWthLiB3aW5uZXJzL3ZhbGlkYXRvcnMvdGFyZ2V0cykgdGhhdCBjYW4gYmUgcmVwcmVzZW50ZWQgaW5MIGEgcGFnZSBvZiByZXN1bHRzLgAAAABWAABoTXVsdGlCbG9ja0VsZWN0aW9uVW5zaWduZWQAAdkFAAAAAAAAVwAAYE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZAFgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkEDRJbnZ1bG5lcmFibGVzAQC9DgQAJBUBIEFjY291bnRzIHdoaXRlbGlzdGVkIGJ5IGdvdmVybmFuY2UgdG8gYWx3YXlzIHN1Ym1pdCB0aGVpciBzb2x1dGlvbnMuAHAgVGhleSBhcmUgZGlmZmVyZW50IGluIHRoYXQ6APwgKiBUaGV5IGFsd2F5cyBwYXkgYSBmaXhlZCBkZXBvc2l0IGZvciBzdWJtaXNzaW9uLCBzcGVjaWZpZWQgYnn0ICAgW2BDb25maWc6OkludnVsbmVyYWJsZURlcG9zaXRgXS4gVGhleSBwYXkgbm8gcGFnZSBkZXBvc2l0LmkBICogSWYgX2VqZWN0ZWRfIGJ5IGJldHRlciBzb2x1dGlvbiBmcm9tIFtgU29ydGVkU2NvcmVzYF0sIHRoZXkgd2lsbCBnZXQgdGhlaXIgZnVsbCBkZXBvc2l0ICAgIGJhY2suCQEgKiBUaGV5IGFsd2F5cyBnZXQgdGhlaXIgdHgtZmVlIGJhY2sgZXZlbiBpZiB0aGV5IGFyZSBfZGlzY2FyZGVkXy4AMFNvcnRlZFNjb3JlcwEBBAU45Q4EAAAARFN1Ym1pc3Npb25TdG9yYWdlAAEMBQUF8Q7lBQQABOwgVHJpcGxlIG1hcCBmcm9tIChyb3VuZCwgYWNjb3VudCwgcGFnZSkgdG8gYSBzb2x1dGlvbiBwYWdlLgBkU3VibWlzc2lvbk1ldGFkYXRhU3RvcmFnZQABCAUFhQz1DgQAENggTWFwIGZyb20gYWNjb3VudCB0byB0aGUgbWV0YWRhdGEgb2YgdGhlaXIgc3VibWlzc2lvbi4AcQEgaW52YXJpYW50OiBmb3IgYW55IEtleTEgb2YgdHlwZSBgQWNjb3VudElkYCBpbiBbYFN1Ym1pc3Npb25zYF0sIHRoaXMgc3RvcmFnZSBtYXAgYWxzbyBoYXMgYRwgdmFsdWUuAAGxBgABfQkAAAEBDwAABHcLZVBCaAvPBTnSBN9Z0yiJr6YLyclMjiR27ZuqqTAFLGRlcG9zaXRfZm9yCAx3aG8EFHBhZ2VzOFUBFBEBIEdldCB0aGUgZGVwb3NpdCBhbW91bnQgdGhhdCB3aWxsIGJlIGhlbGQgZm9yIGEgc29sdXRpb24gb2YgYHBhZ2VzYC4AQQEgVGhpcyBhbGxvd3MgYW4gb2ZmY2hhaW4gYXBwbGljYXRpb24gdG8ga25vdyB3aGF0IFtgQ29uZmlnOjpEZXBvc2l0UGVyUGFnZWBdIGFuZGUBIFtgQ29uZmlnOjpEZXBvc2l0QmFzZWBdIGFyZSBkb2luZyB1bmRlciB0aGUgaG9vZC4gSXQgYWxzbyB0YWtlcyBpbnRvIGFjY291bnQgaWYgYHdob2AgaXNoIFtgSW52dWxuZXJhYmxlc2BdIG9yIG5vdC4AWAAAHFN0YWtpbmcBHFN0YWtpbmfQOFZhbGlkYXRvckNvdW50AQA4EAAAAAAEnCBUaGUgaWRlYWwgbnVtYmVyIG9mIGFjdGl2ZSB2YWxpZGF0b3JzLgAYQm9uZGVkAAEEBQQEBAAMAQEgTWFwIGZyb20gYWxsIGxvY2tlZCAic3Rhc2giIGFjY291bnRzIHRvIHRoZSBjb250cm9sbGVyIGFjY291bnQuANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAEBNaW5Ob21pbmF0b3JCb25kAQBVAUAAAAAAAAAAAAAAAAAAAAAABCEBIFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIHRvIGJlY29tZSBhbmQgbWFpbnRhaW4gdGhlIHJvbGUgb2YgYSBub21pbmF0b3IuAEBNaW5WYWxpZGF0b3JCb25kAQBVAUAAAAAAAAAAAAAAAAAAAAAABCEBIFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIHRvIGJlY29tZSBhbmQgbWFpbnRhaW4gdGhlIHJvbGUgb2YgYSB2YWxpZGF0b3IuAEhNaW5pbXVtQWN0aXZlU3Rha2UBAFUBQAAAAAAAAAAAAAAAAAAAAAAEEQEgVGhlIG1pbmltdW0gYWN0aXZlIG5vbWluYXRvciBzdGFrZSBvZiB0aGUgbGFzdCBzdWNjZXNzZnVsIGVsZWN0aW9uLgA0TWluQ29tbWlzc2lvbgEAHQUQAAAAAAzoIFRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgdmFsaWRhdG9ycyBjYW4gc2V0LgCAIElmIHNldCB0byBgMGAsIG5vIGxpbWl0IGV4aXN0cy4ANE1heENvbW1pc3Npb24BAB0FEADKmjsMwCBUaGUgbWF4aW11bSBjb21taXNzaW9uIHRoYXQgdmFsaWRhdG9ycyBjYW4gc2V0LgAZASBJZiBub3Qgc2V0LCBkZWZhdWx0cyB0byBgUGVyYmlsbDo6b25lKClgICgxMDAlKSwgaS5lLiBubyB1cHBlciBsaW1pdC4ATERpc2FibGVNaW50aW5nR3VhcmQAADgEABw9ASBTYWZldHkgZ3VhcmQ6IHRoZSBlcmEgZnJvbSB3aGljaCBsZWdhY3kgbWludGluZyBpcyBwZXJtYW5lbnRseSBkaXNhYmxlZCBvbiB0aGUVASBwYXlvdXQgc2lkZS4gKipJcnJldmVyc2libGUqKiDigJQgb25jZSBzZXQsIHNob3VsZCBuZXZlciBiZSBjbGVhcmVkLgAxASBTZXBhcmF0ZSBmcm9tIFtgQ29uZmlnOjpEaXNhYmxlTWludGluZ2BdIHdoaWNoIGNvbnRyb2xzIHRoZSBgZW5kX2VyYWAgcGF0aC41ASBUaGlzIHN0b3JhZ2UgZ3VhcmRzIGFnYWluc3QgbWludGluZyBkdXJpbmcgcGF5b3V0IGZvciBlcmFzIHRoYXQgd2VyZSBjcmVhdGVkSQEgaW4gREFQIG1vZGUuIFNldCBhdXRvbWF0aWNhbGx5IGJ5IGBlbmRfZXJhX2RhcGAgb24gZmlyc3Qgc3VjY2Vzc2Z1bCBwb3Qgc25hcHNob3QuGQEgSW4gbGVnYWN5IG1vZGUgKEt1c2FtYSksIHRoaXMgaXMgbmV2ZXIgc2V0IGFuZCB0aGUgZ3VhcmQgaXMgaW5hY3RpdmUuAEBPcHRpbXVtU2VsZlN0YWtlAQBVAUAAAAAAAAAAAAAAAAAAAAAAELQgT3B0aW11bSBzZWxmLXN0YWtlIHRocmVzaG9sZCBmb3IgdmFsaWRhdG9ycy4AIQEgQmVsb3cgdGhpcyB0aHJlc2hvbGQsIHRoZSBpbmNlbnRpdmUgd2VpZ2h0IGdyb3dzIGFzIGBzcXJ0KHNlbGZfc3Rha2UpYC7oIEFib3ZlIGl0LCBncm93dGggaXMgZGFtcGVuZWQgYnkgW2BTZWxmU3Rha2VTbG9wZUZhY3RvcmBdLgBASGFyZENhcFNlbGZTdGFrZQEAVQFAAAAAAAAAAAAAAAAAAAAAAAywIEhhcmQgY2FwIG9uIGVmZmVjdGl2ZSB2YWxpZGF0b3Igc2VsZi1zdGFrZS4ANQEgU2VsZi1zdGFrZSBhYm92ZSB0aGlzIHZhbHVlIHJlY2VpdmVzIG5vIGFkZGl0aW9uYWwgcmV3YXJkIGJlbmVmaXQgKHBsYXRlYXUpLgBQU2VsZlN0YWtlU2xvcGVGYWN0b3IBAB0FEAAAAAAMZQEgU2xvcGUgZmFjdG9yIGNvbnRyb2xsaW5nIHRoZSBkaXNjb3VyYWdlbWVudCByYXRlIGZvciBzZWxmLXN0YWtlIGJldHdlZW4gb3B0aW11bSBhbmQgY2FwLgBFASBWYWx1ZSBiZXR3ZWVuIDAgYW5kIDE6IGs9MSBtZWFucyBubyBkaXNjb3VyYWdlbWVudCwgaz0wIG1lYW5zIGltbWVkaWF0ZSBwbGF0ZWF1LgBwRXJhc1ZhbGlkYXRvckluY2VudGl2ZUJ1ZGdldAEBBAU4VQFAAAAAAAAAAAAAAAAAAAAAAAxBASBUaGUgdG90YWwgdmFsaWRhdG9yIGluY2VudGl2ZSBidWRnZXQgZm9yIHRoZSBnaXZlbiBlcmEsIHNuYXBzaG90dGVkIGF0IGVyYSBlbmQuAFUBIFRoaXMgaXMgdGhlIHNpbWlsYXIgdG8gW2BFcmFzVmFsaWRhdG9yUmV3YXJkYF0gYnV0IGZvciB0aGUgc2VsZi1zdGFrZSBpbmNlbnRpdmUgcG90LgB8RXJhc1N1bVZhbGlkYXRvckluY2VudGl2ZVdlaWdodAEBBAU4VQFAAAAAAAAAAAAAAAAAAAAAAAzYIFN1bSBvZiBhbGwgdmFsaWRhdG9ycycgaW5jZW50aXZlIHdlaWdodHMgZm9yIHRoZSBlcmEuANQgRGlyZWN0bHkgbGlua2VkIHRvIFtgRXJhc1ZhbGlkYXRvckluY2VudGl2ZVdlaWdodGBdLgBwRXJhc1ZhbGlkYXRvckluY2VudGl2ZVdlaWdodAABCAUFhQxVAQQACLwgSW5kaXZpZHVhbCB2YWxpZGF0b3IgaW5jZW50aXZlIHdlaWdodCBwZXIgZXJhLi0BIEVhY2ggdmFsaWRhdG9yJ3Mgc2hhcmUgb2YgdGhlIGluY2VudGl2ZSBwb3QgPSBgdGhlaXJfd2VpZ2h0IC8gc3VtX3dlaWdodGAuAFhBcmVOb21pbmF0b3JzU2xhc2hhYmxlAQBZAQQBHKQgV2hldGhlciBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUgb3Igbm90LgBtASAtIFdoZW4gc2V0IHRvIGB0cnVlYCAoZGVmYXVsdCksIG5vbWluYXRvcnMgYXJlIHNsYXNoZWQgYWxvbmcgd2l0aCB2YWxpZGF0b3JzIGFuZCBtdXN0IHdhaXQpASAgIHRoZSBmdWxsIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSBiZWZvcmUgd2l0aGRyYXdpbmcgdW5ib25kZWQgZnVuZHMuFQEgLSBXaGVuIHNldCB0byBgZmFsc2VgLCBub21pbmF0b3JzIGFyZSBub3Qgc2xhc2hlZCwgYW5kIGNhbiB1bmJvbmQgaW4NASAgIFtgQ29uZmlnOjpOb21pbmF0b3JGYXN0VW5ib25kRHVyYXRpb25gXSBlcmFzIGluc3RlYWQgb2YgdGhlIGZ1bGxZASAgIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSAoc2VlIFtgU3Rha2luZ0ludGVyZmFjZTo6bm9taW5hdG9yX2JvbmRpbmdfZHVyYXRpb25gXSkuAFxFcmFzTm9taW5hdG9yc1NsYXNoYWJsZQABBAU4WQEEABzYIFBlci1lcmEgc25hcHNob3Qgb2Ygd2hldGhlciBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUuAGUBIFRoaXMgaXMgY29waWVkIGZyb20gW2BBcmVOb21pbmF0b3JzU2xhc2hhYmxlYF0gYXQgdGhlIHN0YXJ0IG9mIGVhY2ggZXJhLiBXaGVuIHByb2Nlc3NpbmdRASBvZmZlbmNlcywgd2UgdXNlIHRoZSB2YWx1ZSBmcm9tIHRoaXMgc3RvcmFnZSBmb3IgdGhlIG9mZmVuY2UgZXJhIHRvIGVuc3VyZSB0aGF0IHRoZTkBIHNsYXNoaW5nIHJ1bGVzIGF0IHRoZSB0aW1lIG9mIHRoZSBvZmZlbmNlIGFyZSBhcHBsaWVkLCBub3QgdGhlIGN1cnJlbnQgcnVsZXMuAGUBIElmIGFuIGVudHJ5IGRvZXMgbm90IGV4aXN0IGZvciBhbiBlcmEsIG5vbWluYXRvcnMgYXJlIGFzc3VtZWQgdG8gYmUgc2xhc2hhYmxlIChkZWZhdWx0KS4AGExlZGdlcgABBAIEBQ8EABBFASBNYXAgZnJvbSBhbGwgKHVubG9ja2VkKSAiY29udHJvbGxlciIgYWNjb3VudHMgdG8gdGhlIGluZm8gcmVnYXJkaW5nIHRoZSBzdGFraW5nLgB1ASBOb3RlOiBBbGwgdGhlIHJlYWRzIGFuZCBtdXRhdGlvbnMgdG8gdGhpcyBzdG9yYWdlICpNVVNUKiBiZSBkb25lIHRocm91Z2ggdGhlIG1ldGhvZHMgZXhwb3NlZOggYnkgW2BTdGFraW5nTGVkZ2VyYF0gdG8gZW5zdXJlIGRhdGEgYW5kIGxvY2sgY29uc2lzdGVuY3kuABRQYXllZQABBAUEvQYEAAzkIFdoZXJlIHRoZSByZXdhcmQgcGF5bWVudCBzaG91bGQgYmUgbWFkZS4gS2V5ZWQgYnkgc3Rhc2guANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAChWYWxpZGF0b3JzAQEEBQTBBggAAAxFASBUaGUgbWFwIGZyb20gKHdhbm5hYmUpIHZhbGlkYXRvciBzdGFzaCBrZXkgdG8gdGhlIHByZWZlcmVuY2VzIG9mIHRoYXQgdmFsaWRhdG9yLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgBQQ291bnRlckZvclZhbGlkYXRvcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcABITWF4VmFsaWRhdG9yc0NvdW50AAA4BAAMMQEgVGhlIG1heGltdW0gdmFsaWRhdG9yIGNvdW50IGJlZm9yZSB3ZSBzdG9wIGFsbG93aW5nIG5ldyB2YWxpZGF0b3JzIHRvIGpvaW4uANAgV2hlbiB0aGlzIHZhbHVlIGlzIG5vdCBzZXQsIG5vIGxpbWl0cyBhcmUgZW5mb3JjZWQuAEBMYXN0VmFsaWRhdG9yRXJhAAEEBQQ4BAAwZQEgVHJhY2tzIHRoZSBsYXN0IGVyYSBpbiB3aGljaCBhbiBhY2NvdW50IHdhcyBhY3RpdmUgYXMgYSB2YWxpZGF0b3IgKGluY2x1ZGVkIGluIHRoZSBlcmEnc1AgZXhwb3N1cmUvc25hcHNob3QpLgBZASBUaGlzIGlzIHVzZWQgdG8gZW5mb3JjZSB0aGF0IGFjY291bnRzIHdobyB3ZXJlIHJlY2VudGx5IHZhbGlkYXRvcnMgbXVzdCB3YWl0IHRoZSBmdWxsYQEgW2BDb25maWc6OkJvbmRpbmdEdXJhdGlvbmBdIGJlZm9yZSB0aGVpciBmdW5kcyBjYW4gYmUgd2l0aGRyYXduLCBldmVuIGlmIHRoZXkgc3dpdGNoIHRvvCBub21pbmF0b3Igcm9sZS4gVGhpcyBwcmV2ZW50cyB2YWxpZGF0b3JzIGZyb206rCAxLiBDb21taXR0aW5nIGEgc2xhc2hhYmxlIG9mZmVuY2UgaW4gZXJhIE58IDIuIFN3aXRjaGluZyB0byBub21pbmF0b3Igcm9sZWUBIDMuIFVzaW5nIHRoZSBzaG9ydGVyIG5vbWluYXRvciB1bmJvbmRpbmcgZHVyYXRpb24gdG8gd2l0aGRyYXcgZnVuZHMgYmVmb3JlIGJlaW5nIHNsYXNoZWQAWQEgVXBkYXRlZCB3aGVuIGVyYSBzbmFwc2hvdHMgYXJlIGNyZWF0ZWQgKGluIGBFcmFzU3Rha2Vyc1BhZ2VkYC9gRXJhc1N0YWtlcnNPdmVydmlld2ApLvggQ2xlYW5lZCB1cCB3aGVuIHRoZSBzdGFzaCBpcyBraWxsZWQgKGZ1bGx5IHdpdGhkcmF3bi9yZWFwZWQpLgAoTm9taW5hdG9ycwABBAUECQ8EAEx1ASBUaGUgbWFwIGZyb20gbm9taW5hdG9yIHN0YXNoIGtleSB0byB0aGVpciBub21pbmF0aW9uIHByZWZlcmVuY2VzLCBuYW1lbHkgdGhlIHZhbGlkYXRvcnMgdGhhdFggdGhleSB3aXNoIHRvIHN1cHBvcnQuADkBIE5vdGUgdGhhdCB0aGUga2V5cyBvZiB0aGlzIHN0b3JhZ2UgbWFwIG1pZ2h0IGJlY29tZSBub24tZGVjb2RhYmxlIGluIGNhc2UgdGhlLQEgYWNjb3VudCdzIFtgTm9taW5hdGlvbnNRdW90YTo6TWF4Tm9taW5hdGlvbnNgXSBjb25maWd1cmF0aW9uIGlzIGRlY3JlYXNlZC6QIEluIHRoaXMgcmFyZSBjYXNlLCB0aGVzZSBub21pbmF0b3JzZQEgYXJlIHN0aWxsIGV4aXN0ZW50IGluIHN0b3JhZ2UsIHRoZWlyIGtleSBpcyBjb3JyZWN0IGFuZCByZXRyaWV2YWJsZSAoaS5lLiBgY29udGFpbnNfa2V5YHEBIGluZGljYXRlcyB0aGF0IHRoZXkgZXhpc3QpLCBidXQgdGhlaXIgdmFsdWUgY2Fubm90IGJlIGRlY29kZWQuIFRoZXJlZm9yZSwgdGhlIG5vbi1kZWNvZGFibGVtASBub21pbmF0b3JzIHdpbGwgZWZmZWN0aXZlbHkgbm90LWV4aXN0LCB1bnRpbCB0aGV5IHJlLXN1Ym1pdCB0aGVpciBwcmVmZXJlbmNlcyBzdWNoIHRoYXQgaXQBASBpcyB3aXRoaW4gdGhlIGJvdW5kcyBvZiB0aGUgbmV3bHkgc2V0IGBDb25maWc6Ok1heE5vbWluYXRpb25zYC4AYQEgVGhpcyBpbXBsaWVzIHRoYXQgYDo6aXRlcl9rZXlzKCkuY291bnQoKWAgYW5kIGA6Oml0ZXIoKS5jb3VudCgpYCBtaWdodCByZXR1cm4gZGlmZmVyZW50bQEgdmFsdWVzIGZvciB0aGlzIG1hcC4gTW9yZW92ZXIsIHRoZSBtYWluIGA6OmNvdW50KClgIGlzIGFsaWduZWQgd2l0aCB0aGUgZm9ybWVyLCBuYW1lbHkgdGhlbCBudW1iZXIgb2Yga2V5cyB0aGF0IGV4aXN0LgBtASBMYXN0bHksIGlmIGFueSBvZiB0aGUgbm9taW5hdG9ycyBiZWNvbWUgbm9uLWRlY29kYWJsZSwgdGhleSBjYW4gYmUgY2hpbGxlZCBpbW1lZGlhdGVseSB2aWG4IFtgQ2FsbDo6Y2hpbGxfb3RoZXJgXSBkaXNwYXRjaGFibGUgYnkgYW55b25lLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgBQQ291bnRlckZvck5vbWluYXRvcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAA4VmlydHVhbFN0YWtlcnMAAQQFBBAEABjIIFN0YWtlcnMgd2hvc2UgZnVuZHMgYXJlIG1hbmFnZWQgYnkgb3RoZXIgcGFsbGV0cy4AdQEgVGhpcyBwYWxsZXQgZG9lcyBub3QgYXBwbHkgYW55IGxvY2tzIG9uIHRoZW0sIHRoZXJlZm9yZSB0aGV5IGFyZSBvbmx5IHZpcnR1YWxseSBib25kZWQuIFRoZXltASBhcmUgZXhwZWN0ZWQgdG8gYmUga2V5bGVzcyBhY2NvdW50cyBhbmQgaGVuY2Ugc2hvdWxkIG5vdCBiZSBhbGxvd2VkIHRvIG11dGF0ZSB0aGVpciBsZWRnZXJxASBkaXJlY3RseSB2aWEgdGhpcyBwYWxsZXQuIEluc3RlYWQsIHRoZXNlIGFjY291bnRzIGFyZSBtYW5hZ2VkIGJ5IG90aGVyIHBhbGxldHMgYW5kIGFjY2Vzc2VkKQEgdmlhIGxvdyBsZXZlbCBhcGlzLiBXZSBrZWVwIHRyYWNrIG9mIHRoZW0gdG8gZG8gbWluaW1hbCBpbnRlZ3JpdHkgY2hlY2tzLgBgQ291bnRlckZvclZpcnR1YWxTdGFrZXJzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAASE1heE5vbWluYXRvcnNDb3VudAAAOAQADDEBIFRoZSBtYXhpbXVtIG5vbWluYXRvciBjb3VudCBiZWZvcmUgd2Ugc3RvcCBhbGxvd2luZyBuZXcgdmFsaWRhdG9ycyB0byBqb2luLgDQIFdoZW4gdGhpcyB2YWx1ZSBpcyBub3Qgc2V0LCBubyBsaW1pdHMgYXJlIGVuZm9yY2VkLgAoQ3VycmVudEVyYQAAOAQAEHwgVGhlIGN1cnJlbnQgcGxhbm5lZCBlcmEgaW5kZXguAGUBIFRoaXMgaXMgdGhlIGxhdGVzdCBwbGFubmVkIGVyYSwgZGVwZW5kaW5nIG9uIGhvdyB0aGUgU2Vzc2lvbiBwYWxsZXQgcXVldWVzIHRoZSB2YWxpZGF0b3KAIHNldCwgaXQgbWlnaHQgYmUgYWN0aXZlIG9yIG5vdC4AJEFjdGl2ZUVyYQAADQ8EABDYIFRoZSBhY3RpdmUgZXJhIGluZm9ybWF0aW9uLCBpdCBob2xkcyBpbmRleCBhbmQgc3RhcnQuAFkBIFRoZSBhY3RpdmUgZXJhIGlzIHRoZSBlcmEgYmVpbmcgY3VycmVudGx5IHJld2FyZGVkLiBWYWxpZGF0b3Igc2V0IG9mIHRoaXMgZXJhIG11c3QgYmWYIGVxdWFsIHRvIHdoYXQgaXMgUkMncyBzZXNzaW9uIHBhbGxldC4AKEJvbmRlZEVyYXMBABEPBAAQJQEgQSBtYXBwaW5nIGZyb20gc3RpbGwtYm9uZGVkIGVyYXMgdG8gdGhlIGZpcnN0IHNlc3Npb24gaW5kZXggb2YgdGhhdCBlcmEuAMggTXVzdCBjb250YWlucyBpbmZvcm1hdGlvbiBmb3IgZXJhcyBmb3IgdGhlIHJhbmdlOrwgYFthY3RpdmVfZXJhIC0gYm91bmRpbmdfZHVyYXRpb247IGFjdGl2ZV9lcmFdYABMRXJhc1N0YWtlcnNPdmVydmlldwABCAUFhQwVDwQAMLggU3VtbWFyeSBvZiB2YWxpZGF0b3IgZXhwb3N1cmUgYXQgYSBnaXZlbiBlcmEuAHEBIFRoaXMgY29udGFpbnMgdGhlIHRvdGFsIHN0YWtlIGluIHN1cHBvcnQgb2YgdGhlIHZhbGlkYXRvciBhbmQgdGhlaXIgb3duIHN0YWtlLiBJbiBhZGRpdGlvbix1ASBpdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGdldCB0aGUgbnVtYmVyIG9mIG5vbWluYXRvcnMgYmFja2luZyB0aGlzIHZhbGlkYXRvciBhbmQgdGhlIG51bWJlciBvZmkBIGV4cG9zdXJlIHBhZ2VzIHRoZXkgYXJlIGRpdmlkZWQgaW50by4gVGhlIHBhZ2UgY291bnQgaXMgdXNlZnVsIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mrCBwYWdlcyBvZiByZXdhcmRzIHRoYXQgbmVlZHMgdG8gYmUgY2xhaW1lZC4AYQEgVGhpcyBpcyBrZXllZCBmaXJzdCBieSB0aGUgZXJhIGluZGV4IHRvIGFsbG93IGJ1bGsgZGVsZXRpb24gYW5kIHRoZW4gdGhlIHN0YXNoIGFjY291bnQuoCBTaG91bGQgb25seSBiZSBhY2Nlc3NlZCB0aHJvdWdoIGBFcmFzYC4AzCBJcyBpdCByZW1vdmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLkEBIElmIHN0YWtlcnMgaGFzbid0IGJlZW4gc2V0IG9yIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiBlbXB0eSBvdmVydmlldyBpcyByZXR1cm5lZC4AQEVyYXNTdGFrZXJzUGFnZWQAAQwFBQXxDhkPBAAYwCBQYWdpbmF0ZWQgZXhwb3N1cmUgb2YgYSB2YWxpZGF0b3IgYXQgZ2l2ZW4gZXJhLgBxASBUaGlzIGlzIGtleWVkIGZpcnN0IGJ5IHRoZSBlcmEgaW5kZXggdG8gYWxsb3cgYnVsayBkZWxldGlvbiwgdGhlbiBzdGFzaCBhY2NvdW50IGFuZCBmaW5hbGx5yCB0aGUgcGFnZS4gU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgdGhyb3VnaCBgRXJhc2AuANQgVGhpcyBpcyBjbGVhcmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLgA4Q2xhaW1lZFJld2FyZHMBAQgFBYUMKQ8EABjcIEhpc3Rvcnkgb2YgY2xhaW1lZCBwYWdlZCByZXdhcmRzIGJ5IGVyYSBhbmQgdmFsaWRhdG9yLgBpASBUaGlzIGlzIGtleWVkIGJ5IGVyYSBhbmQgdmFsaWRhdG9yIHN0YXNoIHdoaWNoIG1hcHMgdG8gdGhlIHNldCBvZiBwYWdlIGluZGV4ZXMgd2hpY2ggaGF2ZTggYmVlbiBjbGFpbWVkLgDMIEl0IGlzIHJlbW92ZWQgYWZ0ZXIgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuAEhFcmFzVmFsaWRhdG9yUHJlZnMBAQgFBYUMwQYIAAAUBQEgRXhwb3N1cmUgb2YgdmFsaWRhdG9yIGF0IGVyYSB3aXRoIHRoZSBwcmVmZXJlbmNlcyBvZiB2YWxpZGF0b3JzLgBhASBUaGlzIGlzIGtleWVkIGZpcnN0IGJ5IHRoZSBlcmEgaW5kZXggdG8gYWxsb3cgYnVsayBkZWxldGlvbiBhbmQgdGhlbiB0aGUgc3Rhc2ggYWNjb3VudC4AzCBJcyBpdCByZW1vdmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLgBMRXJhc1ZhbGlkYXRvclJld2FyZAABBAU4VQEEABQ1ASBUaGUgdG90YWwgc3Rha2VyIHJld2FyZCBidWRnZXQgZm9yIGVhY2ggZXJhIHdpdGhpbiBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0uAGQgU2V0IGF0IGVyYSBmaW5hbGl6YXRpb246WQEgLSBpbiBub24tbWludGluZyBtb2RlIHRoaXMgaXMgdGhlIHNuYXBzaG90IG9mIHRoZSBlcmEgcG90IGJhbGFuY2UgYmVmb3JlIGFueSBwYXlvdXRzLjEBIC0gaW4gbGVnYWN5IG1vZGUgaXQgY29tZXMgZnJvbSBgRXJhUGF5b3V0YCwgd2l0aCByZXdhcmRzIG1pbnRlZCBvbiB0aGUgZmx5LgBARXJhc1Jld2FyZFBvaW50cwEBBAU4LQ8UAAAAAAAI0CBSZXdhcmRzIGZvciB0aGUgbGFzdCBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4lASBJZiByZXdhcmQgaGFzbid0IGJlZW4gc2V0IG9yIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiAwIHJld2FyZCBpcyByZXR1cm5lZC4AOEVyYXNUb3RhbFN0YWtlAQEEBThVAUAAAAAAAAAAAAAAAAAAAAAACBEBIFRoZSB0b3RhbCBhbW91bnQgc3Rha2VkIGZvciB0aGUgbGFzdCBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4dASBJZiB0b3RhbCBoYXNuJ3QgYmVlbiBzZXQgb3IgaGFzIGJlZW4gcmVtb3ZlZCB0aGVuIDAgc3Rha2UgaXMgcmV0dXJuZWQuACBGb3JjZUVyYQEAhQkEAARUIE1vZGUgb2YgZXJhIGZvcmNpbmcuAEBNYXhTdGFrZWRSZXdhcmRzAADNBgQAEBkBIE1heGltdW0gc3Rha2VkIHJld2FyZHMsIGkuZS4gdGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIGVyYSBpbmZsYXRpb24gdGhhdGwgaXMgdXNlZCBmb3Igc3Rha2UgcmV3YXJkcy4A9CBPbmx5IHVzZWQgaW4gbGVnYWN5IG1pbnRpbmcgbW9kZSAoYERpc2FibGVNaW50aW5nID0gZmFsc2VgKS4ATFNsYXNoUmV3YXJkRnJhY3Rpb24BAB0FEAAAAAAM+CBUaGUgcGVyY2VudGFnZSBvZiB0aGUgc2xhc2ggdGhhdCBpcyBkaXN0cmlidXRlZCB0byByZXBvcnRlcnMuAOQgVGhlIHJlc3Qgb2YgdGhlIHNsYXNoZWQgdmFsdWUgaXMgaGFuZGxlZCBieSB0aGUgYFNsYXNoYC4ATENhbmNlbGVkU2xhc2hQYXlvdXQBAFUBQAAAAAAAAAAAAAAAAAAAAAAIFQEgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBnaXZlbiB0byByZXBvcnRlcnMgb2YgYSBzbGFzaCBldmVudCB3aGljaCB3YXPsIGNhbmNlbGVkIGJ5IGV4dHJhb3JkaW5hcnkgY2lyY3Vtc3RhbmNlcyAoZS5nLiBnb3Zlcm5hbmNlKS4AME9mZmVuY2VRdWV1ZQABCAUFhQw5DwQAKE0BIFN0b3JlcyByZXBvcnRlZCBvZmZlbmNlcyBpbiBhIHF1ZXVlIHVudGlsIHRoZXkgYXJlIHByb2Nlc3NlZCBpbiBzdWJzZXF1ZW50IGJsb2Nrcy4AZQEgRWFjaCBvZmZlbmNlIGlzIHJlY29yZGVkIHVuZGVyIHRoZSBjb3JyZXNwb25kaW5nIGVyYSBpbmRleCBhbmQgdGhlIG9mZmVuZGluZyB2YWxpZGF0b3Inc3EBIGFjY291bnQuIElmIGFuIG9mZmVuY2Ugc3BhbnMgbXVsdGlwbGUgcGFnZXMsIG9ubHkgb25lIHBhZ2UgaXMgcHJvY2Vzc2VkIGF0IGEgdGltZS4gT2ZmZW5jZXM9ASBhcmUgaGFuZGxlZCBzZXF1ZW50aWFsbHksIHdpdGggdGhlaXIgYXNzb2NpYXRlZCBzbGFzaGVzIGNvbXB1dGVkIGFuZCBzdG9yZWQgaW5RASBgVW5hcHBsaWVkU2xhc2hlc2AuIFRoZXNlIHNsYXNoZXMgYXJlIHRoZW4gYXBwbGllZCBpbiBhIGZ1dHVyZSBlcmEgYXMgZGV0ZXJtaW5lZCBieVggYFNsYXNoRGVmZXJEdXJhdGlvbmAuAFEBIEFueSBvZmZlbmNlcyB0aWVkIHRvIGFuIGVyYSBvbGRlciB0aGFuIGBCb25kaW5nRHVyYXRpb25gIGFyZSBhdXRvbWF0aWNhbGx5IGRyb3BwZWQu0CBQcm9jZXNzaW5nIGFsd2F5cyBwcmlvcml0aXplcyB0aGUgb2xkZXN0IGVyYSBmaXJzdC4AQE9mZmVuY2VRdWV1ZUVyYXMAAD0PBAAwdQEgVHJhY2tzIHRoZSBlcmFzIHRoYXQgY29udGFpbiBvZmZlbmNlcyBpbiBgT2ZmZW5jZVF1ZXVlYCwgc29ydGVkIGZyb20gKiplYXJsaWVzdCB0byBsYXRlc3QqKi4ATQEgLSBUaGlzIGVuc3VyZXMgZWZmaWNpZW50IHJldHJpZXZhbCBvZiB0aGUgb2xkZXN0IG9mZmVuY2Ugd2l0aG91dCBpdGVyYXRpbmcgdGhyb3VnaEAgYE9mZmVuY2VRdWV1ZWAuZQEgLSBXaGVuIGEgbmV3IG9mZmVuY2UgaXMgYWRkZWQgdG8gYE9mZmVuY2VRdWV1ZWAsIGl0cyBlcmEgaXMgKippbnNlcnRlZCBpbiBzb3J0ZWQgb3JkZXIqKmAgaWYgbm90IGFscmVhZHkgcHJlc2VudC5BASAtIFdoZW4gYWxsIG9mZmVuY2VzIGZvciBhbiBlcmEgYXJlIHByb2Nlc3NlZCwgaXQgaXMgKipyZW1vdmVkKiogZnJvbSB0aGlzIGxpc3QuFQEgLSBUaGUgbWF4aW11bSBsZW5ndGggb2YgdGhpcyB2ZWN0b3IgaXMgYm91bmRlZCBieSBgQm9uZGluZ0R1cmF0aW9uICt0ICAgT0ZGRU5DRV9RVUVVRV9FUkFTX0JPVU5EYC4AcQEgVGhpcyBlbGltaW5hdGVzIHRoZSBuZWVkIGZvciBleHBlbnNpdmUgaXRlcmF0aW9uIGFuZCBzb3J0aW5nIHdoZW4gZmV0Y2hpbmcgdGhlIG5leHQgb2ZmZW5jZTAgdG8gcHJvY2Vzcy4ARFByb2Nlc3NpbmdPZmZlbmNlAABBDwQAMB0BIFRyYWNrcyB0aGUgY3VycmVudGx5IHByb2Nlc3NlZCBvZmZlbmNlIHJlY29yZCBmcm9tIHRoZSBgT2ZmZW5jZVF1ZXVlYC4ATQEgLSBXaGVuIHByb2Nlc3Npbmcgb2ZmZW5jZXMsIGFuIG9mZmVuY2UgcmVjb3JkIGlzICoqcG9wcGVkKiogZnJvbSB0aGUgb2xkZXN0IGVyYSBpboggICBgT2ZmZW5jZVF1ZXVlYCBhbmQgc3RvcmVkIGhlcmUudQEgLSBUaGUgZnVuY3Rpb24gYHByb2Nlc3Nfb2ZmZW5jZWAgcmVhZHMgZnJvbSB0aGlzIHN0b3JhZ2UsIHByb2Nlc3Npbmcgb25lIHBhZ2Ugb2YgZXhwb3N1cmUgYXQoICAgYSB0aW1lLmUBIC0gQWZ0ZXIgcHJvY2Vzc2luZyBhIHBhZ2UsIHRoZSBgZXhwb3N1cmVfcGFnZWAgY291bnQgaXMgKipkZWNyZW1lbnRlZCoqIHVudGlsIGl0IHJlYWNoZXMgICAgemVyby4lASAtIE9uY2UgZnVsbHkgcHJvY2Vzc2VkLCB0aGUgb2ZmZW5jZSByZWNvcmQgaXMgcmVtb3ZlZCBmcm9tIHRoaXMgc3RvcmFnZS4AZQEgVGhpcyBlbnN1cmVzIHRoYXQgb2ZmZW5jZXMgYXJlIHByb2Nlc3NlZCBpbmNyZW1lbnRhbGx5LCBwcmV2ZW50aW5nIGV4Y2Vzc2l2ZSBjb21wdXRhdGlvbvwgaW4gYSBzaW5nbGUgYmxvY2sgd2hpbGUgbWFpbnRhaW5pbmcgY29ycmVjdCBzbGFzaGluZyBiZWhhdmlvci4AQFVuYXBwbGllZFNsYXNoZXMAAQgFBUUPSQ8EAATEIEFsbCB1bmFwcGxpZWQgc2xhc2hlcyB0aGF0IGFyZSBxdWV1ZWQgZm9yIGxhdGVyLgBAQ2FuY2VsbGVkU2xhc2hlcwEBBAU4UQ8EABRRASBDYW5jZWxsZWQgc2xhc2hlcyBieSBlcmEgYW5kIHZhbGlkYXRvciB3aXRoIG1heGltdW0gc2xhc2ggZnJhY3Rpb24gdG8gYmUgY2FuY2VsbGVkLgBFASBXaGVuIHNsYXNoZXMgYXJlIGNhbmNlbGxlZCBieSBnb3Zlcm5hbmNlLCB0aGlzIHN0b3JlcyB0aGUgZXJhIGFuZCB0aGUgdmFsaWRhdG9yc1UBIHdob3NlIHNsYXNoZXMgc2hvdWxkIGJlIGNhbmNlbGxlZCwgYWxvbmcgd2l0aCB0aGUgbWF4aW11bSBzbGFzaCBmcmFjdGlvbiB0aGF0IHNob3VsZIQgYmUgY2FuY2VsbGVkIGZvciBlYWNoIHZhbGlkYXRvci4ATFZhbGlkYXRvclNsYXNoSW5FcmEAAQgFBYUMVQ8EAAhFASBBbGwgc2xhc2hpbmcgZXZlbnRzIG9uIHZhbGlkYXRvcnMsIG1hcHBlZCBieSBlcmEgdG8gdGhlIGhpZ2hlc3Qgc2xhc2ggcHJvcG9ydGlvbnAgYW5kIHNsYXNoIHZhbHVlIG9mIHRoZSBlcmEuADhDaGlsbFRocmVzaG9sZAAAzQYEAAxRASBUaGUgdGhyZXNob2xkIGZvciB3aGVuIHVzZXJzIGNhbiBzdGFydCBjYWxsaW5nIGBjaGlsbF9vdGhlcmAgZm9yIG90aGVyIHZhbGlkYXRvcnMgL1kBIG5vbWluYXRvcnMuIFRoZSB0aHJlc2hvbGQgaXMgY29tcGFyZWQgdG8gdGhlIGFjdHVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycyAvIG5vbWluYXRvcnMpASAoYENvdW50Rm9yKmApIGluIHRoZSBzeXN0ZW0gY29tcGFyZWQgdG8gdGhlIGNvbmZpZ3VyZWQgbWF4IChgTWF4KkNvdW50YCkuAExWb3RlclNuYXBzaG90U3RhdHVzAQBZDwQCEIAgVm90ZXIgc25hcHNob3QgcHJvZ3Jlc3Mgc3RhdHVzLgBpASBJZiB0aGUgc3RhdHVzIGlzIGBPbmdvaW5nYCwgaXQga2VlcHMgYSBjdXJzb3Igb2YgdGhlIGxhc3Qgdm90ZXIgcmV0cmlldmVkIHRvIHByb2NlZWQgd2hlboQgY3JlYXRpbmcgdGhlIG5leHQgc25hcHNob3QgcGFnZS4AQE5leHRFbGVjdGlvblBhZ2UAADgEABgBASBLZWVwcyB0cmFjayBvZiBhbiBvbmdvaW5nIG11bHRpLXBhZ2UgZWxlY3Rpb24gc29sdXRpb24gcmVxdWVzdC4AZQEgSWYgYFNvbWUoXylgYCwgaXQgaXMgdGhlIG5leHQgcGFnZSB0aGF0IHdlIGludGVuZCB0byBlbGVjdC4gSWYgYE5vbmVgLCB3ZSBhcmUgbm90IGluIHRoZUggZWxlY3Rpb24gcHJvY2Vzcy4AOQEgVGhpcyBpcyBvbmx5IHNldCBpbiBtdWx0aS1ibG9jayBlbGVjdGlvbnMuIFNob3VsZCBhbHdheXMgYmUgYE5vbmVgIG90aGVyd2lzZS4AQEVsZWN0YWJsZVN0YXNoZXMBAF0PBAAEUQEgQSBib3VuZGVkIGxpc3Qgb2YgdGhlICJlbGVjdGFibGUiIHN0YXNoZXMgdGhhdCByZXN1bHRlZCBmcm9tIGEgc3VjY2Vzc2Z1bCBlbGVjdGlvbi4APEVyYVBydW5pbmdTdGF0ZQABBAU4YQ8EAARFASBUcmFja3MgdGhlIGN1cnJlbnQgc3RlcCBvZiBlcmEgcHJ1bmluZyBwcm9jZXNzIGZvciBlYWNoIGVyYSBiZWluZyBsYXppbHkgcHJ1bmVkLgABuQYAAYEJADAwSGlzdG9yeURlcHRoOBBUAAAANIwgTnVtYmVyIG9mIGVyYXMgdG8ga2VlcCBpbiBoaXN0b3J5LgDoIEZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBrZXB0IGZvciBlcmFzIGluIGBbY3VycmVudF9lcmEgLSkBIEhpc3RvcnlEZXB0aCwgY3VycmVudF9lcmFdYDogYEVyYXNWYWxpZGF0b3JQcmVmc2AsIGBFcmFzVmFsaWRhdG9yUmV3YXJkYCzgIGBFcmFzUmV3YXJkUG9pbnRzYCwgYEVyYXNUb3RhbFN0YWtlYCwgYENsYWltZWRSZXdhcmRzYCysIGBFcmFzU3Rha2Vyc1BhZ2VkYCwgYEVyYXNTdGFrZXJzT3ZlcnZpZXdgLgDkIE11c3QgYmUgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgZXJhcyBkZWxheWVkIGJ5IHNlc3Npb24u+CBJLmUuIGFjdGl2ZSBlcmEgbXVzdCBhbHdheXMgYmUgaW4gaGlzdG9yeS4gSS5lLiBgYWN0aXZlX2VyYSA+xCBjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGhgIG11c3QgYmUgZ3VhcmFudGVlZC4AEQEgSWYgbWlncmF0aW5nIGFuIGV4aXN0aW5nIHBhbGxldCBmcm9tIHN0b3JhZ2UgdmFsdWUgdG8gY29uZmlnIHZhbHVlLOwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIHNhbWUgdmFsdWUgb3IgZ3JlYXRlciBhcyBpbiBzdG9yYWdlLgA4U2Vzc2lvbnNQZXJFcmE4EAYAAAAELQEgTnVtYmVyIG9mIHNlc3Npb25zIHBlciBlcmEsIGFzIHBlciB0aGUgcHJlZmVyZW5jZXMgb2YgdGhlICoqcmVsYXkgY2hhaW4qKi4ARFBsYW5uaW5nRXJhT2Zmc2V0OBAGAAAAOFEBIE51bWJlciBvZiBzZXNzaW9ucyBiZWZvcmUgdGhlIGVuZCBvZiBhbiBlcmEgd2hlbiB0aGUgZWxlY3Rpb24gZm9yIHRoZSBuZXh0IGVyYSB3aWxsHCBzdGFydC4AXQEgLSBUaGlzIGRldGVybWluZXMgaG93IG1hbnkgc2Vzc2lvbnMgKipiZWZvcmUqKiB0aGUgbGFzdCBzZXNzaW9uIG9mIHRoZSBlcmEgdGhlIHN0YWtpbmeEICAgZWxlY3Rpb24gcHJvY2VzcyBzaG91bGQgYmVnaW4uTQEgLSBUaGUgdmFsdWUgaXMgYm91bmRlZCBiZXR3ZWVuICoqMSoqIChlbGVjdGlvbiBzdGFydHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGFzdF0BICAgc2Vzc2lvbikgYW5kIGBTZXNzaW9uc1BlckVyYWAgKGVsZWN0aW9uIHN0YXJ0cyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCBzZXNzaW9uPCAgIG9mIHRoZSBlcmEpLgA0ICMjIyBFeGFtcGxlOkkBIC0gSWYgYFNlc3Npb25zUGVyRXJhID0gNmAgYW5kIGBQbGFubmluZ0VyYU9mZnNldCA9IDFgLCB0aGUgZWxlY3Rpb24gc3RhcnRzIGF0IHRoZZAgICBiZWdpbm5pbmcgb2Ygc2Vzc2lvbiBgNiAtIDEgPSA1YC5dASAtIElmIGBQbGFubmluZ0VyYU9mZnNldCA9IDZgLCB0aGUgZWxlY3Rpb24gc3RhcnRzIGF0IHRoZSBiZWdpbm5pbmcgb2Ygc2Vzc2lvbiBgNiAtIDYgPeggICAwYCwgbWVhbmluZyBpdCBzdGFydHMgYXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSBlcmEuADxCb25kaW5nRHVyYXRpb244EBwAAAAU5CBOdW1iZXIgb2YgZXJhcyB0aGF0IHN0YWtlZCBmdW5kcyBtdXN0IHJlbWFpbiBib25kZWQgZm9yLgBNASBUaGlzIGlzIHRoZSBib25kaW5nIGR1cmF0aW9uIGZvciB2YWxpZGF0b3JzLiBOb21pbmF0b3JzIG1heSBoYXZlIGEgc2hvcnRlciBib25kaW5nAQEgZHVyYXRpb24gd2hlbiBbYEFyZU5vbWluYXRvcnNTbGFzaGFibGVgXSBpcyBzZXQgdG8gYGZhbHNlYCAoc2VlzCBbYFN0YWtpbmdJbnRlcmZhY2U6Om5vbWluYXRvcl9ib25kaW5nX2R1cmF0aW9uYF0pLgBsTm9taW5hdG9yRmFzdFVuYm9uZER1cmF0aW9uOBAcAAAAIC0BIE51bWJlciBvZiBlcmFzIG5vbWluYXRvcnMgbXVzdCB3YWl0IHRvIHVuYm9uZCB3aGVuIHRoZXkgYXJlIG5vdCBzbGFzaGFibGUuAEUBIFRoaXMgZHVyYXRpb24gaXMgdXNlZCBmb3Igbm9taW5hdG9ycyB3aGVuIFtgQXJlTm9taW5hdG9yc1NsYXNoYWJsZWBdIGlzIGBmYWxzZWAuXQEgV2hlbiBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUsIHRoZXkgdXNlIHRoZSBmdWxsIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSB0byBlbnN1cmXQIHNsYXNoZXMgY2FuIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSB1bmJvbmRpbmcgcGVyaW9kLgA9ASBTZXR0aW5nIHRoaXMgdG8gYSBsb3dlciB2YWx1ZSAoZS5nLiwgMSBlcmEpIGFsbG93cyBmb3IgZmFzdGVyIHdpdGhkcmF3YWxzIHdoZW60IG5vbWluYXRvcnMgYXJlIG5vdCBzdWJqZWN0IHRvIHNsYXNoaW5nIHJpc2suAEhTbGFzaERlZmVyRHVyYXRpb244EBsAAAAQAQEgTnVtYmVyIG9mIGVyYXMgdGhhdCBzbGFzaGVzIGFyZSBkZWZlcnJlZCBieSwgYWZ0ZXIgY29tcHV0YXRpb24uAA0BIFRoaXMgc2hvdWxkIGJlIGxlc3MgdGhhbiB0aGUgYm9uZGluZyBkdXJhdGlvbi4gU2V0IHRvIDAgaWYgc2xhc2hlcxUBIHNob3VsZCBiZSBhcHBsaWVkIGltbWVkaWF0ZWx5LCB3aXRob3V0IG9wcG9ydHVuaXR5IGZvciBpbnRlcnZlbnRpb24uADhEaXNhYmxlTWludGluZ1kBBAEoKQEgV2hlbiBgdHJ1ZWAsIHN0YWtpbmcgZG9lcyBub3QgbWludC4gSXQgZXhwZWN0cyBhbiBleHRlcm5hbCBzb3VyY2UgdG8gZnVuZBkBIHRoZSBnZW5lcmFsIHJld2FyZCBwb3QuIEF0IGVyYSBib3VuZGFyeSwgcmV3YXJkcyBhcmUgc25hcHNob3R0ZWQgZnJvbZAgdGhlIHBvdC4gYEVyYVBheW91dGAgaXMgbm90IGNhbGxlZC4AMQEgV2hlbiBgZmFsc2VgLCBzdGFraW5nIHVzZXMgdGhlIGxlZ2FjeSBwYXRoOiBgRXJhUGF5b3V0YCBjb21wdXRlcyBpbmZsYXRpb24ssCB0b2tlbnMgYXJlIG1pbnRlZCBvbi10aGUtZmx5IGR1cmluZyBwYXlvdXQuACEBICoqSXJyZXZlcnNpYmxlKio6IG9uY2Ugc2V0IHRvIGB0cnVlYCwgbXVzdCBuZXZlciBiZSBzd2l0Y2hlZCBiYWNrLiBFcmFzMQEgY3JlYXRlZCBpbiBub24tbWludGluZyBtb2RlIGhhdmUgZnVuZGVkIHJld2FyZCBwb3RzIOKAlCBzd2l0Y2hpbmcgdG8gbGVnYWN5yCB3b3VsZCBvcnBoYW4gdGhvc2UgcG90cyBhbmQgY2F1c2UgZG91YmxlLW1pbnRpbmcuAExNYXhFeHBvc3VyZVBhZ2VTaXplOBAAAgAALLAgVGhlIG1heGltdW0gc2l6ZSBvZiBlYWNoIGBUOjpFeHBvc3VyZVBhZ2VgLgApASBBbiBgRXhwb3N1cmVQYWdlYCBpcyB3ZWFrbHkgYm91bmRlZCB0byBhIG1heGltdW0gb2YgYE1heEV4cG9zdXJlUGFnZVNpemVgMCBub21pbmF0b3JzLgAhASBGb3Igb2xkZXIgbm9uLXBhZ2VkIGV4cG9zdXJlLCBhIHJld2FyZCBwYXlvdXQgd2FzIHJlc3RyaWN0ZWQgdG8gdGhlIHRvcCEBIGBNYXhFeHBvc3VyZVBhZ2VTaXplYCBub21pbmF0b3JzLiBUaGlzIGlzIHRvIGxpbWl0IHRoZSBpL28gY29zdCBmb3IgdGhlSCBub21pbmF0b3IgcGF5b3V0LgA9ASBOb3RlOiBgTWF4RXhwb3N1cmVQYWdlU2l6ZWAgaXMgdXNlZCB0byBib3VuZCBgQ2xhaW1lZFJld2FyZHNgIGFuZCBpcyB1bnNhZmUgdG+sIHJlZHVjZSB3aXRob3V0IGhhbmRsaW5nIGl0IGluIGEgbWlncmF0aW9uLgA8TWF4VmFsaWRhdG9yU2V0OBDoAwAAEBUBIFRoZSBhYnNvbHV0ZSBtYXhpbXVtIG9mIHdpbm5lciB2YWxpZGF0b3JzIHRoaXMgcGFsbGV0IHNob3VsZCByZXR1cm4uAEEBIEFzIHRoaXMgcGFsbGV0IHN1cHBvcnRzIG11bHRpLWJsb2NrIGVsZWN0aW9uLCB0aGUgc2V0IG9mIHdpbm5lciB2YWxpZGF0b3JzICpwZXKMIGVsZWN0aW9uKiBpcyBib3VuZGVkIGJ5IHRoaXMgdHlwZS4ASE1heFVubG9ja2luZ0NodW5rczgQIAAAACgFASBUaGUgbWF4aW11bSBudW1iZXIgb2YgYHVubG9ja2luZ2AgY2h1bmtzIGEgW2BTdGFraW5nTGVkZ2VyYF0gY2FuCQEgaGF2ZS4gRWZmZWN0aXZlbHkgZGV0ZXJtaW5lcyBob3cgbWFueSB1bmlxdWUgZXJhcyBhIHN0YWtlciBtYXkgYmU4IHVuYm9uZGluZyBpbi4A+CBOb3RlOiBgTWF4VW5sb2NraW5nQ2h1bmtzYCBpcyB1c2VkIGFzIHRoZSB1cHBlciBib3VuZCBmb3IgdGhlAQEgYEJvdW5kZWRWZWNgIGl0ZW0gYFN0YWtpbmdMZWRnZXIudW5sb2NraW5nYC4gU2V0dGluZyB0aGlzIHZhbHVlBQEgbG93ZXIgdGhhbiB0aGUgZXhpc3RpbmcgdmFsdWUgY2FuIGxlYWQgdG8gaW5jb25zaXN0ZW5jaWVzIGluIHRoZQkBIGBTdGFraW5nTGVkZ2VyYCBhbmQgd2lsbCBuZWVkIHRvIGJlIGhhbmRsZWQgcHJvcGVybHkgaW4gYSBydW50aW1lBQEgbWlncmF0aW9uLiBUaGUgdGVzdCBgcmVkdWNpbmdfbWF4X3VubG9ja2luZ19jaHVua3NfYWJydXB0YCBzaG93czQgdGhpcyBlZmZlY3QuADhNYXhFcmFEdXJhdGlvbiggAIq5BwAAAAAouCBNYXhpbXVtIGFsbG93ZWQgZXJhIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcy4AUQEgVGhpcyBwcm92aWRlcyBhIGRlZmVuc2l2ZSB1cHBlciBib3VuZCB0byBjYXAgdGhlIGVmZmVjdGl2ZSBlcmEgZHVyYXRpb24sIHByZXZlbnRpbmdhASBleGNlc3NpdmVseSBsb25nIGVyYXMgZnJvbSBjYXVzaW5nIHJ1bmF3YXkgaW5mbGF0aW9uIChlLmcuLCBkdWUgdG8gYnVncykuIElmIHRoZSBhY3R1YWwVASBlcmEgZHVyYXRpb24gZXhjZWVkcyB0aGlzIHZhbHVlLCBpdCB3aWxsIGJlIGNsYW1wZWQgdG8gdGhpcyBtYXhpbXVtLgABASBFeGFtcGxlOiBGb3IgYW4gaWRlYWwgZXJhIGR1cmF0aW9uIG9mIDI0IGhvdXJzICg4Niw0MDAsMDAwIG1zKSywIHRoaXMgY2FuIGJlIHNldCB0byA2MDQsODAwLDAwMCBtcyAoNyBkYXlzKS4A9CBPbmx5IHVzZWQgaW4gbGVnYWN5IG1pbnRpbmcgbW9kZSAoYERpc2FibGVNaW50aW5nID0gZmFsc2VgKS4APE1heFBydW5pbmdJdGVtczgQZAAAABQVASBNYXhpbXVtIG51bWJlciBvZiBzdG9yYWdlIGl0ZW1zIHRoYXQgY2FuIGJlIHBydW5lZCBpbiBhIHNpbmdsZSBjYWxsLgBZASBUaGlzIGNvbnRyb2xzIGhvdyBtYW55IHN0b3JhZ2UgaXRlbXMgY2FuIGJlIGRlbGV0ZWQgaW4gZWFjaCBjYWxsIHRvIGBwcnVuZV9lcmFfc3RlcGAuTQEgVGhpcyBzaG91bGQgYmUgc2V0IHRvIGEgY29uc2VydmF0aXZlIHZhbHVlIChlLmcuLCAxMDAtNTAwIGl0ZW1zKSB0byBlbnN1cmUgcHJ1bmluZ1UBIGRvZXNuJ3QgY29uc3VtZSB0b28gbXVjaCBibG9jayBzcGFjZS4gVGhlIGFjdHVhbCB3ZWlnaHQgaXMgZGV0ZXJtaW5lZCBieSBiZW5jaG1hcmtzLgABZQ8ABDxDdXJyZW5jeUJhbGFuY2VVAQhRASBKdXN0IHRoZSBgQ3VycmVuY3k6OkJhbGFuY2VgIHR5cGU7IHdlIGhhdmUgdGhpcyBpdGVtIHRvIGFsbG93IHVzIHRvIGNvbnN0cmFpbiBpdCB0bzQgYEZyb208dTY0PmAuDF8+SQf3FqyJtjR9Fezs7cpyM4a8T1TMqYl2XoRLnwxoLHBvdF9hY2NvdW50BAxwb3RpDwQEvCBSZXNvbHZlIHRoZSBhY2NvdW50IElEIGZvciBhIGdpdmVuIHJld2FyZCBwb3QuAF8+SQf3FqyJtjR9Fezs7covGyMER8lg8/hD+M+xpwbKLHBvdF9iYWxhbmNlBAxwb3RpD1UBBLAgQ3VycmVudCBiYWxhbmNlIGhlbGQgaW4gYSBnaXZlbiByZXdhcmQgcG90LgBfPkkH9xasibY0fRXs7O3KVuubFKa89l5XnV0Aswk7bFRlcmFfcmV3YXJkX2FsbG9jYXRpb24EDGVyYThxDwwlASBQZXItZXJhIHJld2FyZCBhbGxvY2F0aW9uIChzdGFrZXIgcmV3YXJkcyArIHZhbGlkYXRvciBpbmNlbnRpdmUgYnVkZ2V0KS4A+CBCb3RoIGZpZWxkcyBhcmUgemVybyBmb3IgZXJhcyBjcmVhdGVkIGluIGxlZ2FjeSBtaW50aW5nIG1vZGUuAFkAAERNZW1iZXJzU3Vic2NyaWJlcgFETWVtYmVyc1N1YnNjcmliZXIUJFJpbmdSb290cwABCAICdQ95DwQAELggUmVjZW50IHJpbmcgcm9vdHMgcmVjZWl2ZWQgZnJvbSB0aGUgbm90aWZpZXIuBQEgTWFwcyAoaWRlbnRpZmllciwgcmluZ19pbmRleCkgdG8gYSBzbGlkaW5nIHdpbmRvdyBvZiByaW5nIHJvb3RzLikBIFByb29mcyBidWlsdCBhZ2FpbnN0IGFueSByb290IGluIHRoZSB3aW5kb3cgYXJlIGFjY2VwdGVkLiBUaGUgb2xkZXN0IHJvb3TwIGlzIGV2aWN0ZWQgd2hlbiB0aGUgd2luZG93IHJlYWNoZXMgYE1heFJlY2VudFJvb3RzUGVyUmluZ2AuAFBSaW5nQ29sbGVjdGlvblN0YXRlcwEBBAIIhQ8oAAAAAAAAAAAAAARBASBTdGF0ZSBvZiBlYWNoIHJpbmcgY29sbGVjdGlvbiBpbmNsdWRpbmcgcmluZ3MgY291bnQgYW5kIG1pc3NpbmcgcmluZ3MgdHJhY2tpbmcuAFxSaW5nQ29sbGVjdGlvbkV4cG9uZW50cwABBAIICQcEABjkIFJpbmcgZXhwb25lbnQgcmVjb3JkZWQgcGVyIGNvbGxlY3Rpb24gYXQgaW5pdGlhbGl6YXRpb24uAEUBIFRoZSBzdWJzY3JpYmVyIG5lZWRzIHRoZSBleHBvbmVudCB0byBkZXJpdmUgdGhlIGNyeXB0bydzIGBDb25maWdgIHdoZW4gdmVyaWZ5aW5nSQEgcHJvb2ZzLCBzaW5jZSByaW5nIHJvb3RzIG9uIHRoZWlyIG93biBkbyBub3QgY2FycnkgdGhhdCBpbmZvcm1hdGlvbi4gVGhlIGVudHJ5IGlzRQEgd3JpdHRlbiBieSBgaW5pdGlhbGl6ZV9yaW5nX3Jvb3RzYCBhbmQgaXMgcmVhZCBkdXJpbmcgcHJvb2YgdmVyaWZpY2F0aW9uIHZpYSB0aGVkIGBNZW1iZXJzaGlwUHJvdmVyYCBpbXBsLgAwU3Vic2NyaXB0aW9uAQCZDwQABHQgQ3VycmVudCBzdWJzY3JpcHRpb24gc3RhdHVzLgA8UHJvY2Vzc2luZ1N0YXRlAQCdD2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEHQEgU3RhdGUgZm9yIHRyYWNraW5nIHVwZGF0ZXMgcHJvY2Vzc2luZyB0aW1lc3RhbXBzIGFuZCBzZXF1ZW5jZSBudW1iZXJzLgABBQcAAZEJADBEUmluZ1Jvb3RzTm90aWZpZXKhDxgBAQB5F0UIpCBFbmRwb2ludCBjb25maWd1cmF0aW9uIGZvciB0aGUgbm90aWZpZXIusCBJbmNsdWRlcyB0aGUgWENNIGxvY2F0aW9uIGFuZCBwYWxsZXQgaW5kZXguAChTZWxmUGFyYUlkOBDcBQAABCEBIFRoaXMgY2hhaW4ncyBwYXJhY2hhaW4gSUQsIGluY2x1ZGVkIGluIHJlcGxheSByZXF1ZXN0cyB0byB0aGUgbm90aWZpZXIuAHBNYXhNaXNzaW5nUm9vdHNQZXJDb2xsZWN0aW9uOBD/AAAABNQgTWF4aW11bSBudW1iZXIgb2YgbWlzc2luZyByaW5nIHJvb3RzIHBlciBjb2xsZWN0aW9uLgBwTWF4RGVsZXRlZFJpbmdzUGVyQ29sbGVjdGlvbjgQZAAAAAj8IE1heGltdW0gbnVtYmVyIG9mIGRlbGV0ZWQgcmluZyBpbmRpY2VzIHRyYWNrZWQgcGVyIGNvbGxlY3Rpb24uzCBQcmV2ZW50cyBmYWxzZWx5IG1hcmtpbmcgZGVsZXRlZCByaW5ncyBhcyBtaXNzaW5nLgBkTWF4UmluZ1Jvb3RzUGVyQ29sbGVjdGlvbjgQZAAAAAi0IE1heGltdW0gbnVtYmVyIG9mIHJpbmcgcm9vdHMgcGVyIGNvbGxlY3Rpb24u7CBVc2VkIHRvIGJvdW5kIGBjbGVhcmAgb3BlcmF0aW9ucyBkdXJpbmcgcmUtaW5pdGlhbGl6YXRpb24uADhNYXhDb2xsZWN0aW9uczgQCgAAAATgIE1heGltdW0gbnVtYmVyIG9mIHJpbmcgY29sbGVjdGlvbnMgdGhhdCBjYW4gYmUgdHJhY2tlZC4AVFJlcGxheUNvb2xkb3duU2Vjb25kcyggPAAAAAAAAAAIVQEgQ29vbGRvd24gcGVyaW9kIChpbiBzZWNvbmRzKSBhZnRlciByZWNlaXZpbmcgYSBiYXRjaCBiZWZvcmUgc2VuZGluZyByZXBsYXkgcmVxdWVzdHMu2CBBbGxvd3MgdGltZSBmb3IgbXVsdGktcGFydCBiYXRjaGVzIHRvIGFycml2ZSB2aWEgWENNLgBITWF4VXBkYXRlc1BlckJhdGNoOBAKAAAAFDUBIE1heGltdW0gbnVtYmVyIG9mIHJpbmcgcm9vdCB1cGRhdGVzIHRoYXQgY2FuIGJlIHByb2Nlc3NlZCBpbiBhIHNpbmdsZSBiYXRjaC4AKQEgKipJbXBvcnRhbnQ6KiogVGhpcyB2YWx1ZSBNVVNUIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbm90aWZpZXInc+wgYE1heFVwZGF0ZXNQZXJCYXRjaGAuIElmIHRoZSBub3RpZmllciBzZW5kcyBiYXRjaGVzIGxhcmdlch0BIHRoYW4gdGhpcyBsaW1pdCwgZGVjb2Rpbmcgd2lsbCBmYWlsIHNpbGVudGx5IGFuZCB1cGRhdGVzIHdpbGwgYmUgbG9zdC4AWFJlcGxheVdhcm5pbmdUaHJlc2hvbGQ4EAUAAAAEZQEgTnVtYmVyIG9mIHJlcGxheSByZXF1ZXN0IGF0dGVtcHRzIGZvciBhIGdpdmVuIHJpbmcgaW5kZXggYmVmb3JlIGVtaXR0aW5nIHdhcm5pbmcgZXZlbnRzLgBYUmVwbGF5QWJhbmRvblRocmVzaG9sZDgQCgAAAAgFASBUaHJlc2hvbGQgZm9yIGFiYW5kb25pbmcgcmVwbGF5IGF0dGVtcHRzIGZvciBhIGdpdmVuIHJpbmcgaW5kZXguGQEgQWZ0ZXIgdGhpcyBtYW55IGF0dGVtcHRzLCB0aGUgbWlzc2luZyBpbmRleCBpcyByZW1vdmVkIGZyb20gdHJhY2tpbmcuAFRNYXhSZWNlbnRSb290c1BlclJpbmc4EAMAAAAQJQEgTWF4aW11bSBudW1iZXIgb2YgcmVjZW50IHJpbmcgcm9vdHMgc3RvcmVkIHBlciAoY29sbGVjdGlvbiwgcmluZ19pbmRleCkuLQEgV2hlbiBhIHJpbmcgcm9vdCBpcyB1cGRhdGVkLCB0aGUgbmV3IHJvb3QgaXMgcHVzaGVkIGludG8gYSBzbGlkaW5nIHdpbmRvdzslASBwcm9vZnMgYnVpbHQgYWdhaW5zdCBhbnkgcm9vdCBpbiB0aGUgd2luZG93IHN0aWxsIHZlcmlmeS4gT2xkZXN0IHJvb3QgaXOEIGV2aWN0ZWQgd2hlbiB0aGUgd2luZG93IGlzIGZ1bGwuAFhPZmZjaGFpbldvcmtlckludGVydmFsOBABAAAABMwgQmxvY2sgaW50ZXJ2YWwgYmV0d2VlbiBvZmZjaGFpbiB3b3JrZXIgZXhlY3V0aW9ucy4AAaUPAAAAYQAANEFsaWFzQWNjb3VudHMBNEFsaWFzQWNjb3VudHMMOEFsaWFzVG9BY2NvdW50AAEIAgKpDwQEAAjAIE1hcHMgKGNvbGxlY3Rpb24sIGNvbnRleHR1YWxfYWxpYXMpIHRvIGFjY291bnQuUQEgVXNlcyBgRG91YmxlTWFwYCBiZWNhdXNlIHRoZSBzYW1lIGFsaWFzIHZhbHVlIGNvdWxkIGV4aXN0IGluIGRpZmZlcmVudCBjb2xsZWN0aW9ucy4AOEFjY291bnRUb0FsaWFzAAEEAgTtAwQABCUBIE1hcHMgYWNjb3VudCB0byBmdWxsIGFsaWFzIGluZm8gKGNvbGxlY3Rpb24gKyByZXZpc2VkIGNvbnRleHR1YWwgYWxpYXMpLgAgQWxpYXNGZWUAAFUBBAAQ7CBQR0FTIGZlZSBidXJuZWQgb24gZWFjaCBhbGlhcyByZWdpc3RyYXRpb24gLyBhY2NvdW50IHN3YXAuAA0BIFNldCBieSBbYENvbmZpZzo6RmVlTWFuYWdlck9yaWdpbmBdIHZpYSBbYFBhbGxldDo6c2V0X2FsaWFzX2ZlZWBdLhUBIFdoaWxlIHVuc2V0LCBhbGlhcyByZWdpc3RyYXRpb25zIGZhaWwgd2l0aCBbYEVycm9yOjpBbGlhc0ZlZVVuc2V0YF0uAAEpBwABlQkAGExQcm9vZlZhbGlkaXR5V2luZG93KCAsAQAAAAAAAAzoIFRpbWUgdG9sZXJhbmNlIChpbiBzZWNvbmRzKSBmb3IgcHJvb2YtYmFzZWQgdHJhbnNhY3Rpb25zLkkBIFByb29mcyBhcmUgdmFsaWQgZnJvbSBgcHJvb2ZfdmFsaWRfYXRgIHRvIGBwcm9vZl92YWxpZF9hdCArIFByb29mVmFsaWRpdHlXaW5kb3dgLmwgTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4ASENsZWFudXBHcmFjZVBlcmlvZCggEA4AAAAAAAAQKQEgR3JhY2UgcGVyaW9kIChpbiBzZWNvbmRzKSBiZWZvcmUgYSBzdGFsZSBhbGlhcyBtYXBwaW5nIGNhbiBiZSBjbGVhbmVkIHVwLhkBIEFmdGVyIGEgcmluZyByZXZpc2lvbiBjaGFuZ2VzLCBhbGlhcyBob2xkZXJzIGhhdmUgdGhpcyBsb25nIHRvIHVwZGF0ZS0BIHZpYSBgcmVwcm92ZV9hbGlhc19hY2NvdW50YCBiZWZvcmUgYW55b25lIGNhbiBjYWxsIGBjbGVhbl91cF9zdGFsZV9hbGlhc2AubCBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBYUGVvcGxlTGl0ZVJpbmdFeHBvbmVudAkHBAkEfCBSaW5nIGV4cG9uZW50IGZvciBQZW9wbGUgTGl0ZS4ASFBlb3BsZVJpbmdFeHBvbmVudAkHBAkEaCBSaW5nIGV4cG9uZW50IGZvciBQZW9wbGUuAGhQZW9wbGVDb2xsZWN0aW9uSWRlbnRpZmllcgiAcG9wOnBvbGthZG90Lm5ldHdvcmsvcGVvcGxlICAgICAAAHhQZW9wbGVMaXRlQ29sbGVjdGlvbklkZW50aWZpZXIIgHBvcDpwb2xrYWRvdC5uZXR3b3JrL3Blb3BsZS1saXRlAAABrQ8AAABiAAAQUGdhcwEQUGdhcwREQ2xhaW1lZEdhc0FsaWFzZXMAAQgGArEPEAQAEAkBIEFsaWFzZXMgdGhhdCBoYXZlIGJlZW4gdXNlZCB0byBjbGFpbSBQR0FTLCBrZXllZCBieSAoZGF5LCBhbGlhcykuQQEgYERheWAgdXNlcyBiaWctZW5kaWFuIGVuY29kaW5nIHdpdGggYElkZW50aXR5YCBoYXNoaW5nIHNvIGl0ZXJhdGlvbiB5aWVsZHMgZGF5czkBIGluIGFzY2VuZGluZyBvcmRlciwgYWxsb3dpbmcgdGhlIG9mZmNoYWluIHdvcmtlciB0byBmaW5kIHRoZSBvbGRlc3Qgc3RhbGUgZGF5SCB3aXRob3V0IHNjYW5uaW5nLgABMQcAAZkJABQsUGdhc0Fzc2V0SWQ4EACUNXcEgCBUaGUgYXNzZXQgSUQgb2YgdGhlIFBHQVMgdG9rZW4uADxQZ2FzQ2xhaW1BbW91bnRVAUAAdDukCwAAAAAAAAAAAAAABJQgVGhlIGFtb3VudCBvZiBQR0FTIG1pbnRlZCBwZXIgY2xhaW0uAGxNYXhDbGFpbXNQZXJQZXJpb2RQZXJQZXJzb244EGQAAAAEKQEgTWF4aW11bSBudW1iZXIgb2YgUEdBUyBjbGFpbXMgYSBmdWxsIHBlcnNvbiBtYXkgcGVyZm9ybSBwZXIgcGVyaW9kIChkYXkpLgB8TWF4Q2xhaW1zUGVyUGVyaW9kUGVyTGl0ZVBlcnNvbjgQKAAAABApASBNYXhpbXVtIG51bWJlciBvZiBQR0FTIGNsYWltcyBhIGxpdGUgcGVyc29uIG1heSBwZXJmb3JtIHBlciBwZXJpb2QgKGRheSkuAGEBIFR5cGljYWxseSBsb3dlciB0aGFuIFtgTWF4Q2xhaW1zUGVyUGVyaW9kUGVyUGVyc29uYF0oU2VsZjo6TWF4Q2xhaW1zUGVyUGVyaW9kUGVyUGVyc29uKS0BIHNpbmNlIGxpdGUgcGVyc29uaG9vZCBvZmZlcnMgd2Vha2VyIHN5YmlsIHJlc2lzdGFuY2UgdGhhbiBmdWxsIHBlcnNvbmhvb2QuAIBNYXhQZ2FzQ2xhaW1SZWNvcmRDbGVhbnVwUGVyQ2FsbDgQFAAAAAQ5ASBNYXhpbXVtIG51bWJlciBvZiBQR0FTIGNsYWltIHJlY29yZHMgdGhhdCBjYW4gYmUgY2xlYW5lZCB1cCBpbiBhIHNpbmdsZSBjYWxsLgABtQ8AAABjAAAYUmV2aXZlARhSZXZpdmU4MFByaXN0aW5lQ29kZQABBAY8GAQADMwgQSBtYXBwaW5nIGZyb20gYSBjb250cmFjdCdzIGNvZGUgaGFzaCB0byBpdHMgY29kZS4hASBUaGUgY29kZSdzIHNpemUgaXMgYm91bmRlZCBieSBbYGNyYXRlOjpsaW1pdHM6OkJMT0JfQllURVNgXSBmb3IgUFZNIGFuZPggW2ByZXZtOjpwcmltaXRpdmVzOjplaXAxNzA6Ok1BWF9DT0RFX1NJWkVgXSBmb3IgRVZNIGJ5dGVjb2RlLgAoQ29kZUluZm9PZgABBAY8uQ8EAATgIEEgbWFwcGluZyBmcm9tIGEgY29udHJhY3QncyBjb2RlIGhhc2ggdG8gaXRzIGNvZGUgaW5mby4ANEFjY291bnRJbmZvT2YAAQQGOQfBDwQABPwgVGhlIGRhdGEgYXNzb2NpYXRlZCB0byBhIGNvbnRyYWN0IG9yIGV4dGVybmFsbHkgb3duZWQgYWNjb3VudC4APE5hdGl2ZURlcG9zaXRPZgEBCAYGzQ9VAUAAAAAAAAAAAAAAAAAAAAAAKB0BIE5hdGl2ZSBjdXJyZW5jeSBzdG9yYWdlIGRlcG9zaXQgY29udHJpYnV0ZWQgYnkgYSB1c2VyIGludG8gYSBjb250cmFjdC4AMQEgQm91bmRzIGhvdyBtdWNoIG5hdGl2ZSB2YWx1ZSB0aGUgdXNlciBjYW4gcmVjZWl2ZSBiYWNrIGZyb20gdGhhdCBjb250cmFjdCdzRCBzdG9yYWdlIGRlcG9zaXQuAKAgS2V5czogYChob2xkZXIsIGNvbnRyaWJ1dG9yKSAtPiBhbW91bnRgaQEgLSBgaG9sZGVyYDogYWNjb3VudCBvbiB3aGljaCB0aGUgZGVwb3NpdCBpcyBoZWxkIChhIGNvbnRyYWN0LCBvciB0aGUgcGFsbGV0J3Mgb3duIGFjY291bnR0ICAgZm9yIGNvZGUtdXBsb2FkIGRlcG9zaXRzKS51ASAtIGBjb250cmlidXRvcmA6IHVzZXIgdGhhdCBmdW5kZWQgdGhlIGRlcG9zaXQuIFJlY2VpdmVzIHRoZSBuYXRpdmUgcG9ydGlvbiBvbiByZWZ1bmQsIGNhcHBlZHAgICBhdCB0aGlzIGVudHJ5J3MgYGFtb3VudGAuADxJbW11dGFibGVEYXRhT2YAAQQGOQfRDwQABNAgVGhlIGltbXV0YWJsZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFjY291bnQuADREZWxldGlvblF1ZXVlAAEEBTjVDwQAFLggVGVybWluYXRlZCBjb250cmFjdHMgdGhhdCBhd2FpdCBsYXp5IGNsZWFudXAuAEUBIEVhY2ggZW50cnkgcGFpcnMgYSBjaGlsZCB0cmllIElEIHdpdGggdGhlIGNvbnRyYWN0IGFjY291bnQgc28gdGhhdCBgb25faWRsZWAgY2FuWQEgZHJhaW4gYm90aCB0aGUgY2hpbGQgdHJpZSBhbmQgYW55IFtgTmF0aXZlRGVwb3NpdE9mYF0gZW50cmllcyB0aGF0IG5hbWVkIHRoZSBjb250cmFjdEUBIGFzIGBob2xkZXJgLiBCb3RoIGNhbiBiZSBhcmJpdHJhcmlseSBsYXJnZSwgc28gY2xlYW51cCBydW5zIGxhemlseSBpbiBgb25faWRsZWAuAFBEZWxldGlvblF1ZXVlQ291bnRlcgEA2Q8gAAAAAAAAAAAITQEgQSBwYWlyIG9mIG1vbm90b25pYyBjb3VudGVycyB1c2VkIHRvIHRyYWNrIHRoZSBsYXRlc3QgY29udHJhY3QgbWFya2VkIGZvciBkZWxldGlvbqggYW5kIHRoZSBsYXRlc3QgZGVsZXRlZCBjb250cmFjdCBpbiBxdWV1ZS4APE9yaWdpbmFsQWNjb3VudAABBAY5BwQEABjYIE1hcCBhIEV0aGVyZXVtIGFkZHJlc3MgdG8gaXRzIG9yaWdpbmFsIGBBY2NvdW50SWQzMmAuAEUBIFdoZW4gZGVyaXZpbmcgYSBgSDE2MGAgZnJvbSBhbiBgQWNjb3VudElkMzJgIHdlIHVzZSBhIGhhc2ggZnVuY3Rpb24uIEluIG9yZGVyIHRvMQEgcmVjb25zdHJ1Y3QgdGhlIG9yaWdpbmFsIGFjY291bnQgd2UgbmVlZCB0byBzdG9yZSB0aGUgcmV2ZXJzZSBtYXBwaW5nIGhlcmUuGQEgUmVnaXN0ZXIgeW91ciBgQWNjb3VudElkMzJgIHVzaW5nIFtgUGFsbGV0OjptYXBfYWNjb3VudGBdIGluIG9yZGVyIHRvZCB1c2UgaXQgd2l0aCB0aGlzIHBhbGxldC4ANEV0aGVyZXVtQmxvY2sBAN0PEQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQdASBUaGUgY3VycmVudCBFdGhlcmV1bSBibG9jayB0aGF0IGlzIHN0b3JlZCBpbiB0aGUgYG9uX2ZpbmFsaXplYCBtZXRob2QuABwgIyBOb3RlACkBIFRoaXMgY291bGQgYmUgZnVydGhlciBvcHRpbWl6ZWQgaW50byB0aGUgZnV0dXJlIHRvIHN0b3JlIG9ubHkgdGhlIG1pbmltdW0dASBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gcmVjb25zdHJ1Y3QgdGhlIEV0aGVyZXVtIGJsb2NrIGF0IHRoZSBSUEMgbGV2ZWwuAD0BIFNpbmNlIHRoZSBibG9jayBpcyBjb252ZW5pZW50IHRvIGhhdmUgYXJvdW5kLCBhbmQgdGhlIGV4dHJhIGRldGFpbHMgYXJlIGNhcHBlZD0BIGJ5IGEgZmV3IGhhc2hlcyBhbmQgdGhlIHZlY3RvciBvZiB0cmFuc2FjdGlvbiBoYXNoZXMsIHdlIHN0b3JlIHRoZSBibG9jayBoZXJlLgAkQmxvY2tIYXNoAQEEBjg8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJQgTWFwcGluZyBmb3IgYmxvY2sgbnVtYmVyIGFuZCBoYXNoZXMuAHEBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyBzdG9yZWQgaXMgY2FwcGVkIGJ5IHRoZSBibG9jayBoYXNoIGNvdW50IGBCTE9DS19IQVNIX0NPVU5UYC4APFJlY2VpcHRJbmZvRGF0YQEASRAEABj0IFRoZSBkZXRhaWxzIG5lZWRlZCB0byByZWNvbnN0cnVjdCB0aGUgcmVjZWlwdCBpbmZvIG9mZmNoYWluLgApASBUaGlzIGNvbnRhaW5zIHZhbHVhYmxlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBnYXMgdXNlZCBieSB0aGUgdHJhbnNhY3Rpb24uAB0BIE5PVEU6IFRoZSBpdGVtIGlzIHVuYm91bmQgYW5kIHNob3VsZCB0aGVyZWZvcmUgbmV2ZXIgYmUgcmVhZCBvbiBjaGFpbi7QIEl0IGNvdWxkIG90aGVyd2lzZSBpbmZsYXRlIHRoZSBQb1Ygc2l6ZSBvZiBhIGJsb2NrLgBERXRoQmxvY2tCdWlsZGVySVIBAFEQEQYAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABCl1OgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJAgSW5jcmVtZW50YWwgZXRoZXJldW0gYmxvY2sgYnVpbGRlci4AaEV0aEJsb2NrQnVpbGRlckZpcnN0VmFsdWVzAQBdEAQAEOQgVGhlIGZpcnN0IHRyYW5zYWN0aW9uIGFuZCByZWNlaXB0IG9mIHRoZSBldGhlcmV1bSBibG9jay4APQEgVGhlc2UgdmFsdWVzIGFyZSBtb3ZlZCBvdXQgb2YgdGhlIGBFdGhCbG9ja0J1aWxkZXJJUmAgdG8gYXZvaWQgc2VyaWFsaXppbmcgYW5kPQEgZGVzZXJpYWxpemluZyB0aGVtIG9uIGV2ZXJ5IHRyYW5zYWN0aW9uLiBJbnN0ZWFkLCB0aGV5IGFyZSBsb2FkZWQgd2hlbiBuZWVkZWQuADxEZWJ1Z1NldHRpbmdzT2YBAGEQEAAAAAAEMQEgRGVidWdnaW5nIHNldHRpbmdzIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgd2hlbiBEZWJ1Z0VuYWJsZWQgY29uZmlnIGlzIHRydWUuAAE1BwABnQkALDhEZXBvc2l0UGVyQnl0ZVUBQKCGAQAAAAAAAAAAAAAAAAAUEQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggYnl0ZSBvZiBzdG9yYWdlLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuADhEZXBvc2l0UGVySXRlbVUBQACUNXcAAAAAAAAAAAAAAAAUBQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggc3RvcmFnZSBpdGVtLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuAFxEZXBvc2l0UGVyQ2hpbGRUcmllSXRlbVUBQADC6wsAAAAAAAAAAAAAAAAkMQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggY2hpbGQgdHJpZSBzdG9yYWdlIGl0ZW0uADkBIFRob3NlIGFyZSB0aGUgaXRlbXMgY3JlYXRlZCBieSBhIGNvbnRyYWN0LiBJbiBTb2xpZGl0eSBlYWNoIHZhbHVlIGlzIGEgc2luZ2xlOQEgc3RvcmFnZSBpdGVtLiBUaGlzIGlzIHdoeSB3ZSBuZWVkIHRvIHNldCBhIGxvd2VyIHZhbHVlIGhlcmUgdGhhbiBmb3IgdGhlIG1haW7cIHRyaWUgaXRlbXMuIE90aGVyd2lzZSB0aGUgc3RvcmFnZSBkZXBvc2l0IGlzIHRvbyBoaWdoLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuAHBDb2RlSGFzaExvY2t1cERlcG9zaXRQZXJjZW50HQUQAKPhEQxFASBUaGUgcGVyY2VudGFnZSBvZiB0aGUgc3RvcmFnZSBkZXBvc2l0IHRoYXQgc2hvdWxkIGJlIGhlbGQgZm9yIHVzaW5nIGEgY29kZSBoYXNoLlEBIEluc3RhbnRpYXRpbmcgYSBjb250cmFjdCwgcHJvdGVjdHMgdGhlIGNvZGUgZnJvbSBiZWluZyByZW1vdmVkLiBJbiBvcmRlciB0byBwcmV2ZW50JQEgYWJ1c2UgdGhlc2UgYWN0aW9ucyBhcmUgcHJvdGVjdGVkIHdpdGggYSBwZXJjZW50YWdlIG9mIHRoZSBjb2RlIGRlcG9zaXQuAEBBbGxvd0VWTUJ5dGVjb2RlWQEEAQTQIEFsbG93IEVWTSBieXRlY29kZSB0byBiZSB1cGxvYWRlZCBhbmQgaW5zdGFudGlhdGVkLgAcQ2hhaW5JZCggQRsPGQAAAAAQAQEgVGhlIFtFSVAtMTU1XShodHRwczovL2VpcHMuZXRoZXJldW0ub3JnL0VJUFMvZWlwLTE1NSkgY2hhaW4gSUQuAAUBIFRoaXMgaXMgYSB1bmlxdWUgaWRlbnRpZmllciBhc3NpZ25lZCB0byBlYWNoIGJsb2NrY2hhaW4gbmV0d29yayxsIHByZXZlbnRpbmcgcmVwbGF5IGF0dGFja3MuAEBOYXRpdmVUb0V0aFJhdGlvOBAA4fUFBFEBIFRoZSByYXRpbyBiZXR3ZWVuIHRoZSBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBuYXRpdmUgdG9rZW4gYW5kIHRoZSBFVEggdG9rZW4uAFRNYXhFdGhFeHRyaW5zaWNXZWlnaHQNBUAAANpJO3F9DAAAAAAAAAAAME0BIFRoZSBmcmFjdGlvbiB0aGUgbWF4aW11bSBleHRyaW5zaWMgd2VpZ2h0IGBldGhfdHJhbnNhY3RgIGV4dHJpbnNpY3MgYXJlIGNhcHBlZCB0by4AUQEgVGhpcyBpcyBub3QgYSBzZWN1cml0eSBtZWFzdXJlIGJ1dCBhIHJlcXVpcmVtZW50IGR1ZSB0byBob3cgd2UgbWFwIGdhcyB0byBgKFdlaWdodCxdASBTdG9yYWdlRGVwb3NpdClgLiBUaGUgbWFwcGluZyBtaWdodCBkZXJpdmUgYSBgV2VpZ2h0YCB0aGF0IGlzIHRvbyBsYXJnZSB0byBmaXQgaW50byBhbvwgZXh0cmluc2ljLiBJbiB0aGlzIGNhc2Ugd2UgY2FwIGl0IHRvIHRoZSBsaW1pdCBzcGVjaWZpZWQgaGVyZS4AZQEgYGV0aF90cmFuc2FjdGAgdHJhbnNhY3Rpb25zIHRoYXQgdXNlIG1vcmUgd2VpZ2h0IHRoYW4gc3BlY2lmaWVkIHdpbGwgZmFpbCB3aXRoIGFuIG91dCBvZkkBIGdhcyBlcnJvciBkdXJpbmcgZXhlY3V0aW9uLiBMYXJnZXIgZnJhY3Rpb25zIHdpbGwgYWxsb3cgbW9yZSB0cmFuc2FjdGlvbnMgdG8gcnVuLk0BIFNtYWxsZXIgdmFsdWVzIHdhc3RlIGxlc3MgYmxvY2sgc3BhY2U6IENob29zZSBhcyBzbWFsbCBhcyBwb3NzaWJsZSBhbmQgYXMgbGFyZ2UgYXMsIG5lY2Vzc2FyeS4ARCAgRGVmYXVsdDogYDAuNWAuADBEZWJ1Z0VuYWJsZWRZAQQABC0BIEFsbG93cyBkZWJ1Zy1tb2RlIGNvbmZpZ3VyYXRpb24sIHN1Y2ggYXMgZW5hYmxpbmcgdW5saW1pdGVkIGNvbnRyYWN0IHNpemUuABxBdXRvTWFwWQEEARgxASBXaGVuIGVuYWJsZWQsIGFjY291bnRzIGFyZSBhdXRvbWF0aWNhbGx5IG1hcHBlZCBvbiBjcmVhdGlvbiBhbmQgdW5tYXBwZWQgb25FASBraWxsIHZpYSBbYEF1dG9NYXBwZXJgXS4gVGhpcyByZW1vdmVzIHRoZSBuZWVkIGZvciBleHBsaWNpdCBgbWFwX2FjY291bnRgIGNhbGxzLgA5ASBSZXF1aXJlcyBgZnJhbWVfc3lzdGVtOjpDb25maWc6Ok9uTmV3QWNjb3VudGAgYW5kIGBPbktpbGxlZEFjY291bnRgIHRvIGJlIHNldB0BIHRvIFtgQXV0b01hcHBlcmBdLiBXaGVuIGVuYWJsZWQsIHRoZSBgbWFwX2FjY291bnRgIGFuZCBgdW5tYXBfYWNjb3VudGBwIGRpc3BhdGNoYWJsZXMgYXJlIGRpc2FibGVkLgAgR2FzU2NhbGU4EKCGAQBEHQEgVGhpcyBkZXRlcm1pbmVzIHRoZSByZWxhdGl2ZSBzY2FsZSBvZiBvdXIgZ2FzIHByaWNlIGFuZCBnYXMgZXN0aW1hdGVzLgBVASBCeSBkZWZhdWx0LCB0aGUgZ2FzIHByaWNlIChpbiB3ZWkpIGlzIGBGZWVJbmZvOjpuZXh0X2ZlZV9tdWx0aXBsaWVyKClgIG11bHRpcGxpZWQgYnldASBgTmF0aXZlVG9FdGhSYXRpb2AuIGBHYXNTY2FsZWAgYWxsb3dzIHRvIHNjYWxlIHRoaXMgdmFsdWU6IHRoZSBhY3R1YWwgZ2FzIHByaWNlIGlzIHRoZbAgZGVmYXVsdCBnYXMgcHJpY2UgbXVsdGlwbGllZCBieSBgR2FzU2NhbGVgLgBZASBBcyBhIGNvbnNlcXVlbmNlLCBnYXMgY29zdCAoZ2FzIGVzdGltYXRlcyBhbmQgYWN0dWFsIGdhcyB1c2FnZSBkdXJpbmcgdHJhbnNhY3Rpb24pIGlzUQEgc2NhbGVkIGRvd24gYnkgdGhlIHNhbWUgZmFjdG9yLiBUaHVzLCB0aGUgdG90YWwgdHJhbnNhY3Rpb24gY29zdCBpcyBub3QgYWZmZWN0ZWQgYnltASBgR2FzU2NhbGVgIOKAk8KgYXBhcnQgZnJvbSByb3VuZGluZyBkaWZmZXJlbmNlczogdGhlIHRyYW5zYWN0aW9uIGNvc3QgaXMgYWx3YXlzIGEgbXVsdGlwbGVhASBvZiB0aGUgZ2FzIHByaWNlIGFuZCBpcyBkZXJpdmVkIGJ5IHJvdW5kZWQgdXAsIHNvIHRoYXQgd2l0aCBoaWdoZXIgYEdhc1NjYWxlc2AgdGhpcyBjYW4RASBsZWFkIHRvIGhpZ2hlciBnYXMgY29zdCBhcyB0aGUgcm91bmRpbmcgZGlmZmVyZW5jZSB3b3VsZCBiZSBsYXJnZXIuAGUBIFRoZSBtYWluIHB1cnBvc2Ugb2YgY2hhbmdpbmcgdGhlIGBHYXNTY2FsZWAgaXMgdG8gdHVuZSB0aGUgZ2FzIGNvc3Qgc28gdGhhdCBpdCBpcyBjbG9zZXJJASB0byBzdGFuZGFyZCBFVk0gZ2FzIGNvc3QgYW5kIGNvbnRyYWN0cyB3aWxsIG5vdCBydW4gb3V0IG9mIGdhcyB3aGVuIHRvb2xzIG9yIGNvZGV4IGFzc3VtZSBoYXJkIGNvZGVkIGdhcyBsaW1pdHMuAJggUmVxdWlyZW1lbnQ6IGBHYXNTY2FsZWAgbXVzdCBub3QgYmUgMAABZRAABCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLgBkAAAwRG90bnNHYXRld2F5ATBEb3Ruc0dhdGV3YXkUREFsaWFzUmVnaXN0cmF0aW9uAAEEAghpEAQABPQgVHJhY2tzIHdoaWNoIGFsaWFzZXMgaGF2ZSByZWdpc3RlcmVkIG5hbWVzIHZpYSB0aGlzIGdhdGV3YXkuADBBY2NvdW50QWxpYXMAAQQCBAgEAAwBASBSZXZlcnNlIGxvb2t1cCBmcm9tIGEgcmVnaXN0ZXJpbmcgYWNjb3VudCB0byB0aGUgYWxpYXMgaXQgdXNlZC4AIQEgUG9wdWxhdGVkIGFsb25nc2lkZSBbYEFsaWFzUmVnaXN0cmF0aW9uYF0gaW4gW2BQYWxsZXQ6OnJlZ2lzdGVyX25hbWVgXS4AUEF0dGVzdGF0aW9uQWxsb3dhbmNlAQEEAgQ4EAAAAAAEBQEgTnVtYmVyIG9mIHVzZXJuYW1lIHJlc2VydmF0aW9ucyBhbiBhdHRlc3RlciBpcyBhbGxvd2VkIHRvIGdyYW50LgA4TGl0ZUxhYmVsT3duZXIAAQQCTQcEBAAM/CBSZWNvcmRzIHdoaWNoIGFjY291bnQgb3ducyBlYWNoIHJlc2VydmVkIGxpdGUtcGVyc29uIGxhYmVsLCBzbyEBIFtgUGFsbGV0OjpyZWdpc3Rlcl9uYW1lYF0gY2FuIHZlcmlmeSB0aGF0IGEgYExpbms6OkxpdGVVc2VybmFtZWAgdGFyZ2V0XCBiZWxvbmdzIHRvIHRoZSBjYWxsZXIuAEREaXNwYXRjaGVyQWRkcmVzcwAAOQcEAAw1ASBBZGRyZXNzIG9mIHRoZSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYCBjb250cmFjdC4gTXVzdCBiZSBzZXQgKHZpYSBnZW5lc2lzIG9yHQEgW2BQYWxsZXQ6OnNldF9kaXNwYXRjaGVyX2FkZHJlc3NgXSkgYmVmb3JlIFtgUGFsbGV0OjpyZXNlcnZlX25hbWVgXSBvcpwgW2BQYWxsZXQ6OnJlZ2lzdGVyX25hbWVgXSBjYW4gc3VjY2VlZC4AAUkHAAGhCQAMVE1heENvbnRyYWN0Q2FsbFdlaWdodBEBKAcA6HZIFwIAgAAMMQEgTWF4aW11bSB3ZWlnaHQgYnVkZ2V0IGZvciBhIHNpbmdsZSBjb250cmFjdCBjYWxsLiBUaGUgZXh0cmluc2ljIHByZS1jaGFyZ2VzMQEgcGFsbGV0IG92ZXJoZWFkICsgdGhpcyBidWRnZXQgYW5kIHJlZnVuZHMgdW51c2VkIHdlaWdodCBiYXNlZCBvbiB0aGUgYWN0dWFsoCB3ZWlnaHQgcmVwb3J0ZWQgYnkgdGhlIGNvbnRyYWN0IGNhbGxlci4ASE1heFZhbGlkaXR5U2Vjb25kcygggPQDAAAAAAAInCBTaWduYXR1cmUgdmFsaWRpdHkgd2luZG93LCBpbiBzZWNvbmRzLiUBIEEgc2lnbmF0dXJlIGlzIGFjY2VwdGVkIG9ubHkgaWYgYG5vdyA8PSBzaWduZWRfYXQgKyBNYXhWYWxpZGl0eVNlY29uZHNgLgBQTWF4RnV0dXJlU2tld1NlY29uZHMoIB4AAAAAAAAACMggQ2xvY2stc2tldyB0b2xlcmFuY2UgZm9yIGBzaWduZWRfYXRgLCBpbiBzZWNvbmRzLi0BIEEgc2lnbmF0dXJlIGlzIGFjY2VwdGVkIG9ubHkgaWYgYHNpZ25lZF9hdCA8PSBub3cgKyBNYXhGdXR1cmVTa2V3U2Vjb25kc2AuAAFxEAAEUEF0dGVzdGF0aW9uU2lnbmF0dXJloQQEDQEgU2lnbmF0dXJlIHR5cGUgdXNlZCBieSBjYW5kaWRhdGVzIHRvIGNvbnNlbnQgdG8gbmFtZSByZXNlcnZhdGlvbnMuAJgAAERPcmlnaW5SZXN0cmljdGlvbgFET3JpZ2luUmVzdHJpY3Rpb24EGFVzYWdlcwABBAJhB3kQBAAEjCBUaGUgY3VycmVudCB1c2FnZSBmb3IgZWFjaCBlbnRpdHkuAAFdBwABpQkAAAF9EAAEQFJlc3RyaWN0ZWRFbnRpdHlhByRRASBUaGUgdHlwZSB0aGF0IHJlcHJlc2VudCB0aGUgZW50aXRpZXMgdHJhY2tlZCwgaXRzIGFsbG93YW5jZSBhbmQgdGhlIGNvbnZlcnNpb24gZnJvbZggb3JpZ2luIGlzIGJvdW5kZWQgaW4gW2BSZXN0cmljdGlvbmBdLgAdASBUaGlzIGlzIHRoZSBjYW5vbmljYWwgb3JpZ2luIGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdXNhZ2UgdHJhY2tpbmcujCBFYWNoIGVudGl0eSBpcyB0cmFja2VkIHNlcGFyYXRlbHkuAEkBIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gb3JpZ2luIGFzIGEgbXVsdGlwbGUgb3JpZ2luIGNhbiByZXByZXNlbnQgYSBzaW5nbGUgZW50aXR5LmEBIEZvciBleGFtcGxlLCBpbWFnaW5lIGEgREFPIG9yaWdpbiB3aXRoIGEgcGVyY2VudGFnZSBvZiB2b3RlcnMsIHdlIHdhbnQgdG8gdHJhY2sgdGhlIERBT6wgZW50aXR5IHJlZ2FyZGxlc3Mgb2YgdGhlIHZvdGVyIHBlcmNlbnRhZ2UuAJkAABBTdWRvARBTdWRvBAxLZXkAAAQEAASEIFRoZSBgQWNjb3VudElkYCBvZiB0aGUgc3VkbyBrZXkuAAFlBwABqQkAAAGBEAAELFJ1bnRpbWVDYWxsIARIIEEgc3Vkby1hYmxlIGNhbGwuAPsAADRQZ2FzQWxsb3dhbmNlAAABrQkAAAAAAPwAAAgEBQAgoQQEAEQABAgMEBQYHCAkKCwwNDg8QERYQXV0aG9yaXplVmFsdWVUcmFuc2ZlcmkHEDRBdXRob3JpemVDYWxscQcQGEFzUGdhc3UHECxBc1JpbmdBbGlhc4EHEDhBc0RvdG5zR2F0ZXdheY0HEDxSZXN0cmljdE9yaWdpbnOZBxBIQ2hlY2tOb25aZXJvU2VuZGVynQcQQENoZWNrU3BlY1ZlcnNpb26hBzg4Q2hlY2tUeFZlcnNpb26lBzgwQ2hlY2tHZW5lc2lzqQc8OENoZWNrTW9ydGFsaXR5rQc8KENoZWNrTm9uY2W1BxAsQ2hlY2tXZWlnaHS5BxBQQ2hhcmdlQXNzZXRUeFBheW1lbnS9BxBEQ2hlY2tNZXRhZGF0YUhhc2jBBz0HMEV0aFNldE9yaWdpbskHEFBTdG9yYWdlV2VpZ2h0UmVjbGFpbRAQbBxBdXJhQXBpCDRzbG90X2R1cmF0aW9uAIUQDJAgUmV0dXJucyB0aGUgc2xvdCBkdXJhdGlvbiBmb3IgQXVyYS4AJQEgQ3VycmVudGx5LCBvbmx5IHRoZSB2YWx1ZSBwcm92aWRlZCBieSB0aGlzIHR5cGUgYXQgZ2VuZXNpcyB3aWxsIGJlIHVzZWQuACxhdXRob3JpdGllcwB1CwScIFJldHVybiB0aGUgY3VycmVudCBzZXQgb2YgYXV0aG9yaXRpZXMuAAS4IEFQSSBuZWNlc3NhcnkgZm9yIGJsb2NrIGF1dGhvcnNoaXAgd2l0aCBhdXJhLgQAUFJlbGF5UGFyZW50T2Zmc2V0QXBpBExyZWxheV9wYXJlbnRfb2Zmc2V0ADgE9CBGZXRjaCB0aGUgc2xvdCBvZmZzZXQgdGhhdCBpcyBleHBlY3RlZCBmcm9tIHRoZSByZWxheSBjaGFpbi4AEAUBIEFQSSB0byB0ZWxsIHRoZSBub2RlIHNpZGUgaG93IHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIGJlIGNob3Nlbi4AaQEgQSBsYXJnZXIgb2Zmc2V0IGluZGljYXRlcyB0aGF0IHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIG5vdCBiZSB0aGUgdGlwIG9mIHRoZSByZWxheSBjaGFpbiwxASBidXQgYE5gIGJsb2NrcyBiZWhpbmQgdGhlIHRpcC4gVGhpcyBvZmZzZXQgaXMgdGhlbiBlbmZvcmNlZCBieSB0aGUgcnVudGltZS4EAGBBdXJhVW5pbmNsdWRlZFNlZ21lbnRBcGkEOGNhbl9idWlsZF91cG9uCDRpbmNsdWRlZF9oYXNoPBBzbG90eQtZASg5ASBXaGV0aGVyIGl0IGlzIGxlZ2FsIHRvIGV4dGVuZCB0aGUgY2hhaW4sIGFzc3VtaW5nIHRoZSBnaXZlbiBibG9jayBpcyB0aGUgbW9zdDUBIHJlY2VudGx5IGluY2x1ZGVkIG9uZSBhcy1vZiB0aGUgcmVsYXkgcGFyZW50IHRoYXQgd2lsbCBiZSBidWlsdCBhZ2FpbnN0LCBhbmRwIHRoZSBnaXZlbiByZWxheSBjaGFpbiBzbG90LgBRASBUaGlzIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggdGhlIGxvZ2ljIHRoZSBydW50aW1lIHVzZXMgd2hlbiB2YWxpZGF0aW5nIGJsb2NrcyB0bzggYXZvaWQgaXNzdWVzLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgZW1wdHksIGkuZS4gYGluY2x1ZGVkX2hhc2ggPT0gYXRgLCB3aGVyZSBhdCBpcyB0aGUgYmxvY2thASB3aG9zZSBzdGF0ZSB3ZSBhcmUgcXVlcnlpbmcgYWdhaW5zdCwgdGhpcyBtdXN0IGFsd2F5cyByZXR1cm4gYHRydWVgIGFzIGxvbmcgYXMgdGhlIHNsb3S8IGlzIG1vcmUgcmVjZW50IHRoYW4gdGhlIGluY2x1ZGVkIGJsb2NrIGl0c2VsZi4ANDUBIFRoaXMgcnVudGltZSBBUEkgaXMgdXNlZCB0byBpbmZvcm0gcG90ZW50aWFsIGJsb2NrIGF1dGhvcnMgd2hldGhlciB0aGV5IHdpbGwlASBoYXZlIHRoZSByaWdodCB0byBhdXRob3IgYXQgYSBzbG90LCBhc3N1bWluZyB0aGV5IGhhdmUgY2xhaW1lZCB0aGUgc2xvdC4AdQEgSW4gcGFydGljdWxhciwgdGhpcyBBUEkgYWxsb3dzIEF1cmEtYmFzZWQgcGFyYWNoYWlucyB0byByZWd1bGF0ZSB0aGVpciAidW5pbmNsdWRlZCBzZWdtZW50IixtASB3aGljaCBpcyB0aGUgc2VjdGlvbiBvZiB0aGUgaGVhZCBvZiB0aGUgY2hhaW4gd2hpY2ggaGFzIG5vdCB5ZXQgYmVlbiBtYWRlIGF2YWlsYWJsZSBpbiB0aGU0IHJlbGF5IGNoYWluLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgc2hvcnQsIEF1cmEgY2hhaW5zIHdpbGwgYWxsb3cgYXV0aG9ycyB0byBjcmVhdGUgbXVsdGlwbGVdASBibG9ja3MgcGVyIHNsb3QgaW4gb3JkZXIgdG8gYnVpbGQgYSBiYWNrbG9nLiBXaGVuIGl0IGlzIHNhdHVyYXRlZCwgdGhpcyBBUEkgd2lsbCBsaW1pdKggdGhlIGFtb3VudCBvZiBibG9ja3MgdGhhdCBjYW4gYmUgY3JlYXRlZC4AJCBDaGFuZ2VzOpEBIC0gVmVyc2lvbiAyOiBVcGRhdGUgdG8gYGNhbl9idWlsZF91cG9uYCB0byB0YWtlIGEgcmVsYXkgY2hhaW4gYFNsb3RgIGluc3RlYWQgb2YgYSBwYXJhY2hhaW4gYFNsb3RgLggAEENvcmUMHHZlcnNpb24A4QkEkCBSZXR1cm5zIHRoZSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgA0ZXhlY3V0ZV9ibG9jawQUYmxvY2uJEBAEZCBFeGVjdXRlIHRoZSBnaXZlbiBibG9jay4AQGluaXRpYWxpemVfYmxvY2sEGGhlYWRlclyVEARBASBJbml0aWFsaXplIGEgYmxvY2sgd2l0aCB0aGUgZ2l2ZW4gaGVhZGVyIGFuZCByZXR1cm4gdGhlIHJ1bnRpbWUgZXhlY3V0aXZlIG1vZGUuAAQhASBUaGUgYENvcmVgIHJ1bnRpbWUgYXBpIHRoYXQgZXZlcnkgU3Vic3RyYXRlIHJ1bnRpbWUgbmVlZHMgdG8gaW1wbGVtZW50LhQAIE1ldGFkYXRhDCBtZXRhZGF0YQCZEASMIFJldHVybnMgdGhlIG1ldGFkYXRhIG9mIGEgcnVudGltZS4ATG1ldGFkYXRhX2F0X3ZlcnNpb24EHHZlcnNpb244nRAQpCBSZXR1cm5zIHRoZSBtZXRhZGF0YSBhdCBhIGdpdmVuIHZlcnNpb24uAAUBIElmIHRoZSBnaXZlbiBgdmVyc2lvbmAgaXNuJ3Qgc3VwcG9ydGVkLCB0aGlzIHdpbGwgcmV0dXJuIGBOb25lYC51ASBVc2UgW2BTZWxmOjptZXRhZGF0YV92ZXJzaW9uc2BdIHRvIGZpbmQgb3V0IGFib3V0IHN1cHBvcnRlZCBtZXRhZGF0YSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgBEbWV0YWRhdGFfdmVyc2lvbnMAQQQMpCBSZXR1cm5zIHRoZSBzdXBwb3J0ZWQgbWV0YWRhdGEgdmVyc2lvbnMuAMAgVGhpcyBjYW4gYmUgdXNlZCB0byBjYWxsIGBtZXRhZGF0YV9hdF92ZXJzaW9uYC4ABAEBIFRoZSBgTWV0YWRhdGFgIGFwaSB0cmFpdCB0aGF0IHJldHVybnMgbWV0YWRhdGEgZm9yIHRoZSBydW50aW1lLggAMEJsb2NrQnVpbGRlchA8YXBwbHlfZXh0cmluc2ljBCRleHRyaW5zaWP5CaEQEGwgQXBwbHkgdGhlIGdpdmVuIGV4dHJpbnNpYy4AOQEgUmV0dXJucyBhbiBpbmNsdXNpb24gb3V0Y29tZSB3aGljaCBzcGVjaWZpZXMgaWYgdGhpcyBleHRyaW5zaWMgaXMgaW5jbHVkZWQgaW5MIHRoaXMgYmxvY2sgb3Igbm90LgA4ZmluYWxpemVfYmxvY2sAXARoIEZpbmlzaCB0aGUgY3VycmVudCBibG9jay4ATGluaGVyZW50X2V4dHJpbnNpY3MEIGluaGVyZW50sRAJCgQ9ASBHZW5lcmF0ZSBpbmhlcmVudCBleHRyaW5zaWNzLiBUaGUgaW5oZXJlbnQgZGF0YSB3aWxsIHZhcnkgZnJvbSBjaGFpbiB0byBjaGFpbi4APGNoZWNrX2luaGVyZW50cwgUYmxvY2uJEBBkYXRhsRDBEARVASBDaGVjayB0aGF0IHRoZSBpbmhlcmVudHMgYXJlIHZhbGlkLiBUaGUgaW5oZXJlbnQgZGF0YSB3aWxsIHZhcnkgZnJvbSBjaGFpbiB0byBjaGFpbi4ABHEBIFRoZSBgQmxvY2tCdWlsZGVyYCBhcGkgdHJhaXQgdGhhdCBwcm92aWRlcyB0aGUgcmVxdWlyZWQgZnVuY3Rpb25hbGl0eSBmb3IgYnVpbGRpbmcgYSBibG9jay4YAFhUYWdnZWRUcmFuc2FjdGlvblF1ZXVlBFB2YWxpZGF0ZV90cmFuc2FjdGlvbgwYc291cmNlxRAIdHj5CShibG9ja19oYXNoPMkQJGggVmFsaWRhdGUgdGhlIHRyYW5zYWN0aW9uLgBlASBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJ5IHRoZSB0cmFuc2FjdGlvbiBwb29sIHRvIGxlYXJuIGRldGFpbHMgYWJvdXQgZ2l2ZW4gdHJhbnNhY3Rpb24uRQEgVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCBtYWtlIHN1cmUgdG8gdmVyaWZ5IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgdHJhbnNhY3Rpb25NASBhZ2FpbnN0IGN1cnJlbnQgc3RhdGUuIFRoZSBnaXZlbiBgYmxvY2tfaGFzaGAgY29ycmVzcG9uZHMgdG8gdGhlIGhhc2ggb2YgdGhlIGJsb2NrfCB0aGF0IGlzIHVzZWQgYXMgY3VycmVudCBzdGF0ZS4ARQEgTm90ZSB0aGF0IHRoaXMgY2FsbCBtYXkgYmUgcGVyZm9ybWVkIGJ5IHRoZSBwb29sIG11bHRpcGxlIHRpbWVzIGFuZCB0cmFuc2FjdGlvbnOkIG1pZ2h0IGJlIHZlcmlmaWVkIGluIGFueSBwb3NzaWJsZSBvcmRlci4ABE0BIFRoZSBgVGFnZ2VkVHJhbnNhY3Rpb25RdWV1ZWAgYXBpIHRyYWl0IGZvciBpbnRlcmZlcmluZyB3aXRoIHRoZSB0cmFuc2FjdGlvbiBxdWV1ZS4MAERPZmZjaGFpbldvcmtlckFwaQQ8b2ZmY2hhaW5fd29ya2VyBBhoZWFkZXJcEATIIFN0YXJ0cyB0aGUgb2ZmLWNoYWluIHRhc2sgZm9yIGdpdmVuIGJsb2NrIGhlYWRlci4ABGQgVGhlIG9mZmNoYWluIHdvcmtlciBhcGkuCAAsU2Vzc2lvbktleXMIVGdlbmVyYXRlX3Nlc3Npb25fa2V5cwgUb3duZXIYEHNlZWRJAdEQHBUBIEdlbmVyYXRlIGEgc2V0IG9mIHNlc3Npb24ga2V5cyB3aXRoIG9wdGlvbmFsbHkgdXNpbmcgdGhlIGdpdmVuIHNlZWQuCQEgVGhlIGtleXMgc2hvdWxkIGJlIHN0b3JlZCB3aXRoaW4gdGhlIGtleXN0b3JlIGV4cG9zZWQgdmlhIHJ1bnRpbWU8IGV4dGVybmFsaXRpZXMuALAgVGhlIHNlZWQgbmVlZHMgdG8gYmUgYSB2YWxpZCBgdXRmOGAgc3RyaW5nLgDQIFJldHVybnMgdGhlIGNvbmNhdGVuYXRlZCBTQ0FMRSBlbmNvZGVkIHB1YmxpYyBrZXlzLgBMZGVjb2RlX3Nlc3Npb25fa2V5cwQcZW5jb2RlZBjVEAyYIERlY29kZSB0aGUgZ2l2ZW4gcHVibGljIHNlc3Npb24ga2V5cy4A3CBSZXR1cm5zIHRoZSBsaXN0IG9mIHB1YmxpYyByYXcgcHVibGljIGtleXMgKyBrZXkgdHlwZS4ABGggU2Vzc2lvbiBrZXlzIHJ1bnRpbWUgYXBpLggATFJ1bnRpbWVWaWV3RnVuY3Rpb24EVGV4ZWN1dGVfdmlld19mdW5jdGlvbgggcXVlcnlfaWThEBRpbnB1dBjlEAR8IEV4ZWN1dGUgYSB2aWV3IGZ1bmN0aW9uIHF1ZXJ5LgAEpCBSdW50aW1lIEFQSSBmb3IgZXhlY3V0aW5nIHZpZXcgZnVuY3Rpb25zBAA8QWNjb3VudE5vbmNlQXBpBDRhY2NvdW50X25vbmNlBBxhY2NvdW50BDgEwCBHZXQgY3VycmVudCBhY2NvdW50IG5vbmNlIG9mIGdpdmVuIGBBY2NvdW50SWRgLgAEgCBUaGUgQVBJIHRvIHF1ZXJ5IGFjY291bnQgbm9uY2UuBABUVHJhbnNhY3Rpb25QYXltZW50QXBpEChxdWVyeV9pbmZvCAx1eHT5CQxsZW447RAAAERxdWVyeV9mZWVfZGV0YWlscwgMdXh0+QkMbGVuOPEQAABMcXVlcnlfd2VpZ2h0X3RvX2ZlZQQYd2VpZ2h0EQFVAQAATHF1ZXJ5X2xlbmd0aF90b19mZWUEGGxlbmd0aDhVAQAAABAAZFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGkQPHF1ZXJ5X2NhbGxfaW5mbwgQY2FsbCAMbGVuOO0QBEkBIFF1ZXJ5IGluZm9ybWF0aW9uIG9mIGEgZGlzcGF0Y2ggY2xhc3MsIHdlaWdodCwgYW5kIGZlZSBvZiBhIGdpdmVuIGVuY29kZWQgYENhbGxgLgBYcXVlcnlfY2FsbF9mZWVfZGV0YWlscwgQY2FsbCAMbGVuOPEQBLQgUXVlcnkgZmVlIGRldGFpbHMgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4ATHF1ZXJ5X3dlaWdodF90b19mZWUEGHdlaWdodBEBVQEEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgV2VpZ2h0VG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg4VQEEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgTGVuZ3RoVG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAAAMADRYY21QYXltZW50QXBpEHxxdWVyeV9hY2NlcHRhYmxlX3BheW1lbnRfYXNzZXRzBCx4Y21fdmVyc2lvbjj9EBS0IFJldHVybnMgYSBsaXN0IG9mIGFjY2VwdGFibGUgcGF5bWVudCBhc3NldHMuADAgIyBBcmd1bWVudHMAaCAqIGB4Y21fdmVyc2lvbmA6IFZlcnNpb24uAEBxdWVyeV94Y21fd2VpZ2h0BBxtZXNzYWdlMQIJERSoIFJldHVybnMgYSB3ZWlnaHQgbmVlZGVkIHRvIGV4ZWN1dGUgYSBYQ00uADAgIyBBcmd1bWVudHMAdCAqIGBtZXNzYWdlYDogYFZlcnNpb25lZFhjbWAuAGRxdWVyeV93ZWlnaHRfdG9fYXNzZXRfZmVlCBh3ZWlnaHQRARRhc3NldKEDDREY6CBDb252ZXJ0cyBhIHdlaWdodCBpbnRvIGEgZmVlIGZvciB0aGUgc3BlY2lmaWVkIGBBc3NldElkYC4AMCAjIEFyZ3VtZW50cwCIICogYHdlaWdodGA6IGNvbnZlcnRpYmxlIGBXZWlnaHRgLnwgKiBgYXNzZXRgOiBgVmVyc2lvbmVkQXNzZXRJZGAuAExxdWVyeV9kZWxpdmVyeV9mZWVzDCxkZXN0aW5hdGlvbqkBHG1lc3NhZ2UxAiBhc3NldF9pZKEDEREoYCBRdWVyeSBkZWxpdmVyeSBmZWVzIFYyLgAdASBHZXQgZGVsaXZlcnkgZmVlcyBmb3Igc2VuZGluZyBhIHNwZWNpZmljIGBtZXNzYWdlYCB0byBhIGBkZXN0aW5hdGlvbmAu9CBUaGVzZSBhbHdheXMgY29tZSBpbiBhIHNwZWNpZmljIGFzc2V0LCBkZWZpbmVkIGJ5IHRoZSBjaGFpbi4AMCAjIEFyZ3VtZW50c4EBICogYG1lc3NhZ2VgOiBUaGUgbWVzc2FnZSB0aGF0J2xsIGJlIHNlbnQsIG5lY2Vzc2FyeSBiZWNhdXNlIG1vc3QgZGVsaXZlcnkgZmVlcyBhcmUgYmFzZWQgb24gdGhlXCAgIHNpemUgb2YgdGhlIG1lc3NhZ2UuYQEgKiBgZGVzdGluYXRpb25gOiBUaGUgZGVzdGluYXRpb24gdG8gc2VuZCB0aGUgbWVzc2FnZSB0by4gRGlmZmVyZW50IGRlc3RpbmF0aW9ucyBtYXkgdXNlwCAgIGRpZmZlcmVudCBzZW5kZXJzIHRoYXQgY2hhcmdlIGRpZmZlcmVudCBmZWVzLgAscCBBIHRyYWl0IG9mIFhDTSBwYXltZW50IEFQSS4AqCBBUEkgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3Igb2J0YWluaW5nOgDEICogdGhlIHdlaWdodCByZXF1aXJlZCB0byBleGVjdXRlIGFuIFhDTSBtZXNzYWdlLAUBICogYSBsaXN0IG9mIGFjY2VwdGFibGUgYEFzc2V0SWRgcyBmb3IgbWVzc2FnZSBleGVjdXRpb24gcGF5bWVudCwBASAqIHRoZSBjb3N0IG9mIHRoZSB3ZWlnaHQgaW4gdGhlIHNwZWNpZmllZCBhY2NlcHRhYmxlIGBBc3NldElkYC6gICogdGhlIGZlZXMgZm9yIGFuIFhDTSBtZXNzYWdlIGRlbGl2ZXJ5LgDwIFRvIGRldGVybWluZSB0aGUgZXhlY3V0aW9uIHdlaWdodCBvZiB0aGUgY2FsbHMgcmVxdWlyZWQgZm9ydQEgW2B4Y206OmxhdGVzdDo6SW5zdHJ1Y3Rpb246OlRyYW5zYWN0YF0gaW5zdHJ1Y3Rpb24sIGBUcmFuc2FjdGlvblBheW1lbnRDYWxsQXBpYCBjYW4gYmUgdXNlZC4IACREcnlSdW5BcGkIMGRyeV9ydW5fY2FsbAwYb3JpZ2lu1QMQY2FsbCBMcmVzdWx0X3hjbXNfdmVyc2lvbjgVEQREIERyeSBydW4gY2FsbCBWMi4ALGRyeV9ydW5feGNtCDxvcmlnaW5fbG9jYXRpb26pAQx4Y21xAzURBFAgRHJ5IHJ1biBYQ00gcHJvZ3JhbQAksQEgQVBJIGZvciBkcnktcnVubmluZyBleHRyaW5zaWNzIGFuZCBYQ00gcHJvZ3JhbXMgdG8gZ2V0IHRoZSBwcm9ncmFtcyB0aGF0IG5lZWQgdG8gYmUgcGFzc2VkIHRvIHRoZSBmZWVzIEFQSS4AgQEgQWxsIGNhbGxzIHJldHVybiBhIHZlY3RvciBvZiB0dXBsZXMgKGxvY2F0aW9uLCB4Y20pIHdoZXJlIGVhY2ggInhjbSIgaXMgZXhlY3V0ZWQgaW4gImxvY2F0aW9uIi7kIElmIHRoZXJlJ3MgbG9jYWwgZXhlY3V0aW9uLCB0aGUgbG9jYXRpb24gd2lsbCBiZSAiSGVyZSIuHQEgVGhpcyB2ZWN0b3IgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIGJvdGggZXhlY3V0aW9uIGFuZCBkZWxpdmVyeSBmZWVzLgCZASBDYWxscyBvciBYQ01zIG1pZ2h0IGZhaWwgd2hlbiBleGVjdXRlZCwgdGhpcyBkb2Vzbid0IG1lYW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjYWxscyB3aWxsIGJlIGFuIGBFcnJgLmUBIEluIHRob3NlIGNhc2VzLCB0aGVyZSBtaWdodCBzdGlsbCBiZSBhIHZhbGlkIHJlc3VsdCwgd2l0aCB0aGUgZXhlY3V0aW9uIGVycm9yIGluc2lkZSBpdC5lASBUaGUgb25seSByZWFzb25zIHdoeSB0aGVzZSBjYWxscyBtaWdodCByZXR1cm4gYW4gZXJyb3IgYXJlIGxpc3RlZCBpbiB0aGUgW2BFcnJvcmBdIGVudW0uCABQTG9jYXRpb25Ub0FjY291bnRBcGkEQGNvbnZlcnRfbG9jYXRpb24EIGxvY2F0aW9uqQE9EQSQIENvbnZlcnRzIGBMb2NhdGlvbmAgdG8gYEFjY291bnRJZGAuAAQNASBBUEkgZm9yIHVzZWZ1bCBjb252ZXJzaW9ucyBiZXR3ZWVuIFhDTSBgTG9jYXRpb25gIGFuZCBgQWNjb3VudElkYC4EADxUcnVzdGVkUXVlcnlBcGkISGlzX3RydXN0ZWRfcmVzZXJ2ZQgUYXNzZXRFESBsb2NhdGlvbqkBSREU8CBSZXR1cm5zIGlmIHRoZSBsb2NhdGlvbiBpcyBhIHRydXN0ZWQgcmVzZXJ2ZSBmb3IgdGhlIGFzc2V0LgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAFRpc190cnVzdGVkX3RlbGVwb3J0ZXIIFGFzc2V0RREgbG9jYXRpb26pAUkRFOAgUmV0dXJucyBpZiB0aGUgYXNzZXQgY2FuIGJlIHRlbGVwb3J0ZWQgdG8gdGhlIGxvY2F0aW9uLgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAATsIEFQSSBmb3IgcXVlcnlpbmcgdHJ1c3RlZCByZXNlcnZlcyBhbmQgdHJ1c3RlZCB0ZWxlcG9ydGVycy4EAFRBdXRob3JpemVkQWxpYXNlcnNBcGkITGF1dGhvcml6ZWRfYWxpYXNlcnMEGHRhcmdldKkBUREE9CBSZXR1cm5zIGxvY2F0aW9ucyBhbGxvd2VkIHRvIGFsaWFzIGludG8gYW5kIGFjdCBhcyBgdGFyZ2V0YC4ATGlzX2F1dGhvcml6ZWRfYWxpYXMIGG9yaWdpbqkBGHRhcmdldKkBWREEHQEgUmV0dXJucyB3aGV0aGVyIGBvcmlnaW5gIGlzIGFsbG93ZWQgdG8gYWxpYXMgaW50byBhbmQgYWN0IGFzIGB0YXJnZXRgLgAEoCBBUEkgZm9yIHF1ZXJ5aW5nIFhDTSBhdXRob3JpemVkIGFsaWFzZXMEADBGdW5naWJsZXNBcGkEWHF1ZXJ5X2FjY291bnRfYmFsYW5jZXMEHGFjY291bnQEXREE7CBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBbYEFzc2V0YF0gdGhhdCBhbiBgQWNjb3VudElkYCBoYXMuAATYIFRoZSBBUEkgZm9yIHF1ZXJ5aW5nIGFjY291bnQncyBiYWxhbmNlcyBmcm9tIHJ1bnRpbWUuCABQQ29sbGVjdENvbGxhdGlvbkluZm8EWGNvbGxlY3RfY29sbGF0aW9uX2luZm8EGGhlYWRlclxlERCcIENvbGxlY3QgaW5mb3JtYXRpb24gYWJvdXQgYSBjb2xsYXRpb24uAPQgVGhlIGdpdmVuIGBoZWFkZXJgIGlzIHRoZSBoZWFkZXIgb2YgdGhlIGJ1aWx0IGJsb2NrIGZvciB0aGF0qCB3ZSBhcmUgY29sbGVjdGluZyB0aGUgY29sbGF0aW9uIGluZm8gZm9yLgAU2CBSdW50aW1lIGFwaSB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sbGF0aW9uLgBEIFZlcnNpb24gaGlzdG9yeToBASAtIFZlcnNpb24gMjogQ2hhbmdlZCBbYFNlbGY6OmNvbGxlY3RfY29sbGF0aW9uX2luZm9gXSBzaWduYXR1cmU1ASAtIFZlcnNpb24gMzogU2lnbmFscyB0byB0aGUgbm9kZSB0byB1c2UgdmVyc2lvbiAxIG9mIFtgUGFyYWNoYWluQmxvY2tEYXRhYF0uDAA4R2VuZXNpc0J1aWxkZXIMLGJ1aWxkX3N0YXRlBBBqc29uGHERKGUBIEJ1aWxkIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZnJvbSBhIEpTT04gYmxvYiBub3QgdXNpbmcgYW55IGRlZmF1bHRzIGFuZCBzdG9yZSBpdCBpbiB0aGUkIHN0b3JhZ2UuACkBIEluIHRoZSBjYXNlIG9mIGEgRlJBTUUtYmFzZWQgcnVudGltZSwgdGhpcyBmdW5jdGlvbiBkZXNlcmlhbGl6ZXMgdGhlIGZ1bGxVASBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gdGhlIGdpdmVuIEpTT04gYmxvYiBhbmQgcHV0cyBpdCBpbnRvIHRoZSBzdG9yYWdlLiBJZiB0aGVVASBwcm92aWRlZCBKU09OIGJsb2IgaXMgaW5jb3JyZWN0IG9yIGluY29tcGxldGUgb3IgdGhlIGRlc2VyaWFsaXphdGlvbiBmYWlscywgYW4gZXJyb3I0IGlzIHJldHVybmVkLgBdASBQbGVhc2Ugbm90ZSB0aGF0IHByb3ZpZGVkIEpTT04gYmxvYiBtdXN0IGNvbnRhaW4gYWxsIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZmllbGRzLCBub1wgZGVmYXVsdHMgd2lsbCBiZSB1c2VkLgAoZ2V0X3ByZXNldAQIaWR1EUkBOGEBIFJldHVybnMgYSBKU09OIGJsb2IgcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgaWRlbnRpZmllZCBieRggYGlkYC4AVQEgSWYgYGlkYCBpcyBgTm9uZWAgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gSlNPTiBibG9iIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkZWZhdWx0SQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBzdHJ1Y3Qgb2YgdGhlIHJ1bnRpbWUuIEltcGxlbWVudGF0aW9uIG11c3QgcHJvdmlkZSBkZWZhdWx0YCBgUnVudGltZUdlbmVzaXNDb25maWdgLgAhASBPdGhlcndpc2UgZnVuY3Rpb24gcmV0dXJucyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluLCBuYW1lZFEBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0IGlkZW50aWZpZWQgYnkgYGlkYCwgb3IgYE5vbmVgIGlmIHN1Y2ggcHJlc2V0IGRvZXMgbm90YQEgZXhpc3QuIFJldHVybmVkIGBWZWM8dTg+YCBjb250YWlucyBieXRlcyBvZiBKU09OIGJsb2IgKHBhdGNoKSB3aGljaCBjb21wcmlzZXMgYSBsaXN0IG9mTQEgKHBvdGVudGlhbGx5IG5lc3RlZCkga2V5LXZhbHVlIHBhaXJzIHRoYXQgYXJlIGludGVuZGVkIGZvciBjdXN0b21pemluZyB0aGUgZGVmYXVsdGUBIHJ1bnRpbWUgZ2VuZXNpcyBjb25maWcuIFRoZSBwYXRjaCBzaGFsbCBiZSBtZXJnZWQgKHJmYzczODYpIHdpdGggdGhlIEpTT04gcmVwcmVzZW50YXRpb25hASBvZiB0aGUgZGVmYXVsdCBgUnVudGltZUdlbmVzaXNDb25maWdgIHRvIGNyZWF0ZSBhIGNvbXByZWhlbnNpdmUgZ2VuZXNpcyBjb25maWcgdGhhdCBjYW6EIGJlIHVzZWQgaW4gYGJ1aWxkX3N0YXRlYCBtZXRob2QuADBwcmVzZXRfbmFtZXMAeREQUQEgUmV0dXJucyBhIGxpc3Qgb2YgaWRlbnRpZmllcnMgZm9yIGF2YWlsYWJsZSBidWlsdGluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0cy4AYQEgVGhlIHByZXNldHMgZnJvbSB0aGUgbGlzdCBjYW4gYmUgcXVlcmllZCB3aXRoIFtgR2VuZXNpc0J1aWxkZXI6OmdldF9wcmVzZXRgXSBtZXRob2QuIElmAQEgbm8gbmFtZWQgcHJlc2V0cyBhcmUgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWUgdGhlIGxpc3QgaXMgZW1wdHkuAATwIEFQSSB0byBpbnRlcmFjdCB3aXRoIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZm9yIHRoZSBydW50aW1lBABIQXNzZXRDb252ZXJzaW9uQXBpDIxxdW90ZV9wcmljZV90b2tlbnNfZm9yX2V4YWN0X3Rva2VucxAYYXNzZXQx/QEYYXNzZXQy/QEYYW1vdW50VQEsaW5jbHVkZV9mZWVZAUkEEPwgUHJvdmlkZXMgYSBxdW90ZSBmb3IgW2BQYWxsZXQ6OnN3YXBfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnNgXS4AOQEgTm90ZSB0aGF0IHRoZSBwcmljZSBtYXkgaGF2ZSBjaGFuZ2VkIGJ5IHRoZSB0aW1lIHRoZSB0cmFuc2FjdGlvbiBpcyBleGVjdXRlZC6sIChVc2UgYGFtb3VudF9pbl9tYXhgIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKQCMcXVvdGVfcHJpY2VfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnMQGGFzc2V0Mf0BGGFzc2V0Mv0BGGFtb3VudFUBLGluY2x1ZGVfZmVlWQFJBBD8IFByb3ZpZGVzIGEgcXVvdGUgZm9yIFtgUGFsbGV0Ojpzd2FwX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zYF0uADkBIE5vdGUgdGhhdCB0aGUgcHJpY2UgbWF5IGhhdmUgY2hhbmdlZCBieSB0aGUgdGltZSB0aGUgdHJhbnNhY3Rpb24gaXMgZXhlY3V0ZWQusCAoVXNlIGBhbW91bnRfb3V0X21pbmAgdG8gY29udHJvbCBzbGlwcGFnZS4pADBnZXRfcmVzZXJ2ZXMIGGFzc2V0Mf0BGGFzc2V0Mv0BfREEBQEgUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbGlxdWlkaXR5IHBvb2wgZm9yIHRoZSBnaXZlbiBhc3NldCBwYWlyLgAIIQEgVGhpcyBydW50aW1lIGFwaSBhbGxvd3MgcGVvcGxlIHRvIHF1ZXJ5IHRoZSBzaXplIG9mIHRoZSBsaXF1aWRpdHkgcG9vbHNwIGFuZCBxdW90ZSBwcmljZXMgZm9yIHN3YXBzLgQAQEdldFBhcmFjaGFpbkluZm8EMHBhcmFjaGFpbl9pZACcBLAgUmV0cmlldmUgdGhlIHBhcmFjaGFpbiBpZCB1c2VkIGZvciBydW50aW1lLgAEDQEgUnVudGltZSBhcGkgdXNlZCB0byBhY2Nlc3MgZ2VuZXJhbCBpbmZvIGFib3V0IGEgcGFyYWNoYWluIHJ1bnRpbWUuBABITm9taW5hdGlvblBvb2xzQXBpKDxwZW5kaW5nX3Jld2FyZHMEDHdobwRVAQQ1ASBSZXR1cm5zIHRoZSBwZW5kaW5nIHJld2FyZHMgZm9yIHRoZSBtZW1iZXIgdGhhdCB0aGUgQWNjb3VudElkIHdhcyBnaXZlbiBmb3IuAERwb2ludHNfdG9fYmFsYW5jZQgccG9vbF9pZDgYcG9pbnRzVQFVAQT0IFJldHVybnMgdGhlIGVxdWl2YWxlbnQgYmFsYW5jZSBvZiBgcG9pbnRzYCBmb3IgYSBnaXZlbiBwb29sLgBEYmFsYW5jZV90b19wb2ludHMIHHBvb2xfaWQ4JG5ld19mdW5kc1UBVQEE/CBSZXR1cm5zIHRoZSBlcXVpdmFsZW50IHBvaW50cyBvZiBgbmV3X2Z1bmRzYCBmb3IgYSBnaXZlbiBwb29sLgBIcG9vbF9wZW5kaW5nX3NsYXNoBBxwb29sX2lkOFUBBLAgUmV0dXJucyB0aGUgcGVuZGluZyBzbGFzaCBmb3IgYSBnaXZlbiBwb29sLgBQbWVtYmVyX3BlbmRpbmdfc2xhc2gEGG1lbWJlcgRVARDMIFJldHVybnMgdGhlIHBlbmRpbmcgc2xhc2ggZm9yIGEgZ2l2ZW4gcG9vbCBtZW1iZXIuAE0BIElmIHBlbmRpbmcgc2xhc2ggb2YgdGhlIG1lbWJlciBleGNlZWRzIGBFeGlzdGVudGlhbERlcG9zaXRgLCBpdCBjYW4gYmUgcmVwb3J0ZWQgb24cIGNoYWluLgB0cG9vbF9uZWVkc19kZWxlZ2F0ZV9taWdyYXRpb24EHHBvb2xfaWQ4WQEg5CBSZXR1cm5zIHRydWUgaWYgdGhlIHBvb2wgd2l0aCBgcG9vbF9pZGAgbmVlZHMgbWlncmF0aW9uLgBJASBUaGlzIGNhbiBoYXBwZW4gd2hlbiB0aGUgYHBhbGxldC1ub21pbmF0aW9uLXBvb2xzYCBoYXMgc3dpdGNoZWQgdG8gdXNpbmcgc3RyYXRlZ3lBASBbYERlbGVnYXRlU3Rha2VgXShwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6YWRhcHRlcjo6RGVsZWdhdGVTdGFrZSkgYnV0IHRoZSBwb29s6CBzdGlsbCBoYXMgZnVuZHMgdGhhdCB3ZXJlIHN0YWtlZCB1c2luZyB0aGUgb2xkZXIgc3RyYXRlZ3kZASBbVHJhbnNmZXJTdGFrZV0ocGFsbGV0X25vbWluYXRpb25fcG9vbHM6OmFkYXB0ZXI6OlRyYW5zZmVyU3Rha2UpLiBVc2WJASBbYG1pZ3JhdGVfcG9vbF90b19kZWxlZ2F0ZV9zdGFrZWBdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpDYWxsOjptaWdyYXRlX3Bvb2xfdG9fZGVsZWdhdGVfc3Rha2UpVCB0byBtaWdyYXRlIHRoZSBwb29sLgB8bWVtYmVyX25lZWRzX2RlbGVnYXRlX21pZ3JhdGlvbgQYbWVtYmVyBFkBHCkBIFJldHVybnMgdHJ1ZSBpZiB0aGUgZGVsZWdhdGVkIGZ1bmRzIG9mIHRoZSBwb29sIGBtZW1iZXJgIG5lZWRzIG1pZ3JhdGlvbi4A2CBPbmNlIGEgcG9vbCBoYXMgc3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkIHRvIHRoZSBzdHJhdGVneVUBIFtgRGVsZWdhdGVTdGFrZWBdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjphZGFwdGVyOjpEZWxlZ2F0ZVN0YWtlKSwgdGhlIGZ1bmRzIG9mIHRoZRkBIG1lbWJlciBjYW4gYmUgbWlncmF0ZWQgZnJvbSBwb29sIGFjY291bnQgdG8gdGhlIG1lbWJlcidzIGFjY291bnQuIFVzZSkBIFtgbWlncmF0ZV9kZWxlZ2F0aW9uYF0ocGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkNhbGw6Om1pZ3JhdGVfZGVsZWdhdGlvbimkIHRvIG1pZ3JhdGUgdGhlIGZ1bmRzIG9mIHRoZSBwb29sIG1lbWJlci4AUG1lbWJlcl90b3RhbF9iYWxhbmNlBAx3aG8EVQEEZQEgUmV0dXJucyB0aGUgdG90YWwgY29udHJpYnV0aW9uIG9mIGEgcG9vbCBtZW1iZXIgaW5jbHVkaW5nIGFueSBiYWxhbmNlIHRoYXQgaXMgdW5ib25kaW5nLgAwcG9vbF9iYWxhbmNlBBxwb29sX2lkOFUBBJwgVG90YWwgYmFsYW5jZSBjb250cmlidXRlZCB0byB0aGUgcG9vbC4ANHBvb2xfYWNjb3VudHMEHHBvb2xfaWQ4zQ8ELQEgUmV0dXJucyB0aGUgYm9uZGVkIGFjY291bnQgYW5kIHJld2FyZCBhY2NvdW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgcG9vbF9pZC4ABPggUnVudGltZSBhcGkgZm9yIGFjY2Vzc2luZyBpbmZvcm1hdGlvbiBhYm91dCBub21pbmF0aW9uIHBvb2xzLgQAKFN0YWtpbmdBcGkMRG5vbWluYXRpb25zX3F1b3RhBBxiYWxhbmNlVQE4BBEBIFJldHVybnMgdGhlIG5vbWluYXRpb25zIHF1b3RhIGZvciBhIG5vbWluYXRvciB3aXRoIGEgZ2l2ZW4gYmFsYW5jZS4AXGVyYXNfc3Rha2Vyc19wYWdlX2NvdW50CAxlcmE4HGFjY291bnQEOAQ5ASBSZXR1cm5zIHRoZSBwYWdlIGNvdW50IG9mIGV4cG9zdXJlcyBmb3IgYSB2YWxpZGF0b3IgYGFjY291bnRgIGluIGEgZ2l2ZW4gZXJhLgA8cGVuZGluZ19yZXdhcmRzCAxlcmE4HGFjY291bnQEWQEERQEgUmV0dXJucyB0cnVlIGlmIGEgdmFsaWRhdG9yIGBhY2NvdW50YCBoYXMgcGFnZXMgdG8gYmUgY2xhaW1lZCBmb3IgdGhlIGdpdmVuIGVyYS4AAAQAJEluZmxhdGlvbgSUZXhwZXJpbWVudGFsX2lzc3VhbmNlX3ByZWRpY3Rpb25faW5mbwCBERDUIFJldHVybiB0aGUgY3VycmVudCBlc3RpbWF0ZXMgb2YgdGhlIGlzc3VhbmNlIGFtb3VudC4AUQEgVGhpcyBpcyBtYXJrZWQgYXMgZXhwZXJpbWVudGFsIGluIGxpZ2h0IG9mIFJGQyM4OS4gTm9uZXRoZWxlc3MsIGl0cyB1c2FnZSBpcyBoaWdobHklASByZWNvbW1lbmRlZCBvdmVyIHRyeWluZyB0byByZWFkLXN0b3JhZ2UsIG9yIHJlLWNyZWF0ZSB0aGUgb25jaGFpbiBsb2dpYy4AAAQAJFJldml2ZUFwaWwkZXRoX2Jsb2NrAN0PDHwgUmV0dXJucyB0aGUgY3VycmVudCBFVEggYmxvY2suALggVGhpcyBpcyBvbmUgYmxvY2sgYmVoaW5kIHRoZSBzdWJzdHJhdGUgYmxvY2suADhldGhfYmxvY2tfaGFzaAQYbnVtYmVyQQf5BATcIFJldHVybnMgdGhlIEVUSCBibG9jayBoYXNoIGZvciB0aGUgZ2l2ZW4gYmxvY2sgbnVtYmVyLgBAZXRoX3JlY2VpcHRfZGF0YQBJEBQRASBUaGUgZGV0YWlscyBuZWVkZWQgdG8gcmVjb25zdHJ1Y3QgdGhlIHJlY2VpcHQgaW5mb3JtYXRpb24gb2ZmY2hhaW4uABwgIyBOb3RlAFUBIEVhY2ggZW50cnkgY29ycmVzcG9uZHMgdG8gdGhlIGFwcHJvcHJpYXRlIEV0aGVyZXVtIHRyYW5zYWN0aW9uIGluIHRoZSBjdXJyZW50IGJsb2NrLgA8YmxvY2tfZ2FzX2xpbWl0AEEHBHQgUmV0dXJucyB0aGUgYmxvY2sgZ2FzIGxpbWl0LgBsbWF4X2V4dHJpbnNpY193ZWlnaHRfaW5fZ2FzAEEHBPAgUmV0dXJucyB0aGUgYmxvY2sgZ2FzIGxpbWl0IGFzIGNhbGN1bGF0ZWQgZnJvbSB0aGUgd2VpZ2h0cy4AHGJhbGFuY2UEHGFkZHJlc3M5B0EHBDEBIFJldHVybnMgdGhlIGZyZWUgYmFsYW5jZSBvZiB0aGUgZ2l2ZW4gYFtIMTYwXWAgYWRkcmVzcywgdXNpbmcgRVZNIGRlY2ltYWxzLgAkZ2FzX3ByaWNlAEEHBFwgUmV0dXJucyB0aGUgZ2FzIHByaWNlLgAUbm9uY2UEHGFkZHJlc3M5BzgExCBSZXR1cm5zIHRoZSBub25jZSBvZiB0aGUgZ2l2ZW4gYFtIMTYwXWAgYWRkcmVzcy4AEGNhbGwYGG9yaWdpbgQQZGVzdDkHFHZhbHVlVQEkZ2FzX2xpbWl0DQFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0SQQoaW5wdXRfZGF0YRiJEQz0IFBlcmZvcm0gYSBjYWxsIGZyb20gYSBzcGVjaWZpZWQgYWNjb3VudCB0byBhIGdpdmVuIGNvbnRyYWN0LgCIIFNlZSBbYGNyYXRlOjpQYWxsZXQ6OmJhcmVfY2FsbGBdLgAsaW5zdGFudGlhdGUcGG9yaWdpbgQUdmFsdWVVASRnYXNfbGltaXQNAVRzdG9yYWdlX2RlcG9zaXRfbGltaXRJBBBjb2RlnREQZGF0YRgQc2FsdD0HoREMcCBJbnN0YW50aWF0ZSBhIG5ldyBjb250cmFjdC4ApCBTZWUgYFtjcmF0ZTo6UGFsbGV0OjpiYXJlX2luc3RhbnRpYXRlXWAuADBldGhfdHJhbnNhY3QECHR4rRHJERBoIFBlcmZvcm0gYW4gRXRoZXJldW0gY2FsbC4AlCBEZXByZWNhdGVkIHVzZSBgdjJgIHZlcnNpb24gaW5zdGVhZC6wIFNlZSBbYGNyYXRlOjpQYWxsZXQ6OmRyeV9ydW5fZXRoX3RyYW5zYWN0YF0AYGV0aF90cmFuc2FjdF93aXRoX2NvbmZpZwgIdHitERhjb25maWfVEckRDGggUGVyZm9ybSBhbiBFdGhlcmV1bSBjYWxsLgCwIFNlZSBbYGNyYXRlOjpQYWxsZXQ6OmRyeV9ydW5fZXRoX3RyYW5zYWN0YF0AQGV0aF9lc3RpbWF0ZV9nYXMICHR4rREYY29uZmln1REJEhToIEVzdGltYXRlcyB0aGUgYW1vdW50IG9mIGdhcyB0aGF0IGEgdHJhbnNhY3Rpb25zIHJlcXVpcmVzLgBdASBUaGlzIGZ1bmN0aW9uIGVzdGltYXRlcyB0aGUgZ2FzIG9mIHRoZSB0cmFuc2FjdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHNhbWUgYmluYXJ5IHNlYXJjaFkBIGFsZ29yaXRobSB0aGF0J3MgaW1wbGVtZW50ZWQgaW4gR2V0aC4gSXQgc3RvcHMgd2hlbiB3aXRoIGFuIGFjY2VwdGFibGUgZXJyb3IgcmF0aW8gb2a0IDEuNSUgc28gdGhhdCB0aGUgYWxnb3JpdGhtIHRlcm1pbmF0ZXMgZWFybHkuAFxldGhfcHJlX2Rpc3BhdGNoX3dlaWdodAQIdHgYDRIETQEgUmV0dXJuIHRoZSBwcmUtZGlzcGF0Y2ggd2VpZ2h0IGJvb2tlZCBmb3IgdGhlIHNpZ25lZCBFdGhlcmV1bSB0cmFuc2FjdGlvbiBwYXlsb2FkLgAsdXBsb2FkX2NvZGUMGG9yaWdpbgQQY29kZRhUc3RvcmFnZV9kZXBvc2l0X2xpbWl0SQQREgzoIFVwbG9hZCBuZXcgY29kZSB3aXRob3V0IGluc3RhbnRpYXRpbmcgYSBjb250cmFjdCBmcm9tIGl0LgCkIFNlZSBbYGNyYXRlOjpQYWxsZXQ6OmJhcmVfdXBsb2FkX2NvZGVgXS4ALGdldF9zdG9yYWdlCBxhZGRyZXNzOQcMa2V5CBkSFLwgUXVlcnkgYSBnaXZlbiBzdG9yYWdlIGtleSBpbiBhIGdpdmVuIGNvbnRyYWN0LgBNASBSZXR1cm5zIGBPayhTb21lKFZlYzx1OD4pKWAgaWYgdGhlIHN0b3JhZ2UgdmFsdWUgZXhpc3RzIHVuZGVyIHRoZSBnaXZlbiBrZXkgaW4gdGhlYQEgc3BlY2lmaWVkIGFjY291bnQgYW5kIGBPayhOb25lKWAgaWYgaXQgZG9lc24ndC4gSWYgdGhlIGFjY291bnQgc3BlY2lmaWVkIGJ5IHRoZSBhZGRyZXNzCQEgZG9lc24ndCBleGlzdCwgb3IgZG9lc24ndCBoYXZlIGEgY29udHJhY3QgdGhlbiBgRXJyYCBpcyByZXR1cm5lZC4ATGdldF9zdG9yYWdlX3Zhcl9rZXkIHGFkZHJlc3M5BwxrZXkYGRIU+CBRdWVyeSBhIGdpdmVuIHZhcmlhYmxlLXNpemVkIHN0b3JhZ2Uga2V5IGluIGEgZ2l2ZW4gY29udHJhY3QuAE0BIFJldHVybnMgYE9rKFNvbWUoVmVjPHU4PikpYCBpZiB0aGUgc3RvcmFnZSB2YWx1ZSBleGlzdHMgdW5kZXIgdGhlIGdpdmVuIGtleSBpbiB0aGVhASBzcGVjaWZpZWQgYWNjb3VudCBhbmQgYE9rKE5vbmUpYCBpZiBpdCBkb2Vzbid0LiBJZiB0aGUgYWNjb3VudCBzcGVjaWZpZWQgYnkgdGhlIGFkZHJlc3MJASBkb2Vzbid0IGV4aXN0LCBvciBkb2Vzbid0IGhhdmUgYSBjb250cmFjdCB0aGVuIGBFcnJgIGlzIHJldHVybmVkLgAsdHJhY2VfYmxvY2sIFGJsb2Nr9QkYY29uZmlnIRI9EhgFASBUcmFjZXMgdGhlIGV4ZWN1dGlvbiBvZiBhbiBlbnRpcmUgYmxvY2sgYW5kIHJldHVybnMgY2FsbCB0cmFjZXMuAEEBIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIHRocm91Z2ggYHN0YXRlX2NhbGxgIHRvIHJlcGxheSB0aGUgYmxvY2sgZnJvbSB0aGU4IHBhcmVudCBibG9jay4AyCBTZWUgZXRoLXJwYyBgZGVidWdfdHJhY2VCbG9ja0J5TnVtYmVyYCBmb3IgdXNhZ2UuACB0cmFjZV90eAwUYmxvY2v1CSB0eF9pbmRleDgYY29uZmlnIRKdEhj8IFRyYWNlcyB0aGUgZXhlY3V0aW9uIG9mIGEgc3BlY2lmaWMgdHJhbnNhY3Rpb24gd2l0aGluIGEgYmxvY2suAEEBIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIHRocm91Z2ggYHN0YXRlX2NhbGxgIHRvIHJlcGxheSB0aGUgYmxvY2sgZnJvbSB0aGWMIHBhcmVudCBoYXNoIHVwIHRvIHRoZSB0cmFuc2FjdGlvbi4AwCBTZWUgZXRoLXJwYyBgZGVidWdfdHJhY2VUcmFuc2FjdGlvbmAgZm9yIHVzYWdlLgAodHJhY2VfY2FsbAgIdHitERhjb25maWchEqESDMAgRHJ5IHJ1biBhbmQgcmV0dXJuIHRoZSB0cmFjZSBvZiB0aGUgZ2l2ZW4gY2FsbC4ApCBTZWUgZXRoLXJwYyBgZGVidWdfdHJhY2VDYWxsYCBmb3IgdXNhZ2UuAFh0cmFjZV9jYWxsX3dpdGhfY29uZmlnDAh0eK0RLHRyYWNlcl90eXBlIRIYY29uZmlnpRKhEhQ5ASBEcnkgcnVuIGFuZCByZXR1cm4gdGhlIHRyYWNlIG9mIHRoZSBnaXZlbiBjYWxsIHdpdGggYWRkaXRpb25hbCBjb25maWd1cmF0aW9uLgBBASBMaWtlIFtgU2VsZjo6dHJhY2VfY2FsbGBdLCBidXQgYWNjZXB0cyBhIFtgVHJhY2luZ0NvbmZpZ2BdIHRoYXQgY2FuIGNhcnJ5IHN0YXRlRQEgb3ZlcnJpZGVzIGFuZCBmdXR1cmUgZXh0ZW5zaWJpbGl0eS4gVGhlIGNvbmZpZyBtdXN0IGJlIHRoZSAqKmxhc3QgYXJndW1lbnQqKiBmb3IFASBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSDigJQgc2VlIFtgVHJhY2luZ0NvbmZpZ2BdIGRvY3VtZW50YXRpb24uADBibG9ja19hdXRob3IAOQcE+CBUaGUgYWRkcmVzcyBvZiB0aGUgdmFsaWRhdG9yIHRoYXQgcHJvZHVjZWQgdGhlIGN1cnJlbnQgYmxvY2suABxhZGRyZXNzBChhY2NvdW50X2lkBDkHBMwgR2V0IHRoZSBIMTYwIGFkZHJlc3MgYXNzb2NpYXRlZCB0byB0aGlzIGFjY291bnQgaWQAKGFjY291bnRfaWQEHGFkZHJlc3M5BwQE0CBHZXQgdGhlIGFjY291bnQgaWQgYXNzb2NpYXRlZCB0byB0aGlzIEgxNjAgYWRkcmVzcy4AXHJ1bnRpbWVfcGFsbGV0c19hZGRyZXNzADkHBPQgVGhlIGFkZHJlc3MgdXNlZCB0byBjYWxsIHRoZSBydW50aW1lJ3MgcGFsbGV0cyBkaXNwYXRjaGFibGVzABBjb2RlBBxhZGRyZXNzOQcYBBEBIFRoZSBjb2RlIGF0IHRoZSBzcGVjaWZpZWQgYWRkcmVzcyB0YWtpbmcgcHJlLWNvbXBpbGVzIGludG8gYWNjb3VudC4AVG5ld19iYWxhbmNlX3dpdGhfZHVzdAQcYmFsYW5jZUEHqRIEDQEgQ29uc3RydWN0IHRoZSBuZXcgYmFsYW5jZSBhbmQgZHVzdCBjb21wb25lbnRzIG9mIHRoaXMgRVZNIGJhbGFuY2UuAAS8IFRoZSBBUEkgdXNlZCB0byBkcnktcnVuIGNvbnRyYWN0IGludGVyYWN0aW9ucy4EACDlB7USAA==";
1
+ const binMeta = "bWV0YRC5EgAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lLFJ1bnRpbWVDYWxsAAHYGFN5c3RlbQQAJAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTeXN0ZW0sIFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAQAHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhY2hhaW5TeXN0ZW0sIFJ1bnRpbWU+AAEAJFRpbWVzdGFtcAQAsAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUaW1lc3RhbXAsIFJ1bnRpbWU+AAMANFBhcmFjaGFpbkluZm8EALgByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYWNoYWluSW5mbywgUnVudGltZT4ABAAgUHJlaW1hZ2UEALwBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UHJlaW1hZ2UsIFJ1bnRpbWU+AAUAJFNjaGVkdWxlcgQAxAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTY2hlZHVsZXIsIFJ1bnRpbWU+AAYAKFBhcmFtZXRlcnMEANABvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYW1ldGVycywgUnVudGltZT4ABwBQTXVsdGlCbG9ja01pZ3JhdGlvbnMEACUBAeUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tNaWdyYXRpb25zLCBSdW50aW1lPgAIACBCYWxhbmNlcwQATQEBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QmFsYW5jZXMsIFJ1bnRpbWU+AAoAHFZlc3RpbmcEAGUBAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFZlc3RpbmcsIFJ1bnRpbWU+AA4AGENsYWltcwQAbQEBrQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q2xhaW1zLCBSdW50aW1lPgAPAERDb2xsYXRvclNlbGVjdGlvbgQAkQEB2QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q29sbGF0b3JTZWxlY3Rpb24sIFJ1bnRpbWU+ABUAHFNlc3Npb24EAJUBAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFNlc3Npb24sIFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQAoQEBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8WGNtcFF1ZXVlLCBSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQApQEBwQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UG9sa2Fkb3RYY20sIFJ1bnRpbWU+AB8AKEN1bXVsdXNYY20EAKUDAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEN1bXVsdXNYY20sIFJ1bnRpbWU+ACAARFRvS3VzYW1hWGNtUm91dGVyBACpAwHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUb0t1c2FtYVhjbVJvdXRlciwgUnVudGltZT4AIgAwTWVzc2FnZVF1ZXVlBACtAwHFAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNZXNzYWdlUXVldWUsIFJ1bnRpbWU+ACMAYFNub3dicmlkZ2VTeXN0ZW1Gcm9udGVuZAQAtQMB9QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U25vd2JyaWRnZVN5c3RlbUZyb250ZW5kLCBSdW50aW1lPgAkABxVdGlsaXR5BADJAwGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxVdGlsaXR5LCBSdW50aW1lPgAoACBNdWx0aXNpZwQADQQBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlzaWcsIFJ1bnRpbWU+ACkAFFByb3h5BAAZBAGpAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQcm94eSwgUnVudGltZT4AKgAcSW5kaWNlcwQAJQQBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8SW5kaWNlcywgUnVudGltZT4AKwAYQXNzZXRzBAApBAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBc3NldHMsIFJ1bnRpbWU+ADIAHFVuaXF1ZXMEADUEAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFVuaXF1ZXMsIFJ1bnRpbWU+ADMAEE5mdHMEAE0EAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE5mdHMsIFJ1bnRpbWU+ADQANEZvcmVpZ25Bc3NldHMEAK0EAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEZvcmVpZ25Bc3NldHMsIFJ1bnRpbWU+ADUAKFBvb2xBc3NldHMEAL0EAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBvb2xBc3NldHMsIFJ1bnRpbWU+ADYAPEFzc2V0Q29udmVyc2lvbgQAwQQB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QXNzZXRDb252ZXJzaW9uLCBSdW50aW1lPgA3ACBUcmVhc3VyeQQAyQQBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VHJlYXN1cnksIFJ1bnRpbWU+ADwAQENvbnZpY3Rpb25Wb3RpbmcEANUEAdUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvbnZpY3Rpb25Wb3RpbmcsIFJ1bnRpbWU+AD0AJFJlZmVyZW5kYQQA6QQBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UmVmZXJlbmRhLCBSdW50aW1lPgA+ACRXaGl0ZWxpc3QEAP0EAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFdoaXRlbGlzdCwgUnVudGltZT4AQAAgQm91bnRpZXMEAAEFAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEJvdW50aWVzLCBSdW50aW1lPgBBADRDaGlsZEJvdW50aWVzBAAFBQHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDaGlsZEJvdW50aWVzLCBSdW50aW1lPgBCACRBc3NldFJhdGUEAAkFAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFzc2V0UmF0ZSwgUnVudGltZT4AQwBITXVsdGlBc3NldEJvdW50aWVzBAARBQHdAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUFzc2V0Qm91bnRpZXMsIFJ1bnRpbWU+AEQADERhcAQAFQUBoQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8RGFwLCBSdW50aW1lPgBFAEhTdGF0ZVRyaWVNaWdyYXRpb24EAC0FAd0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN0YXRlVHJpZU1pZ3JhdGlvbiwgUnVudGltZT4ARgA8Tm9taW5hdGlvblBvb2xzBABFBQHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxOb21pbmF0aW9uUG9vbHMsIFJ1bnRpbWU+AFAAJFZvdGVyTGlzdAQAeQUBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Vm90ZXJMaXN0LCBSdW50aW1lPgBSADxTdGFraW5nUmNDbGllbnQEAH0FAdEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN0YWtpbmdSY0NsaWVudCwgUnVudGltZT4AVABITXVsdGlCbG9ja0VsZWN0aW9uBAChBQHdAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUJsb2NrRWxlY3Rpb24sIFJ1bnRpbWU+AFUAaE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyBADVBQH9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUJsb2NrRWxlY3Rpb25WZXJpZmllciwgUnVudGltZT4AVgBoTXVsdGlCbG9ja0VsZWN0aW9uVW5zaWduZWQEANkFAf0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tFbGVjdGlvblVuc2lnbmVkLCBSdW50aW1lPgBXAGBNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQEALEGAfUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZCwgUnVudGltZT4AWAAcU3Rha2luZwQAuQYBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3Rha2luZywgUnVudGltZT4AWQBETWVtYmVyc1N1YnNjcmliZXIEAAUHAdkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1lbWJlcnNTdWJzY3JpYmVyLCBSdW50aW1lPgBhADRBbGlhc0FjY291bnRzBAApBwHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBbGlhc0FjY291bnRzLCBSdW50aW1lPgBiABBQZ2FzBAAxBwGlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQZ2FzLCBSdW50aW1lPgBjABhSZXZpdmUEADUHAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFJldml2ZSwgUnVudGltZT4AZAAwRG90bnNHYXRld2F5BABJBwHFAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxEb3Ruc0dhdGV3YXksIFJ1bnRpbWU+AJgARE9yaWdpblJlc3RyaWN0aW9uBABdBwHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxPcmlnaW5SZXN0cmljdGlvbiwgUnVudGltZT4AmQAQU3VkbwQAZQcBpQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3VkbywgUnVudGltZT4A+wAAJAwwZnJhbWVfc3lzdGVtGHBhbGxldBBDYWxsBARUAAEsGHJlbWFyawQBGHJlbWFyaxgBHFZlYzx1OD4AAAxoTWFrZSBzb21lIG9uLWNoYWluIHJlbWFyay4AiENhbiBiZSBleGVjdXRlZCBieSBldmVyeSBgb3JpZ2luYC44c2V0X2hlYXBfcGFnZXMEARRwYWdlcygBDHU2NAABBPhTZXQgdGhlIG51bWJlciBvZiBwYWdlcyBpbiB0aGUgV2ViQXNzZW1ibHkgZW52aXJvbm1lbnQncyBoZWFwLiBzZXRfY29kZQQBEGNvZGUYARxWZWM8dTg+AAIEZFNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZS5cc2V0X2NvZGVfd2l0aG91dF9jaGVja3MEARBjb2RlGAEcVmVjPHU4PgADEBkBU2V0IHRoZSBuZXcgcnVudGltZSBjb2RlIHdpdGhvdXQgZG9pbmcgYW55IGNoZWNrcyBvZiB0aGUgZ2l2ZW4gYGNvZGVgLgBRAU5vdGUgdGhhdCBydW50aW1lIHVwZ3JhZGVzIHdpbGwgbm90IHJ1biBpZiB0aGlzIGlzIGNhbGxlZCB3aXRoIGEgbm90LWluY3JlYXNpbmcgc3BlYyB2ZXJzaW9uISxzZXRfc3RvcmFnZQQBFGl0ZW1zLAE0VmVjPEtleVZhbHVlPgAEBGhTZXQgc29tZSBpdGVtcyBvZiBzdG9yYWdlLjBraWxsX3N0b3JhZ2UEARBrZXlzNAEgVmVjPEtleT4ABQR0S2lsbCBzb21lIGl0ZW1zIGZyb20gc3RvcmFnZS4sa2lsbF9wcmVmaXgIARhwcmVmaXgYAQxLZXkAARxzdWJrZXlzOAEMdTMyAAYQEQFLaWxsIGFsbCBzdG9yYWdlIGl0ZW1zIHdpdGggYSBrZXkgdGhhdCBzdGFydHMgd2l0aCB0aGUgZ2l2ZW4gcHJlZml4LgA5ASoqTk9URToqKiBXZSByZWx5IG9uIHRoZSBSb290IG9yaWdpbiB0byBwcm92aWRlIHVzIHRoZSBudW1iZXIgb2Ygc3Via2V5cyB1bmRlcj0BdGhlIHByZWZpeCB3ZSBhcmUgcmVtb3ZpbmcgdG8gYWNjdXJhdGVseSBjYWxjdWxhdGUgdGhlIHdlaWdodCBvZiB0aGlzIGZ1bmN0aW9uLkRyZW1hcmtfd2l0aF9ldmVudAQBGHJlbWFyaxgBHFZlYzx1OD4ABwSkTWFrZSBzb21lIG9uLWNoYWluIHJlbWFyayBhbmQgZW1pdCBldmVudC5EYXV0aG9yaXplX3VwZ3JhZGUEASRjb2RlX2hhc2g8ARxUOjpIYXNoAAkQYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgB8VGhpcyBjYWxsIHJlcXVpcmVzIFJvb3Qgb3JpZ2luLoBhdXRob3JpemVfdXBncmFkZV93aXRob3V0X2NoZWNrcwQBJGNvZGVfaGFzaDwBHFQ6Okhhc2gACiBhAUF1dGhvcml6ZSBhbiB1cGdyYWRlIHRvIGEgZ2l2ZW4gYGNvZGVfaGFzaGAgZm9yIHRoZSBydW50aW1lLiBUaGUgcnVudGltZSBjYW4gYmUgc3VwcGxpZWQYbGF0ZXIuAF0BV0FSTklORzogVGhpcyBhdXRob3JpemVzIGFuIHVwZ3JhZGUgdGhhdCB3aWxsIHRha2UgcGxhY2Ugd2l0aG91dCBhbnkgc2FmZXR5IGNoZWNrcywgZm9yWQFleGFtcGxlIHRoYXQgdGhlIHNwZWMgbmFtZSByZW1haW5zIHRoZSBzYW1lIGFuZCB0aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBpbmNyZWFzZXMuIE5vdPByZWNvbW1lbmRlZCBmb3Igbm9ybWFsIHVzZS4gVXNlIGBhdXRob3JpemVfdXBncmFkZWAgaW5zdGVhZC4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi5gYXBwbHlfYXV0aG9yaXplZF91cGdyYWRlBAEQY29kZRgBHFZlYzx1OD4ACyRVAVByb3ZpZGUgdGhlIHByZWltYWdlIChydW50aW1lIGJpbmFyeSkgYGNvZGVgIGZvciBhbiB1cGdyYWRlIHRoYXQgaGFzIGJlZW4gYXV0aG9yaXplZC4ASQFJZiB0aGUgYXV0aG9yaXphdGlvbiByZXF1aXJlZCBhIHZlcnNpb24gY2hlY2ssIHRoaXMgY2FsbCB3aWxsIGVuc3VyZSB0aGUgc3BlYyBuYW1l6HJlbWFpbnMgdW5jaGFuZ2VkIGFuZCB0aGF0IHRoZSBzcGVjIHZlcnNpb24gaGFzIGluY3JlYXNlZC4AWQFEZXBlbmRpbmcgb24gdGhlIHJ1bnRpbWUncyBgT25TZXRDb2RlYCBjb25maWd1cmF0aW9uLCB0aGlzIGZ1bmN0aW9uIG1heSBkaXJlY3RseSBhcHBseREBdGhlIG5ldyBgY29kZWAgaW4gdGhlIHNhbWUgYmxvY2sgb3IgYXR0ZW1wdCB0byBzY2hlZHVsZSB0aGUgdXBncmFkZS4AYEFsbCBvcmlnaW5zIGFyZSBhbGxvd2VkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4oAAAFBgAsAAACMAAwAAAECBgYADQAAAIYADgAAAUFADwIPHByaW1pdGl2ZV90eXBlcxBIMjU2AAAEAAgBIFt1ODsgMzJdAABADHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBBDYWxsBARUAAEITHNldF92YWxpZGF0aW9uX2RhdGEIARBkYXRhRAFoQmFzaWNQYXJhY2hhaW5JbmhlcmVudERhdGEAAVRpbmJvdW5kX21lc3NhZ2VzX2RhdGF8AUxJbmJvdW5kTWVzc2FnZXNEYXRhAAAkgFNldCB0aGUgY3VycmVudCB2YWxpZGF0aW9uIGRhdGEuAEEBVGhpcyBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb26IcGhhc2UgaWYgdGhlIGNhbGwgd2FzIG5vdCBpbnZva2VkLgDQVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYEluaGVyZW50YAAhAUFzIGEgc2lkZSBlZmZlY3QsIHRoaXMgZnVuY3Rpb24gdXBncmFkZXMgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBmdW5jdGlvboRpZiB0aGUgYXBwcm9wcmlhdGUgdGltZSBoYXMgY29tZS5gc3Vkb19zZW5kX3Vwd2FyZF9tZXNzYWdlBAEcbWVzc2FnZRgBNFVwd2FyZE1lc3NhZ2UAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuRAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRoQmFzaWNQYXJhY2hhaW5JbmhlcmVudERhdGEAABABPHZhbGlkYXRpb25fZGF0YUgBXFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhAAFEcmVsYXlfY2hhaW5fc3RhdGVQAVRzcF90cmllOjpTdG9yYWdlUHJvb2YAAWByZWxheV9wYXJlbnRfZGVzY2VuZGFudHNYAUBWZWM8UmVsYXlIZWFkZXI+AAFAY29sbGF0b3JfcGVlcl9pZHQBWE9wdGlvbjxBcHByb3ZlZFBlZXJJZD4AAEgMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlcUGVyc2lzdGVkVmFsaWRhdGlvbkRhdGEIBEgBPAROATgAEAEscGFyZW50X2hlYWRMASBIZWFkRGF0YQABTHJlbGF5X3BhcmVudF9udW1iZXI4AQROAAFkcmVsYXlfcGFyZW50X3N0b3JhZ2Vfcm9vdDwBBEgAATBtYXhfcG92X3NpemU4AQx1MzIAAEwMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMgSGVhZERhdGEAAAQAGAEcVmVjPHU4PgAAUAwcc3BfdHJpZTRzdG9yYWdlX3Byb29mMFN0b3JhZ2VQcm9vZgAABAEodHJpZV9ub2Rlc1QBREJUcmVlU2V0PFZlYzx1OD4+AABUBCBCVHJlZVNldAQEVAEYAAQANAAAAFgAAAJcAFwQKHNwX3J1bnRpbWUcZ2VuZXJpYxhoZWFkZXIYSGVhZGVyCBhOdW1iZXIBOBBIYXNoAAAUASxwYXJlbnRfaGFzaDwBMEhhc2g6Ok91dHB1dAABGG51bWJlcmABGE51bWJlcgABKHN0YXRlX3Jvb3Q8ATBIYXNoOjpPdXRwdXQAATxleHRyaW5zaWNzX3Jvb3Q8ATBIYXNoOjpPdXRwdXQAARhkaWdlc3RkARhEaWdlc3QAAGAAAAY4AGQQKHNwX3J1bnRpbWUcZ2VuZXJpYxhkaWdlc3QYRGlnZXN0AAAEARBsb2dzaAE8VmVjPERpZ2VzdEl0ZW0+AABoAAACbABsEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0KERpZ2VzdEl0ZW0AARQoUHJlUnVudGltZQgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABgAkQ29uc2Vuc3VzCABwAURDb25zZW5zdXNFbmdpbmVJZAAAGAEcVmVjPHU4PgAEABBTZWFsCABwAURDb25zZW5zdXNFbmdpbmVJZAAAGAEcVmVjPHU4PgAFABRPdGhlcgQAGAEcVmVjPHU4PgAAAGRSdW50aW1lRW52aXJvbm1lbnRVcGRhdGVkAAgAAHAAAAMEAAAADAB0BBhPcHRpb24EBFQBeAEIEE5vbmUAAAAQU29tZQQAeAAAAQAAeAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAHwMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50TEluYm91bmRNZXNzYWdlc0RhdGEAAAgBRGRvd253YXJkX21lc3NhZ2VzgAF8QWJyaWRnZWRJbmJvdW5kRG93bndhcmRNZXNzYWdlcwABTGhvcml6b250YWxfbWVzc2FnZXOUAWxBYnJpZGdlZEluYm91bmRIcm1wTWVzc2FnZXMAAIAMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50hEFicmlkZ2VkSW5ib3VuZE1lc3NhZ2VzQ29sbGVjdGlvbgQcTWVzc2FnZQGEAAgBNGZ1bGxfbWVzc2FnZXOIATBWZWM8TWVzc2FnZT4AATxoYXNoZWRfbWVzc2FnZXOMAXxWZWM8TWVzc2FnZTo6Q29tcHJlc3NlZE1lc3NhZ2U+AACECGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNYSW5ib3VuZERvd253YXJkTWVzc2FnZQQsQmxvY2tOdW1iZXIBOAAIARxzZW50X2F0OAEsQmxvY2tOdW1iZXIAAQxtc2cYATxEb3dud2FyZE1lc3NhZ2UAAIgAAAKEAIwAAAKQAJAIlGN1bXVsdXNfcHJpbWl0aXZlc19wYXJhY2hhaW5faW5oZXJlbnQ0SGFzaGVkTWVzc2FnZQAACAEcc2VudF9hdDgBVFJlbGF5Q2hhaW5CbG9ja051bWJlcgABIG1zZ19oYXNoPAE0c3BfY29yZTo6SDI1NgAAlAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnSEQWJyaWRnZWRJbmJvdW5kTWVzc2FnZXNDb2xsZWN0aW9uBBxNZXNzYWdlAZgACAE0ZnVsbF9tZXNzYWdlc6QBMFZlYzxNZXNzYWdlPgABPGhhc2hlZF9tZXNzYWdlc6gBfFZlYzxNZXNzYWdlOjpDb21wcmVzc2VkTWVzc2FnZT4AAJgAAAQInKAAnAx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlcwhJZAAABAA4AQx1MzIAAKAIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0hJbmJvdW5kSHJtcE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEQZGF0YRgBTGFsbG9jOjp2ZWM6OlZlYzx1OD4AAKQAAAKYAKgAAAKsAKwAAAQInJAAsAxAcGFsbGV0X3RpbWVzdGFtcBhwYWxsZXQQQ2FsbAQEVAABBAxzZXQEAQxub3e0ASRUOjpNb21lbnQAAExUU2V0IHRoZSBjdXJyZW50IHRpbWUuAFUBVGhpcyBjYWxsIHNob3VsZCBiZSBpbnZva2VkIGV4YWN0bHkgb25jZSBwZXIgYmxvY2suIEl0IHdpbGwgcGFuaWMgYXQgdGhlIGZpbmFsaXphdGlvbtRwaGFzZSwgaWYgdGhpcyBjYWxsIGhhc24ndCBiZWVuIGludm9rZWQgYnkgdGhhdCB0aW1lLgBBAVRoZSB0aW1lc3RhbXAgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB0aGUgcHJldmlvdXMgb25lIGJ5IHRoZSBhbW91bnQgc3BlY2lmaWVkIGJ5aFtgQ29uZmlnOjpNaW5pbXVtUGVyaW9kYF0uAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfTm9uZV8uAFEBVGhpcyBkaXNwYXRjaCBjbGFzcyBpcyBfTWFuZGF0b3J5XyB0byBlbnN1cmUgaXQgZ2V0cyBleGVjdXRlZCBpbiB0aGUgYmxvY2suIEJlIGF3YXJlUQF0aGF0IGNoYW5naW5nIHRoZSBjb21wbGV4aXR5IG9mIHRoaXMgY2FsbCBjb3VsZCByZXN1bHQgZXhoYXVzdGluZyB0aGUgcmVzb3VyY2VzIGluIGGEYmxvY2sgdG8gZXhlY3V0ZSBhbnkgb3RoZXIgY2FsbHMuADQjIyBDb21wbGV4aXR5MQEtIGBPKDEpYCAoTm90ZSB0aGF0IGltcGxlbWVudGF0aW9ucyBvZiBgT25UaW1lc3RhbXBTZXRgIG11c3QgYWxzbyBiZSBgTygxKWApVQEtIDEgc3RvcmFnZSByZWFkIGFuZCAxIHN0b3JhZ2UgbXV0YXRpb24gKGNvZGVjIGBPKDEpYCBiZWNhdXNlIG9mIGBEaWRVcGRhdGU6OnRha2VgIGluQCAgYG9uX2ZpbmFsaXplYCnULSAxIGV2ZW50IGhhbmRsZXIgYG9uX3RpbWVzdGFtcF9zZXRgLiBNdXN0IGJlIGBPKDEpYC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMutAAABigAuAxYc3RhZ2luZ19wYXJhY2hhaW5faW5mbxhwYWxsZXQQQ2FsbAQEVAABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy68DDxwYWxsZXRfcHJlaW1hZ2UYcGFsbGV0EENhbGwEBFQAARQ0bm90ZV9wcmVpbWFnZQQBFGJ5dGVzGAEcVmVjPHU4PgAAEHRSZWdpc3RlciBhIHByZWltYWdlIG9uLWNoYWluLgBVAUlmIHRoZSBwcmVpbWFnZSB3YXMgcHJldmlvdXNseSByZXF1ZXN0ZWQsIG5vIGZlZXMgb3IgZGVwb3NpdHMgYXJlIHRha2VuIGZvciBwcm92aWRpbmdVAXRoZSBwcmVpbWFnZS4gT3RoZXJ3aXNlLCBhIGRlcG9zaXQgaXMgdGFrZW4gcHJvcG9ydGlvbmFsIHRvIHRoZSBzaXplIG9mIHRoZSBwcmVpbWFnZS48dW5ub3RlX3ByZWltYWdlBAEQaGFzaDwBHFQ6Okhhc2gAARjcQ2xlYXIgYW4gdW5yZXF1ZXN0ZWQgcHJlaW1hZ2UgZnJvbSB0aGUgcnVudGltZSBzdG9yYWdlLgD8SWYgYGxlbmAgaXMgcHJvdmlkZWQsIHRoZW4gaXQgd2lsbCBiZSBhIG11Y2ggY2hlYXBlciBvcGVyYXRpb24uAAEBLSBgaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBwcmVpbWFnZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHN0b3JlLrgtIGBsZW5gOiBUaGUgbGVuZ3RoIG9mIHRoZSBwcmVpbWFnZSBvZiBgaGFzaGAuQHJlcXVlc3RfcHJlaW1hZ2UEARBoYXNoPAEcVDo6SGFzaAACEEEBUmVxdWVzdCBhIHByZWltYWdlIGJlIHVwbG9hZGVkIHRvIHRoZSBjaGFpbiB3aXRob3V0IHBheWluZyBhbnkgZmVlcyBvciBkZXBvc2l0cy4AVQFJZiB0aGUgcHJlaW1hZ2UgcmVxdWVzdHMgaGFzIGFscmVhZHkgYmVlbiBwcm92aWRlZCBvbi1jaGFpbiwgd2UgdW5yZXNlcnZlIGFueSBkZXBvc2l0OQFhIHVzZXIgbWF5IGhhdmUgcGFpZCwgYW5kIHRha2UgdGhlIGNvbnRyb2wgb2YgdGhlIHByZWltYWdlIG91dCBvZiB0aGVpciBoYW5kcy5IdW5yZXF1ZXN0X3ByZWltYWdlBAEQaGFzaDwBHFQ6Okhhc2gAAwy8Q2xlYXIgYSBwcmV2aW91c2x5IG1hZGUgcmVxdWVzdCBmb3IgYSBwcmVpbWFnZS4ALQFOT1RFOiBUSElTIE1VU1QgTk9UIEJFIENBTExFRCBPTiBgaGFzaGAgTU9SRSBUSU1FUyBUSEFOIGByZXF1ZXN0X3ByZWltYWdlYC44ZW5zdXJlX3VwZGF0ZWQEARhoYXNoZXPAATBWZWM8VDo6SGFzaD4ABAy8RW5zdXJlIHRoYXQgdGhlIGJ1bGsgb2YgcHJlLWltYWdlcyBpcyB1cGdyYWRlZC4APQFUaGUgY2FsbGVyIHBheXMgbm8gZmVlIGlmIGF0IGxlYXN0IDkwJSBvZiBwcmUtaW1hZ2VzIHdlcmUgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsAAAAI8AMQMQHBhbGxldF9zY2hlZHVsZXIYcGFsbGV0EENhbGwEBFQAASggc2NoZWR1bGUQARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4AAThtYXliZV9wZXJpb2RpY8gBrE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASBwcmlvcml0eQwBSHNjaGVkdWxlOjpQcmlvcml0eQABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAEcEFub255bW91c2x5IHNjaGVkdWxlIGEgdGFzay4YY2FuY2VsCAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAEUaW5kZXg4AQx1MzIAARBhAUNhbmNlbCBhIHNjaGVkdWxlZCB0YXNrIChuYW1lZCBvciBhbm9ueW1vdXMpLCBieSBwcm92aWRpbmcgdGhlIGJsb2NrIGl0IGlzIHNjaGVkdWxlZCBmb3IZAWV4ZWN1dGlvbiBpbiwgYXMgd2VsbCBhcyB0aGUgaW5kZXggb2YgdGhlIHRhc2sgaW4gdGhhdCBibG9jaydzIGFnZW5kYS4ANQFJbiB0aGUgY2FzZSBvZiBhIG5hbWVkIHRhc2ssIGl0IHdpbGwgcmVtb3ZlIGl0IGZyb20gdGhlIGxvb2t1cCB0YWJsZSBhcyB3ZWxsLjhzY2hlZHVsZV9uYW1lZBQBCGlkCAEgVGFza05hbWUAARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4AAThtYXliZV9wZXJpb2RpY8gBrE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASBwcmlvcml0eQwBSHNjaGVkdWxlOjpQcmlvcml0eQABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAIEWFNjaGVkdWxlIGEgbmFtZWQgdGFzay4wY2FuY2VsX25hbWVkBAEIaWQIASBUYXNrTmFtZQADBHhDYW5jZWwgYSBuYW1lZCBzY2hlZHVsZWQgdGFzay44c2NoZWR1bGVfYWZ0ZXIQARRhZnRlcjgBREJsb2NrTnVtYmVyRm9yPFQ+AAE4bWF5YmVfcGVyaW9kaWPIAaxPcHRpb248c2NoZWR1bGU6OlBlcmlvZDxCbG9ja051bWJlckZvcjxUPj4+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAEBKhBbm9ueW1vdXNseSBzY2hlZHVsZSBhIHRhc2sgYWZ0ZXIgYSBkZWxheS5Qc2NoZWR1bGVfbmFtZWRfYWZ0ZXIUAQhpZAgBIFRhc2tOYW1lAAEUYWZ0ZXI4AURCbG9ja051bWJlckZvcjxUPgABOG1heWJlX3BlcmlvZGljyAGsT3B0aW9uPHNjaGVkdWxlOjpQZXJpb2Q8QmxvY2tOdW1iZXJGb3I8VD4+PgABIHByaW9yaXR5DAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABQSQU2NoZWR1bGUgYSBuYW1lZCB0YXNrIGFmdGVyIGEgZGVsYXkuJHNldF9yZXRyeQwBEHRhc2vMAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AARxyZXRyaWVzDAEIdTgAARhwZXJpb2Q4AURCbG9ja051bWJlckZvcjxUPgAGOFkBU2V0IGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3IgYSB0YXNrIHNvIHRoYXQsIGluIGNhc2UgaXRzIHNjaGVkdWxlZCBydW4gZmFpbHMsIGl0IHdpbGxVAWJlIHJldHJpZWQgYWZ0ZXIgYHBlcmlvZGAgYmxvY2tzLCBmb3IgYSB0b3RhbCBhbW91bnQgb2YgYHJldHJpZXNgIHJldHJpZXMgb3IgdW50aWwgaXQkc3VjY2VlZHMuAFUBVGFza3Mgd2hpY2ggbmVlZCB0byBiZSBzY2hlZHVsZWQgZm9yIGEgcmV0cnkgYXJlIHN0aWxsIHN1YmplY3QgdG8gd2VpZ2h0IG1ldGVyaW5nIGFuZFEBYWdlbmRhIHNwYWNlLCBzYW1lIGFzIGEgcmVndWxhciB0YXNrLiBJZiBhIHBlcmlvZGljIHRhc2sgZmFpbHMsIGl0IHdpbGwgYmUgc2NoZWR1bGVkkG5vcm1hbGx5IHdoaWxlIHRoZSB0YXNrIGlzIHJldHJ5aW5nLgBRAVRhc2tzIHNjaGVkdWxlZCBhcyBhIHJlc3VsdCBvZiBhIHJldHJ5IGZvciBhIHBlcmlvZGljIHRhc2sgYXJlIHVubmFtZWQsIG5vbi1wZXJpb2RpYz0BY2xvbmVzIG9mIHRoZSBvcmlnaW5hbCB0YXNrLiBUaGVpciByZXRyeSBjb25maWd1cmF0aW9uIHdpbGwgYmUgZGVyaXZlZCBmcm9tIHRoZU0Bb3JpZ2luYWwgdGFzaydzIGNvbmZpZ3VyYXRpb24sIGJ1dCB3aWxsIGhhdmUgYSBsb3dlciB2YWx1ZSBmb3IgYHJlbWFpbmluZ2AgdGhhbiB0aGVkb3JpZ2luYWwgYHRvdGFsX3JldHJpZXNgLgAtAVRoaXMgY2FsbCAqKmNhbm5vdCoqIGJlIHVzZWQgdG8gc2V0IGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3IgYSBuYW1lZCB0YXNrLjxzZXRfcmV0cnlfbmFtZWQMAQhpZAgBIFRhc2tOYW1lAAEccmV0cmllcwwBCHU4AAEYcGVyaW9kOAFEQmxvY2tOdW1iZXJGb3I8VD4ABzhdAVNldCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIGEgbmFtZWQgdGFzayBzbyB0aGF0LCBpbiBjYXNlIGl0cyBzY2hlZHVsZWQgcnVuIGZhaWxzLCBpdF0Bd2lsbCBiZSByZXRyaWVkIGFmdGVyIGBwZXJpb2RgIGJsb2NrcywgZm9yIGEgdG90YWwgYW1vdW50IG9mIGByZXRyaWVzYCByZXRyaWVzIG9yIHVudGlsMGl0IHN1Y2NlZWRzLgBVAVRhc2tzIHdoaWNoIG5lZWQgdG8gYmUgc2NoZWR1bGVkIGZvciBhIHJldHJ5IGFyZSBzdGlsbCBzdWJqZWN0IHRvIHdlaWdodCBtZXRlcmluZyBhbmRRAWFnZW5kYSBzcGFjZSwgc2FtZSBhcyBhIHJlZ3VsYXIgdGFzay4gSWYgYSBwZXJpb2RpYyB0YXNrIGZhaWxzLCBpdCB3aWxsIGJlIHNjaGVkdWxlZJBub3JtYWxseSB3aGlsZSB0aGUgdGFzayBpcyByZXRyeWluZy4AUQFUYXNrcyBzY2hlZHVsZWQgYXMgYSByZXN1bHQgb2YgYSByZXRyeSBmb3IgYSBwZXJpb2RpYyB0YXNrIGFyZSB1bm5hbWVkLCBub24tcGVyaW9kaWM9AWNsb25lcyBvZiB0aGUgb3JpZ2luYWwgdGFzay4gVGhlaXIgcmV0cnkgY29uZmlndXJhdGlvbiB3aWxsIGJlIGRlcml2ZWQgZnJvbSB0aGVNAW9yaWdpbmFsIHRhc2sncyBjb25maWd1cmF0aW9uLCBidXQgd2lsbCBoYXZlIGEgbG93ZXIgdmFsdWUgZm9yIGByZW1haW5pbmdgIHRoYW4gdGhlZG9yaWdpbmFsIGB0b3RhbF9yZXRyaWVzYC4ADQFUaGlzIGlzIHRoZSBvbmx5IHdheSB0byBzZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBhIG5hbWVkIHRhc2suMGNhbmNlbF9yZXRyeQQBEHRhc2vMAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4ACASoUmVtb3ZlcyB0aGUgcmV0cnkgY29uZmlndXJhdGlvbiBvZiBhIHRhc2suSGNhbmNlbF9yZXRyeV9uYW1lZAQBCGlkCAEgVGFza05hbWUACQS8Q2FuY2VsIHRoZSByZXRyeSBjb25maWd1cmF0aW9uIG9mIGEgbmFtZWQgdGFzay4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuyAQYT3B0aW9uBARUAcwBCBBOb25lAAAAEFNvbWUEAMwAAAEAAMwAAAQIODgA0AxEcGFsbGV0X3BhcmFtZXRlcnMYcGFsbGV0EENhbGwEBFQAAQQ0c2V0X3BhcmFtZXRlcgQBJGtleV92YWx1ZdQBUFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzAAAQdFNldCB0aGUgdmFsdWUgb2YgYSBwYXJhbWV0ZXIuAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBgQWRtaW5PcmlnaW5gIGZvciB0aGUgZ2l2ZW4gYGtleWAuIFZhbHVlcyBiZYhkZWxldGVkIGJ5IHNldHRpbmcgdGhlbSB0byBgTm9uZWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLtQIcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWVEUnVudGltZVBhcmFtZXRlcnMAAQw8U3Rha2luZ0VsZWN0aW9uBADYAbBkeW5hbWljX3BhcmFtczo6c3Rha2luZ19lbGVjdGlvbjo6UGFyYW1ldGVycwAAACRTY2hlZHVsZXIEAAEBAZRkeW5hbWljX3BhcmFtczo6c2NoZWR1bGVyOjpQYXJhbWV0ZXJzAAEAME1lc3NhZ2VRdWV1ZQQAFQEBpGR5bmFtaWNfcGFyYW1zOjptZXNzYWdlX3F1ZXVlOjpQYXJhbWV0ZXJzAAIAANgQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbihQYXJhbWV0ZXJzAAEcLFNpZ25lZFBoYXNlCADcASxTaWduZWRQaGFzZQAA4AFMT3B0aW9uPEJsb2NrTnVtYmVyPgAAAFBNYXhTaWduZWRTdWJtaXNzaW9ucwgA5AFQTWF4U2lnbmVkU3VibWlzc2lvbnMAAOABLE9wdGlvbjx1MzI+AAEANFVuc2lnbmVkUGhhc2UIAOgBNFVuc2lnbmVkUGhhc2UAAOABTE9wdGlvbjxCbG9ja051bWJlcj4AAgAoTWluZXJQYWdlcwgA7AEoTWluZXJQYWdlcwAA4AEsT3B0aW9uPHUzMj4AAwBETWF4RWxlY3RpbmdWb3RlcnMIAPABRE1heEVsZWN0aW5nVm90ZXJzAADgASxPcHRpb248dTMyPgAEAFhUYXJnZXRTbmFwc2hvdFBlckJsb2NrCAD0AVhUYXJnZXRTbmFwc2hvdFBlckJsb2NrAADgASxPcHRpb248dTMyPgAFADhNYXhFcmFEdXJhdGlvbggA+AE4TWF4RXJhRHVyYXRpb24AAPwBLE9wdGlvbjx1NjQ+AAYAANwQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbixTaWduZWRQaGFzZQAAAADgBBhPcHRpb24EBFQBOAEIEE5vbmUAAAAQU29tZQQAOAAAAQAA5BBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uUE1heFNpZ25lZFN1Ym1pc3Npb25zAAAAAOgQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbjRVbnNpZ25lZFBoYXNlAAAAAOwQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbihNaW5lclBhZ2VzAAAAAPAQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbkRNYXhFbGVjdGluZ1ZvdGVycwAAAAD0EHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb25YVGFyZ2V0U25hcHNob3RQZXJCbG9jawAAAAD4EHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb244TWF4RXJhRHVyYXRpb24AAAAA/AQYT3B0aW9uBARUASgBCBBOb25lAAAAEFNvbWUEACgAAAEAAAEBEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zJHNjaGVkdWxlcihQYXJhbWV0ZXJzAAEIUE1heFNjaGVkdWxlZFBlckJsb2NrCAAFAQFQTWF4U2NoZWR1bGVkUGVyQmxvY2sAAOABLE9wdGlvbjx1MzI+AAAANE1heGltdW1XZWlnaHQIAAkBATRNYXhpbXVtV2VpZ2h0AAANAQE4T3B0aW9uPFdlaWdodD4AAQAABQEQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMkc2NoZWR1bGVyUE1heFNjaGVkdWxlZFBlckJsb2NrAAAAAAkBEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zJHNjaGVkdWxlcjRNYXhpbXVtV2VpZ2h0AAAAAA0BBBhPcHRpb24EBFQBEQEBCBBOb25lAAAAEFNvbWUEABEBAAABAAARAQwoc3Bfd2VpZ2h0cyR3ZWlnaHRfdjIYV2VpZ2h0AAAIASByZWZfdGltZbQBDHU2NAABKHByb29mX3NpemW0AQx1NjQAABUBEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zNG1lc3NhZ2VfcXVldWUoUGFyYW1ldGVycwABCDxNYXhPbkluaXRXZWlnaHQIABkBATxNYXhPbkluaXRXZWlnaHQAAB0BAVhPcHRpb248T3B0aW9uPFdlaWdodD4+AAAAPE1heE9uSWRsZVdlaWdodAgAIQEBPE1heE9uSWRsZVdlaWdodAAAHQEBWE9wdGlvbjxPcHRpb248V2VpZ2h0Pj4AAQAAGQEQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM0bWVzc2FnZV9xdWV1ZTxNYXhPbkluaXRXZWlnaHQAAAAAHQEEGE9wdGlvbgQEVAENAQEIEE5vbmUAAAAQU29tZQQADQEAAAEAACEBEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zNG1lc3NhZ2VfcXVldWU8TWF4T25JZGxlV2VpZ2h0AAAAACUBDERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQQQ2FsbAQEVAABEEBmb3JjZV9zZXRfY3Vyc29yBAEYY3Vyc29yKQEBTE9wdGlvbjxDdXJzb3JPZjxUPj4AABRdAUFsbG93cyByb290IHRvIHNldCBhIGN1cnNvciB0byBmb3JjZWZ1bGx5IHN0YXJ0LCBzdG9wIG9yIGZvcndhcmQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgBJAVNob3VsZCBub3JtYWxseSBub3QgYmUgbmVlZGVkIGFuZCBpcyBvbmx5IGluIHBsYWNlIGFzIGVtZXJnZW5jeSBtZWFzdXJlLiBOb3RlIHRoYXQFAXJlc3RhcnRpbmcgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzIGluIHRoaXMgbWFubmVyIHdpbGwgbm90IGNhbGwgdGhlLQFbYE1pZ3JhdGlvblN0YXR1c0hhbmRsZXI6OnN0YXJ0ZWRgXSBob29rIG9yIGVtaXQgYW4gYFVwZ3JhZGVTdGFydGVkYCBldmVudC5cZm9yY2Vfc2V0X2FjdGl2ZV9jdXJzb3IMARRpbmRleDgBDHUzMgABMGlubmVyX2N1cnNvcjkBAVhPcHRpb248UmF3Q3Vyc29yT2Y8VD4+AAEoc3RhcnRlZF9hdOABZE9wdGlvbjxCbG9ja051bWJlckZvcjxUPj4AARhZAUFsbG93cyByb290IHRvIHNldCBhbiBhY3RpdmUgY3Vyc29yIHRvIGZvcmNlZnVsbHkgc3RhcnQvZm9yd2FyZCB0aGUgbWlncmF0aW9uIHByb2Nlc3MuAEUBVGhpcyBpcyBhbiBlZGdlLWNhc2UgdmVyc2lvbiBvZiBbYFNlbGY6OmZvcmNlX3NldF9jdXJzb3JgXSB0aGF0IGFsbG93cyB0byBzZXQgdGhlYQFgc3RhcnRlZF9hdGAgdmFsdWUgdG8gdGhlIG5leHQgYmxvY2sgbnVtYmVyLiBPdGhlcndpc2UgdGhpcyB3b3VsZCBub3QgYmUgcG9zc2libGUsIHNpbmNlRQFgZm9yY2Vfc2V0X2N1cnNvcmAgdGFrZXMgYW4gYWJzb2x1dGUgYmxvY2sgbnVtYmVyLiBTZXR0aW5nIGBzdGFydGVkX2F0YCB0byBgTm9uZWABAWluZGljYXRlcyB0aGF0IHRoZSBjdXJyZW50IGJsb2NrIG51bWJlciBwbHVzIG9uZSBzaG91bGQgYmUgdXNlZC5IZm9yY2Vfb25ib2FyZF9tYm1zAAIQoEZvcmNlcyB0aGUgb25ib2FyZGluZyBvZiB0aGUgbWlncmF0aW9ucy4AXQFUaGlzIHByb2Nlc3MgaGFwcGVucyBhdXRvbWF0aWNhbGx5IG9uIGEgcnVudGltZSB1cGdyYWRlLiBJdCBpcyBpbiBwbGFjZSBhcyBhbiBlbWVyZ2VuY3n8bWVhc3VyZW1lbnQuIFRoZSBjdXJzb3IgbmVlZHMgdG8gYmUgYE5vbmVgIGZvciB0aGlzIHRvIHN1Y2NlZWQuOGNsZWFyX2hpc3RvcmljBAEgc2VsZWN0b3I9AQGgSGlzdG9yaWNDbGVhbnVwU2VsZWN0b3I8SWRlbnRpZmllck9mPFQ+PgADFGhDbGVhcnMgdGhlIGBIaXN0b3JpY2Agc2V0LgANAWBtYXBfY3Vyc29yYCBtdXN0IGJlIHNldCB0byB0aGUgbGFzdCB2YWx1ZSB0aGF0IHdhcyByZXR1cm5lZCBieSB0aGVdAWBIaXN0b3JpY0NsZWFyZWRgIGV2ZW50LiBUaGUgZmlyc3QgdGltZSBgTm9uZWAgY2FuIGJlIHVzZWQuIGBsaW1pdGAgbXVzdCBiZSBjaG9zZW4gaW4gYah3YXkgdGhhdCB3aWxsIHJlc3VsdCBpbiBhIHNlbnNpYmxlIHdlaWdodC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKQEEGE9wdGlvbgQEVAEtAQEIEE5vbmUAAAAQU29tZQQALQEAAAEAAC0BCERwYWxsZXRfbWlncmF0aW9uczxNaWdyYXRpb25DdXJzb3IIGEN1cnNvcgExASxCbG9ja051bWJlcgE4AQgYQWN0aXZlBAA1AQGEQWN0aXZlQ3Vyc29yPEN1cnNvciwgQmxvY2tOdW1iZXI+AAAAFFN0dWNrAAEAADEBDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAANQEIRHBhbGxldF9taWdyYXRpb25zMEFjdGl2ZUN1cnNvcggYQ3Vyc29yATEBLEJsb2NrTnVtYmVyATgADAEUaW5kZXg4AQx1MzIAATBpbm5lcl9jdXJzb3I5AQE4T3B0aW9uPEN1cnNvcj4AAShzdGFydGVkX2F0OAEsQmxvY2tOdW1iZXIAADkBBBhPcHRpb24EBFQBMQEBCBBOb25lAAAAEFNvbWUEADEBAAABAAA9AQhEcGFsbGV0X21pZ3JhdGlvbnNcSGlzdG9yaWNDbGVhbnVwU2VsZWN0b3IECElkAUEBAQggU3BlY2lmaWMEAEUBARxWZWM8SWQ+AAAAIFdpbGRjYXJkCAEUbGltaXTgASxPcHRpb248dTMyPgABPHByZXZpb3VzX2N1cnNvckkBATxPcHRpb248VmVjPHU4Pj4AAQAAQQEMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABFAQAAAkEBAEkBBBhPcHRpb24EBFQBGAEIEE5vbmUAAAAQU29tZQQAGAAAAQAATQEMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQQQ2FsbAgEVAAESQABJFB0cmFuc2Zlcl9hbGxvd19kZWF0aAgBEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVlUQEBKFQ6OkJhbGFuY2UAABzUVHJhbnNmZXIgc29tZSBsaXF1aWQgZnJlZSBiYWxhbmNlIHRvIGFub3RoZXIgYWNjb3VudC4ANQFgdHJhbnNmZXJfYWxsb3dfZGVhdGhgIHdpbGwgc2V0IHRoZSBgRnJlZUJhbGFuY2VgIG9mIHRoZSBzZW5kZXIgYW5kIHJlY2VpdmVyLhEBSWYgdGhlIHNlbmRlcidzIGFjY291bnQgaXMgYmVsb3cgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYXMgYSByZXN1bHSwb2YgdGhlIHRyYW5zZmVyLCB0aGUgYWNjb3VudCB3aWxsIGJlIHJlYXBlZC4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgdHJhbnNhY3Rvci44Zm9yY2VfdHJhbnNmZXIMARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVlUQEBKFQ6OkJhbGFuY2UAAghhAUV4YWN0bHkgYXMgYHRyYW5zZmVyX2FsbG93X2RlYXRoYCwgZXhjZXB0IHRoZSBvcmlnaW4gbXVzdCBiZSByb290IGFuZCB0aGUgc291cmNlIGFjY291bnREbWF5IGJlIHNwZWNpZmllZC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQgBEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVlUQEBKFQ6OkJhbGFuY2UAAxhZAVNhbWUgYXMgdGhlIFtgdHJhbnNmZXJfYWxsb3dfZGVhdGhgXSBjYWxsLCBidXQgd2l0aCBhIGNoZWNrIHRoYXQgdGhlIHRyYW5zZmVyIHdpbGwgbm90YGtpbGwgdGhlIG9yaWdpbiBhY2NvdW50LgDoOTklIG9mIHRoZSB0aW1lIHlvdSB3YW50IFtgdHJhbnNmZXJfYWxsb3dfZGVhdGhgXSBpbnN0ZWFkLgDwW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdOiBzdHJ1Y3QuUGFsbGV0Lmh0bWwjbWV0aG9kLnRyYW5zZmVyMHRyYW5zZmVyX2FsbAgBEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGtlZXBfYWxpdmVZAQEQYm9vbAAEPAUBVHJhbnNmZXIgdGhlIGVudGlyZSB0cmFuc2ZlcmFibGUgYmFsYW5jZSBmcm9tIHRoZSBjYWxsZXIgYWNjb3VudC4AWQFOT1RFOiBUaGlzIGZ1bmN0aW9uIG9ubHkgYXR0ZW1wdHMgdG8gdHJhbnNmZXIgX3RyYW5zZmVyYWJsZV8gYmFsYW5jZXMuIFRoaXMgbWVhbnMgdGhhdGEBYW55IGxvY2tlZCwgcmVzZXJ2ZWQsIG9yIGV4aXN0ZW50aWFsIGRlcG9zaXRzICh3aGVuIGBrZWVwX2FsaXZlYCBpcyBgdHJ1ZWApLCB3aWxsIG5vdCBiZV0BdHJhbnNmZXJyZWQgYnkgdGhpcyBmdW5jdGlvbi4gVG8gZW5zdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXN1bHRzIGluIGEga2lsbGVkIGFjY291bnQsRQF5b3UgbWlnaHQgbmVlZCB0byBwcmVwYXJlIHRoZSBhY2NvdW50IGJ5IHJlbW92aW5nIGFueSByZWZlcmVuY2UgY291bnRlcnMsIHN0b3JhZ2VAZGVwb3NpdHMsIGV0Yy4uLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQuAKAtIGBkZXN0YDogVGhlIHJlY2lwaWVudCBvZiB0aGUgdHJhbnNmZXIuWQEtIGBrZWVwX2FsaXZlYDogQSBib29sZWFuIHRvIGRldGVybWluZSBpZiB0aGUgYHRyYW5zZmVyX2FsbGAgb3BlcmF0aW9uIHNob3VsZCBzZW5kIGFsbE0BICBvZiB0aGUgZnVuZHMgdGhlIGFjY291bnQgaGFzLCBjYXVzaW5nIHRoZSBzZW5kZXIgYWNjb3VudCB0byBiZSBraWxsZWQgKGZhbHNlKSwgb3JZASAgdHJhbnNmZXIgZXZlcnl0aGluZyBleGNlcHQgYXQgbGVhc3QgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQsIHdoaWNoIHdpbGwgZ3VhcmFudGVlIHRvnCAga2VlcCB0aGUgc2VuZGVyIGFjY291bnQgYWxpdmUgKHRydWUpLjxmb3JjZV91bnJlc2VydmUIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAAUMsFVucmVzZXJ2ZSBzb21lIGJhbGFuY2UgZnJvbSBhIHVzZXIgYnkgZm9yY2UuAGxDYW4gb25seSBiZSBjYWxsZWQgYnkgUk9PVC5AdXBncmFkZV9hY2NvdW50cwQBDHdob10BAURWZWM8VDo6QWNjb3VudElkPgAGIHBVcGdyYWRlIGEgc3BlY2lmaWVkIGFjY291bnQuAHQtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1cGdyYWRlZC4AVQFUaGlzIHdpbGwgd2FpdmUgdGhlIHRyYW5zYWN0aW9uIGZlZSBpZiBhdCBsZWFzdCBhbGwgYnV0IDEwJSBvZiB0aGUgYWNjb3VudHMgbmVlZGVkIHRvQQFiZSB1cGdyYWRlZC4gKFdlIGxldCBzb21lIG5vdCBoYXZlIHRvIGJlIHVwZ3JhZGVkIGp1c3QgaW4gb3JkZXIgdG8gYWxsb3cgZm9yIHRoZVhwb3NzaWJpbGl0eSBvZiBjaHVybikuRGZvcmNlX3NldF9iYWxhbmNlCAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBuZXdfZnJlZVEBAShUOjpCYWxhbmNlAAgMrFNldCB0aGUgcmVndWxhciBiYWxhbmNlIG9mIGEgZ2l2ZW4gYWNjb3VudC4AsFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBpcyBgcm9vdGAubGZvcmNlX2FkanVzdF90b3RhbF9pc3N1YW5jZQgBJGRpcmVjdGlvbmEBAUxBZGp1c3RtZW50RGlyZWN0aW9uAAEUZGVsdGFRAQEoVDo6QmFsYW5jZQAJFLhBZGp1c3QgdGhlIHRvdGFsIGlzc3VhbmNlIGluIGEgc2F0dXJhdGluZyB3YXkuAPxDYW4gb25seSBiZSBjYWxsZWQgYnkgcm9vdCBhbmQgYWx3YXlzIG5lZWRzIGEgcG9zaXRpdmUgYGRlbHRhYC4AJCMgRXhhbXBsZRBidXJuCAEUdmFsdWVRAQEoVDo6QmFsYW5jZQABKGtlZXBfYWxpdmVZAQEQYm9vbAAKHPxCdXJuIHRoZSBzcGVjaWZpZWQgbGlxdWlkIGZyZWUgYmFsYW5jZSBmcm9tIHRoZSBvcmlnaW4gYWNjb3VudC4AJQFJZiB0aGUgb3JpZ2luJ3MgYWNjb3VudCBlbmRzIHVwIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0IGFzIGEgcmVzdWx0CQFvZiB0aGUgYnVybiBhbmQgYGtlZXBfYWxpdmVgIGlzIGZhbHNlLCB0aGUgYWNjb3VudCB3aWxsIGJlIHJlYXBlZC4AUQFVbmxpa2Ugc2VuZGluZyBmdW5kcyB0byBhIF9idXJuXyBhZGRyZXNzLCB3aGljaCBtZXJlbHkgbWFrZXMgdGhlIGZ1bmRzIGluYWNjZXNzaWJsZSwhAXRoaXMgYGJ1cm5gIG9wZXJhdGlvbiB3aWxsIHJlZHVjZSB0b3RhbCBpc3N1YW5jZSBieSB0aGUgYW1vdW50IF9idXJuZWRfLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5RAQAABlUBAFUBAAAFBwBZAQAABQAAXQEAAAIEAGEBDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXNMQWRqdXN0bWVudERpcmVjdGlvbgABCCBJbmNyZWFzZQAAACBEZWNyZWFzZQABAABlAQw4cGFsbGV0X3Zlc3RpbmcYcGFsbGV0EENhbGwEBFQAARgQdmVzdAAAJLhVbmxvY2sgYW55IHZlc3RlZCBmdW5kcyBvZiB0aGUgc2VuZGVyIGFjY291bnQuAF0BVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIGZ1bmRzIHN0aWxsZGxvY2tlZCB1bmRlciB0aGlzIHBhbGxldC4A0EVtaXRzIGVpdGhlciBgVmVzdGluZ0NvbXBsZXRlZGAgb3IgYFZlc3RpbmdVcGRhdGVkYC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuKHZlc3Rfb3RoZXIEARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLLhVbmxvY2sgYW55IHZlc3RlZCBmdW5kcyBvZiBhIGB0YXJnZXRgIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AUQEtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB3aG9zZSB2ZXN0ZWQgZnVuZHMgc2hvdWxkIGJlIHVubG9ja2VkLiBNdXN0IGhhdmUgZnVuZHMgc3RpbGxkbG9ja2VkIHVuZGVyIHRoaXMgcGFsbGV0LgDQRW1pdHMgZWl0aGVyIGBWZXN0aW5nQ29tcGxldGVkYCBvciBgVmVzdGluZ1VwZGF0ZWRgLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC48dmVzdGVkX3RyYW5zZmVyCAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBzY2hlZHVsZWkBAbBWZXN0aW5nSW5mbzxCYWxhbmNlT2Y8VD4sIEJsb2NrTnVtYmVyRm9yPFQ+PgACNGRDcmVhdGUgYSB2ZXN0ZWQgdHJhbnNmZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AzC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHJlY2VpdmluZyB0aGUgdmVzdGVkIGZ1bmRzLvAtIGBzY2hlZHVsZWA6IFRoZSB2ZXN0aW5nIHNjaGVkdWxlIGF0dGFjaGVkIHRvIHRoZSB0cmFuc2Zlci4AXEVtaXRzIGBWZXN0aW5nQ3JlYXRlZGAuAPxOT1RFOiBUaGlzIHdpbGwgdW5sb2NrIGFsbCBzY2hlZHVsZXMgdGhyb3VnaCB0aGUgY3VycmVudCBibG9jay4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuVGZvcmNlX3Zlc3RlZF90cmFuc2ZlcgwBGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBzY2hlZHVsZWkBAbBWZXN0aW5nSW5mbzxCYWxhbmNlT2Y8VD4sIEJsb2NrTnVtYmVyRm9yPFQ+PgADOGBGb3JjZSBhIHZlc3RlZCB0cmFuc2Zlci4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4A6C0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHdob3NlIGZ1bmRzIHNob3VsZCBiZSB0cmFuc2ZlcnJlZC4RAS0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRoYXQgc2hvdWxkIGJlIHRyYW5zZmVycmVkIHRoZSB2ZXN0ZWQgZnVuZHMu8C0gYHNjaGVkdWxlYDogVGhlIHZlc3Rpbmcgc2NoZWR1bGUgYXR0YWNoZWQgdG8gdGhlIHRyYW5zZmVyLgBcRW1pdHMgYFZlc3RpbmdDcmVhdGVkYC4A/E5PVEU6IFRoaXMgd2lsbCB1bmxvY2sgYWxsIHNjaGVkdWxlcyB0aHJvdWdoIHRoZSBjdXJyZW50IGJsb2NrLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC48bWVyZ2Vfc2NoZWR1bGVzCAE8c2NoZWR1bGUxX2luZGV4OAEMdTMyAAE8c2NoZWR1bGUyX2luZGV4OAEMdTMyAARUXQFNZXJnZSB0d28gdmVzdGluZyBzY2hlZHVsZXMgdG9nZXRoZXIsIGNyZWF0aW5nIGEgbmV3IHZlc3Rpbmcgc2NoZWR1bGUgdGhhdCB1bmxvY2tzIG92ZXJVAXRoZSBoaWdoZXN0IHBvc3NpYmxlIHN0YXJ0IGFuZCBlbmQgYmxvY2tzLiBJZiBib3RoIHNjaGVkdWxlcyBoYXZlIGFscmVhZHkgc3RhcnRlZCB0aGVZAWN1cnJlbnQgYmxvY2sgd2lsbCBiZSB1c2VkIGFzIHRoZSBzY2hlZHVsZSBzdGFydDsgd2l0aCB0aGUgY2F2ZWF0IHRoYXQgaWYgb25lIHNjaGVkdWxlXQFpcyBmaW5pc2hlZCBieSB0aGUgY3VycmVudCBibG9jaywgdGhlIG90aGVyIHdpbGwgYmUgdHJlYXRlZCBhcyB0aGUgbmV3IG1lcmdlZCBzY2hlZHVsZSwsdW5tb2RpZmllZC4A+E5PVEU6IElmIGBzY2hlZHVsZTFfaW5kZXggPT0gc2NoZWR1bGUyX2luZGV4YCB0aGlzIGlzIGEgbm8tb3AuQQFOT1RFOiBUaGlzIHdpbGwgdW5sb2NrIGFsbCBzY2hlZHVsZXMgdGhyb3VnaCB0aGUgY3VycmVudCBibG9jayBwcmlvciB0byBtZXJnaW5nLmEBTk9URTogSWYgYm90aCBzY2hlZHVsZXMgaGF2ZSBlbmRlZCBieSB0aGUgY3VycmVudCBibG9jaywgbm8gbmV3IHNjaGVkdWxlIHdpbGwgYmUgY3JlYXRlZGRhbmQgYm90aCB3aWxsIGJlIHJlbW92ZWQuAGxNZXJnZWQgc2NoZWR1bGUgYXR0cmlidXRlczo1AS0gYHN0YXJ0aW5nX2Jsb2NrYDogYE1BWChzY2hlZHVsZTEuc3RhcnRpbmdfYmxvY2ssIHNjaGVkdWxlZDIuc3RhcnRpbmdfYmxvY2ssSCAgY3VycmVudF9ibG9jaylgLiEBLSBgZW5kaW5nX2Jsb2NrYDogYE1BWChzY2hlZHVsZTEuZW5kaW5nX2Jsb2NrLCBzY2hlZHVsZTIuZW5kaW5nX2Jsb2NrKWAuWQEtIGBsb2NrZWRgOiBgc2NoZWR1bGUxLmxvY2tlZF9hdChjdXJyZW50X2Jsb2NrKSArIHNjaGVkdWxlMi5sb2NrZWRfYXQoY3VycmVudF9ibG9jaylgLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAOgtIGBzY2hlZHVsZTFfaW5kZXhgOiBpbmRleCBvZiB0aGUgZmlyc3Qgc2NoZWR1bGUgdG8gbWVyZ2Uu7C0gYHNjaGVkdWxlMl9pbmRleGA6IGluZGV4IG9mIHRoZSBzZWNvbmQgc2NoZWR1bGUgdG8gbWVyZ2UudGZvcmNlX3JlbW92ZV92ZXN0aW5nX3NjaGVkdWxlCAEYdGFyZ2V0AAGMPFQ6Okxvb2t1cCBhcyBTdGF0aWNMb29rdXA+OjpTb3VyY2UAAThzY2hlZHVsZV9pbmRleDgBDHUzMgAFGHxGb3JjZSByZW1vdmUgYSB2ZXN0aW5nIHNjaGVkdWxlAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uAMgtIGB0YXJnZXRgOiBBbiBhY2NvdW50IHRoYXQgaGFzIGEgdmVzdGluZyBzY2hlZHVsZRUBLSBgc2NoZWR1bGVfaW5kZXhgOiBUaGUgdmVzdGluZyBzY2hlZHVsZSBpbmRleCB0aGF0IHNob3VsZCBiZSByZW1vdmVkBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLmkBDDhwYWxsZXRfdmVzdGluZzB2ZXN0aW5nX2luZm8sVmVzdGluZ0luZm8IHEJhbGFuY2UBVQEsQmxvY2tOdW1iZXIBOAAMARhsb2NrZWRVAQEcQmFsYW5jZQABJHBlcl9ibG9ja1UBARxCYWxhbmNlAAE4c3RhcnRpbmdfYmxvY2s4ASxCbG9ja051bWJlcgAAbQEQXHBvbGthZG90X3J1bnRpbWVfY29tbW9uGGNsYWltcxhwYWxsZXQQQ2FsbAQEVAABFBRjbGFpbQgBEGRlc3QEATBUOjpBY2NvdW50SWQAAUhldGhlcmV1bV9zaWduYXR1cmVxAQE4RWNkc2FTaWduYXR1cmUAAGCITWFrZSBhIGNsYWltIHRvIGNvbGxlY3QgeW91ciBET1RzLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBQVW5zaWduZWQgVmFsaWRhdGlvbjoFAUEgY2FsbCB0byBjbGFpbSBpcyBkZWVtZWQgdmFsaWQgaWYgdGhlIHNpZ25hdHVyZSBwcm92aWRlZCBtYXRjaGVzfHRoZSBleHBlY3RlZCBzaWduZWQgbWVzc2FnZSBvZjoAaD4gRXRoZXJldW0gU2lnbmVkIE1lc3NhZ2U6lD4gKGNvbmZpZ3VyZWQgcHJlZml4IHN0cmluZykoYWRkcmVzcykApGFuZCBgYWRkcmVzc2AgbWF0Y2hlcyB0aGUgYGRlc3RgIGFjY291bnQuACxQYXJhbWV0ZXJzOtgtIGBkZXN0YDogVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgdG8gcGF5b3V0IHRoZSBjbGFpbS5dAS0gYGV0aGVyZXVtX3NpZ25hdHVyZWA6IFRoZSBzaWduYXR1cmUgb2YgYW4gZXRoZXJldW0gc2lnbmVkIG1lc3NhZ2UgbWF0Y2hpbmcgdGhlIGZvcm1hdEggIGRlc2NyaWJlZCBhYm92ZS4AIDx3ZWlnaHQ+/FRoZSB3ZWlnaHQgb2YgdGhpcyBjYWxsIGlzIGludmFyaWFudCBvdmVyIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLuBXZWlnaHQgaW5jbHVkZXMgbG9naWMgdG8gdmFsaWRhdGUgdW5zaWduZWQgYGNsYWltYCBjYWxsLgBYVG90YWwgQ29tcGxleGl0eTogTygxKSQ8L3dlaWdodD4obWludF9jbGFpbRABDHdob3kBATxFdGhlcmV1bUFkZHJlc3MAARR2YWx1ZVUBATBCYWxhbmNlT2Y8VD4AAUB2ZXN0aW5nX3NjaGVkdWxlfQEB3E9wdGlvbjwoQmFsYW5jZU9mPFQ+LCBCYWxhbmNlT2Y8VD4sIEJsb2NrTnVtYmVyRm9yPFQ+KT4AASRzdGF0ZW1lbnSFAQFUT3B0aW9uPFN0YXRlbWVudEtpbmQ+AAE8hE1pbnQgYSBuZXcgY2xhaW0gdG8gY29sbGVjdCBET1RzLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgAsUGFyYW1ldGVyczrwLSBgd2hvYDogVGhlIEV0aGVyZXVtIGFkZHJlc3MgYWxsb3dlZCB0byBjb2xsZWN0IHRoaXMgY2xhaW0uzC0gYHZhbHVlYDogVGhlIG51bWJlciBvZiBET1RzIHRoYXQgd2lsbCBiZSBjbGFpbWVkLgkBLSBgdmVzdGluZ19zY2hlZHVsZWA6IEFuIG9wdGlvbmFsIHZlc3Rpbmcgc2NoZWR1bGUgZm9yIHRoZXNlIERPVHMuACA8d2VpZ2h0PvxUaGUgd2VpZ2h0IG9mIHRoaXMgY2FsbCBpcyBpbnZhcmlhbnQgb3ZlciB0aGUgaW5wdXQgcGFyYW1ldGVycy4dAVdlIGFzc3VtZSB3b3JzdCBjYXNlIHRoYXQgYm90aCB2ZXN0aW5nIGFuZCBzdGF0ZW1lbnQgaXMgYmVpbmcgaW5zZXJ0ZWQuAFhUb3RhbCBDb21wbGV4aXR5OiBPKDEpJDwvd2VpZ2h0PjBjbGFpbV9hdHRlc3QMARBkZXN0BAEwVDo6QWNjb3VudElkAAFIZXRoZXJldW1fc2lnbmF0dXJlcQEBOEVjZHNhU2lnbmF0dXJlAAEkc3RhdGVtZW50GAEcVmVjPHU4PgACbORNYWtlIGEgY2xhaW0gdG8gY29sbGVjdCB5b3VyIERPVHMgYnkgc2lnbmluZyBhIHN0YXRlbWVudC4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Ob25lXy4AUFVuc2lnbmVkIFZhbGlkYXRpb246KQFBIGNhbGwgdG8gYGNsYWltX2F0dGVzdGAgaXMgZGVlbWVkIHZhbGlkIGlmIHRoZSBzaWduYXR1cmUgcHJvdmlkZWQgbWF0Y2hlc3x0aGUgZXhwZWN0ZWQgc2lnbmVkIG1lc3NhZ2Ugb2Y6AGg+IEV0aGVyZXVtIFNpZ25lZCBNZXNzYWdlOsA+IChjb25maWd1cmVkIHByZWZpeCBzdHJpbmcpKGFkZHJlc3MpKHN0YXRlbWVudCkASQFhbmQgYGFkZHJlc3NgIG1hdGNoZXMgdGhlIGBkZXN0YCBhY2NvdW50OyB0aGUgYHN0YXRlbWVudGAgbXVzdCBtYXRjaCB0aGF0IHdoaWNoIGlzwGV4cGVjdGVkIGFjY29yZGluZyB0byB5b3VyIHB1cmNoYXNlIGFycmFuZ2VtZW50LgAsUGFyYW1ldGVyczrYLSBgZGVzdGA6IFRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IHRvIHBheW91dCB0aGUgY2xhaW0uXQEtIGBldGhlcmV1bV9zaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIGFuIGV0aGVyZXVtIHNpZ25lZCBtZXNzYWdlIG1hdGNoaW5nIHRoZSBmb3JtYXRIICBkZXNjcmliZWQgYWJvdmUuOQEtIGBzdGF0ZW1lbnRgOiBUaGUgaWRlbnRpdHkgb2YgdGhlIHN0YXRlbWVudCB3aGljaCBpcyBiZWluZyBhdHRlc3RlZCB0byBpbiB0aGUwICBzaWduYXR1cmUuACA8d2VpZ2h0PvxUaGUgd2VpZ2h0IG9mIHRoaXMgY2FsbCBpcyBpbnZhcmlhbnQgb3ZlciB0aGUgaW5wdXQgcGFyYW1ldGVycy78V2VpZ2h0IGluY2x1ZGVzIGxvZ2ljIHRvIHZhbGlkYXRlIHVuc2lnbmVkIGBjbGFpbV9hdHRlc3RgIGNhbGwuAFhUb3RhbCBDb21wbGV4aXR5OiBPKDEpJDwvd2VpZ2h0PhhhdHRlc3QEASRzdGF0ZW1lbnQYARxWZWM8dTg+AANM9EF0dGVzdCB0byBhIHN0YXRlbWVudCwgbmVlZGVkIHRvIGZpbmFsaXplIHRoZSBjbGFpbXMgcHJvY2Vzcy4AGQFXQVJOSU5HOiBJbnNlY3VyZSB1bmxlc3MgeW91ciBjaGFpbiBpbmNsdWRlcyBgUHJldmFsaWRhdGVBdHRlc3RzYCBhcyBhXGBUcmFuc2FjdGlvbkV4dGVuc2lvbmAuAFBVbnNpZ25lZCBWYWxpZGF0aW9uOikBQSBjYWxsIHRvIGF0dGVzdCBpcyBkZWVtZWQgdmFsaWQgaWYgdGhlIHNlbmRlciBoYXMgYSBgUHJlY2xhaW1gIHJlZ2lzdGVyZWT0YW5kIHByb3ZpZGVzIGEgYHN0YXRlbWVudGAgd2hpY2ggaXMgZXhwZWN0ZWQgZm9yIHRoZSBhY2NvdW50LgAsUGFyYW1ldGVyczo5AS0gYHN0YXRlbWVudGA6IFRoZSBpZGVudGl0eSBvZiB0aGUgc3RhdGVtZW50IHdoaWNoIGlzIGJlaW5nIGF0dGVzdGVkIHRvIGluIHRoZTAgIHNpZ25hdHVyZS4AIDx3ZWlnaHQ+/FRoZSB3ZWlnaHQgb2YgdGhpcyBjYWxsIGlzIGludmFyaWFudCBvdmVyIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLvBXZWlnaHQgaW5jbHVkZXMgbG9naWMgdG8gZG8gcHJlLXZhbGlkYXRpb24gb24gYGF0dGVzdGAgY2FsbC4AWFRvdGFsIENvbXBsZXhpdHk6IE8oMSkkPC93ZWlnaHQ+KG1vdmVfY2xhaW0MAQxvbGR5AQE8RXRoZXJldW1BZGRyZXNzAAEMbmV3eQEBPEV0aGVyZXVtQWRkcmVzcwABOG1heWJlX3ByZWNsYWltjQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAQABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLnEBDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXM4RWNkc2FTaWduYXR1cmUAAAQAdQEBIFt1ODsgNjVdAAB1AQAAA0EAAAAMAHkBDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXM8RXRoZXJldW1BZGRyZXNzAAAEABwBIFt1ODsgMjBdAAB9AQQYT3B0aW9uBARUAYEBAQgQTm9uZQAAABBTb21lBACBAQAAAQAAgQEAAAQMVQFVATgAhQEEGE9wdGlvbgQEVAGJAQEIEE5vbmUAAAAQU29tZQQAiQEAAAEAAIkBDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXM0U3RhdGVtZW50S2luZAABCBxSZWd1bGFyAAAAEFNhZnQAAQAAjQEEGE9wdGlvbgQEVAEEAQgQTm9uZQAAABBTb21lBAAEAAABAACRAQxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQQQ2FsbAQEVAABJERzZXRfaW52dWxuZXJhYmxlcwQBDG5ld10BAURWZWM8VDo6QWNjb3VudElkPgAANDEBU2V0IHRoZSBsaXN0IG9mIGludnVsbmVyYWJsZSAoZml4ZWQpIGNvbGxhdG9ycy4gVGhlc2UgY29sbGF0b3JzIG11c3QgZG8gc29tZdBwcmVwYXJhdGlvbiwgbmFtZWx5IHRvIGhhdmUgcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMuAFkBVGhlIGNhbGwgd2lsbCByZW1vdmUgYW55IGFjY291bnRzIHRoYXQgaGF2ZSBub3QgcmVnaXN0ZXJlZCBrZXlzIGZyb20gdGhlIHNldC4gVGhhdCBpcyxdAWl0IGlzIG5vbi1hdG9taWM7IHRoZSBjYWxsZXIgYWNjZXB0cyBhbGwgYEFjY291bnRJZGBzIHBhc3NlZCBpbiBgbmV3YCBfaW5kaXZpZHVhbGx5XyBhczEBYWNjZXB0YWJsZSBJbnZ1bG5lcmFibGVzLCBhbmQgaXMgbm90IHByb3Bvc2luZyBhIF9zZXRfIG9mIG5ldyBJbnZ1bG5lcmFibGVzLgBZAVRoaXMgY2FsbCBkb2VzIG5vdCBtYWludGFpbiBtdXR1YWwgZXhjbHVzaXZpdHkgb2YgYEludnVsbmVyYWJsZXNgIGFuZCBgQ2FuZGlkYXRlc2AuIEl0YQFpcyByZWNvbW1lbmRlZCB0byB1c2UgYSBiYXRjaCBvZiBgYWRkX2ludnVsbmVyYWJsZWAgYW5kIGByZW1vdmVfaW52dWxuZXJhYmxlYCBpbnN0ZWFkLiBBUQFgYmF0Y2hfYWxsYCBjYW4gYWxzbyBiZSB1c2VkIHRvIGVuZm9yY2UgYXRvbWljaXR5LiBJZiBhbnkgY2FuZGlkYXRlcyBhcmUgaW5jbHVkZWQgaW5NAWBuZXdgLCB0aGV5IHNob3VsZCBiZSByZW1vdmVkIHdpdGggYHJlbW92ZV9pbnZ1bG5lcmFibGVfY2FuZGlkYXRlYCBhZnRlciBleGVjdXRpb24uAJRNdXN0IGJlIGNhbGxlZCBieSB0aGUgYFVwZGF0ZU9yaWdpbmAuWHNldF9kZXNpcmVkX2NhbmRpZGF0ZXMEAQxtYXg4AQx1MzIAARRVAVNldCB0aGUgaWRlYWwgbnVtYmVyIG9mIG5vbi1pbnZ1bG5lcmFibGUgY29sbGF0b3JzLiBJZiBsb3dlcmluZyB0aGlzIG51bWJlciwgdGhlbiB0aGVhAW51bWJlciBvZiBydW5uaW5nIGNvbGxhdG9ycyBjb3VsZCBiZSBoaWdoZXIgdGhhbiB0aGlzIGZpZ3VyZS4gQXNpZGUgZnJvbSB0aGF0IGVkZ2UgY2FzZSw1AXRoZXJlIHNob3VsZCBiZSBubyBvdGhlciB3YXkgdG8gaGF2ZSBtb3JlIGNhbmRpZGF0ZXMgdGhhbiB0aGUgZGVzaXJlZCBudW1iZXIuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuSHNldF9jYW5kaWRhY3lfYm9uZAQBEGJvbmRVAQEwQmFsYW5jZU9mPFQ+AAIceFNldCB0aGUgY2FuZGlkYWN5IGJvbmQgYW1vdW50LgBRAUlmIHRoZSBjYW5kaWRhY3kgYm9uZCBpcyBpbmNyZWFzZWQgYnkgdGhpcyBjYWxsLCBhbGwgY3VycmVudCBjYW5kaWRhdGVzIHdoaWNoIGhhdmUgYU0BZGVwb3NpdCBsb3dlciB0aGFuIHRoZSBuZXcgYm9uZCB3aWxsIGJlIGtpY2tlZCBmcm9tIHRoZSBsaXN0IGFuZCBnZXQgdGhlaXIgZGVwb3NpdHMUYmFjay4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC5UcmVnaXN0ZXJfYXNfY2FuZGlkYXRlAAMQQQFSZWdpc3RlciB0aGlzIGFjY291bnQgYXMgYSBjb2xsYXRvciBjYW5kaWRhdGUuIFRoZSBhY2NvdW50IG11c3QgKGEpIGFscmVhZHkgaGF2ZR0BcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMgYW5kIChiKSBiZSBhYmxlIHRvIHJlc2VydmUgdGhlIGBDYW5kaWRhY3lCb25kYC4A3FRoaXMgY2FsbCBpcyBub3QgYXZhaWxhYmxlIHRvIGBJbnZ1bG5lcmFibGVgIGNvbGxhdG9ycy4wbGVhdmVfaW50ZW50AAQUVQFEZXJlZ2lzdGVyIGBvcmlnaW5gIGFzIGEgY29sbGF0b3IgY2FuZGlkYXRlLiBOb3RlIHRoYXQgdGhlIGNvbGxhdG9yIGNhbiBvbmx5IGxlYXZlIG9uDQFzZXNzaW9uIGNoYW5nZS4gVGhlIGBDYW5kaWRhY3lCb25kYCB3aWxsIGJlIHVucmVzZXJ2ZWQgaW1tZWRpYXRlbHkuABkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgdG90YWwgbnVtYmVyIG9mIGNhbmRpZGF0ZXMgd291bGQgZHJvcCBiZWxvd1xgTWluRWxpZ2libGVDb2xsYXRvcnNgLkBhZGRfaW52dWxuZXJhYmxlBAEMd2hvBAEwVDo6QWNjb3VudElkAAUQRQFBZGQgYSBuZXcgYWNjb3VudCBgd2hvYCB0byB0aGUgbGlzdCBvZiBgSW52dWxuZXJhYmxlc2AgY29sbGF0b3JzLiBgd2hvYCBtdXN0IGhhdmUdAXJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLiBJZiBgd2hvYCBpcyBhIGNhbmRpZGF0ZSwgdGhleSB3aWxsIGJlIHJlbW92ZWQuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuTHJlbW92ZV9pbnZ1bG5lcmFibGUEAQx3aG8EATBUOjpBY2NvdW50SWQABhBhAVJlbW92ZSBhbiBhY2NvdW50IGB3aG9gIGZyb20gdGhlIGxpc3Qgb2YgYEludnVsbmVyYWJsZXNgIGNvbGxhdG9ycy4gYEludnVsbmVyYWJsZXNgIG11c3QoYmUgc29ydGVkLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLix1cGRhdGVfYm9uZAQBLG5ld19kZXBvc2l0VQEBMEJhbGFuY2VPZjxUPgAHHF0BVXBkYXRlIHRoZSBjYW5kaWRhY3kgYm9uZCBvZiBjb2xsYXRvciBjYW5kaWRhdGUgYG9yaWdpbmAgdG8gYSBuZXcgYW1vdW50IGBuZXdfZGVwb3NpdGAuAEEBU2V0dGluZyBhIGBuZXdfZGVwb3NpdGAgdGhhdCBpcyBsb3dlciB0aGFuIHRoZSBjdXJyZW50IGRlcG9zaXQgd2hpbGUgYG9yaWdpbmAgaXPgb2NjdXB5aW5nIGEgdG9wLWBEZXNpcmVkQ2FuZGlkYXRlc2Agc2xvdCBpcyBub3QgYWxsb3dlZC4AWQFUaGlzIGNhbGwgd2lsbCBmYWlsIGlmIGBvcmlnaW5gIGlzIG5vdCBhIGNvbGxhdG9yIGNhbmRpZGF0ZSwgdGhlIHVwZGF0ZWQgYm9uZCBpcyBsb3dlchkBdGhhbiB0aGUgbWluaW11bSBjYW5kaWRhY3kgYm9uZCwgYW5kL29yIHRoZSBhbW91bnQgY2Fubm90IGJlIHJlc2VydmVkLkx0YWtlX2NhbmRpZGF0ZV9zbG90CAEcZGVwb3NpdFUBATBCYWxhbmNlT2Y8VD4AARh0YXJnZXQEATBUOjpBY2NvdW50SWQACBxNAVRoZSBjYWxsZXIgYG9yaWdpbmAgcmVwbGFjZXMgYSBjYW5kaWRhdGUgYHRhcmdldGAgaW4gdGhlIGNvbGxhdG9yIGNhbmRpZGF0ZSBsaXN0IGJ5VQFyZXNlcnZpbmcgYGRlcG9zaXRgLiBUaGUgYW1vdW50IGBkZXBvc2l0YCByZXNlcnZlZCBieSB0aGUgY2FsbGVyIG11c3QgYmUgZ3JlYXRlciB0aGFu4HRoZSBleGlzdGluZyBib25kIG9mIHRoZSB0YXJnZXQgaXQgaXMgdHJ5aW5nIHRvIHJlcGxhY2UuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgY2FsbGVyIGlzIGFscmVhZHkgYSBjb2xsYXRvciBjYW5kaWRhdGUgb3IgaW52dWxuZXJhYmxlLCB0aGVVAWNhbGxlciBkb2VzIG5vdCBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLCB0aGUgdGFyZ2V0IGlzIG5vdCBhIGNvbGxhdG9yIGNhbmRpZGF0ZSy8YW5kL29yIHRoZSBgZGVwb3NpdGAgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMulQEMOHBhbGxldF9zZXNzaW9uGHBhbGxldBBDYWxsBARUAAEIIHNldF9rZXlzCAEQa2V5c5kBARxUOjpLZXlzAAEUcHJvb2YYARxWZWM8dTg+AAAs5FNldHMgdGhlIHNlc3Npb24ga2V5KHMpIG9mIHRoZSBmdW5jdGlvbiBjYWxsZXIgdG8gYGtleXNgLgAdAUFsbG93cyBhbiBhY2NvdW50IHRvIHNldCBpdHMgc2Vzc2lvbiBrZXkgcHJpb3IgdG8gYmVjb21pbmcgYSB2YWxpZGF0b3IuwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgABAS0gYG9yaWdpbmA6IFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIHNpZ25lZC5VAS0gYGtleXNgOiBUaGUgbmV3IHNlc3Npb24ga2V5cyB0byBzZXQuIFRoZXNlIGFyZSB0aGUgcHVibGljIGtleXMgb2YgYWxsIHNlc3Npb25zIGtleXNcICBzZXR1cCBpbiB0aGUgcnVudGltZS5BAS0gYHByb29mYDogVGhlIHByb29mIHRoYXQgYG9yaWdpbmAgaGFzIGFjY2VzcyB0byB0aGUgcHJpdmF0ZSBrZXlzIG9mIGBrZXlzYC4gU2VlTQEgIFtgaW1wbF9vcGFxdWVfa2V5c2BdKHNwX3J1bnRpbWU6OmltcGxfb3BhcXVlX2tleXMpIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZTwgIHByb29mIGZvcm1hdC4ocHVyZ2Vfa2V5cwABIMhSZW1vdmVzIGFueSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyLgDAVGhpcyBkb2Vzbid0IHRha2UgZWZmZWN0IHVudGlsIHRoZSBuZXh0IHNlc3Npb24uAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgYWNjb3VudCBtdXN0IGJlIGVpdGhlciBiZV0BY29udmVydGlibGUgdG8gYSB2YWxpZGF0b3IgSUQgdXNpbmcgdGhlIGNoYWluJ3MgdHlwaWNhbCBhZGRyZXNzaW5nIHN5c3RlbSAodGhpcyB1c3VhbGx5UQFtZWFucyBiZWluZyBhIGNvbnRyb2xsZXIgYWNjb3VudCkgb3IgZGlyZWN0bHkgY29udmVydGlibGUgaW50byBhIHZhbGlkYXRvciBJRCAod2hpY2iUdXN1YWxseSBtZWFucyBiZWluZyBhIHN0YXNoIGFjY291bnQpLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6ZAQhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZSxTZXNzaW9uS2V5cwAABAEQYXVyYZ0BAcQ8QXVyYSBhcyAkY3JhdGU6OkJvdW5kVG9SdW50aW1lQXBwUHVibGljPjo6UHVibGljAACdARBEc3BfY29uc2Vuc3VzX2F1cmEcc3IyNTUxOSxhcHBfc3IyNTUxORhQdWJsaWMAAAQACAE8c3IyNTUxOTo6UHVibGljAAChAQxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQQQ2FsbAQEVAABFFRzdXNwZW5kX3hjbV9leGVjdXRpb24AAQxJAVN1c3BlbmRzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUsIHJlZ2FyZGxlc3Mgb2YgdGhlIHNlbmRlcidzIG9yaWdpbi4ApC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgQ29udHJvbGxlck9yaWdpbmAuUHJlc3VtZV94Y21fZXhlY3V0aW9uAAIUuFJlc3VtZXMgYWxsIFhDTSBleGVjdXRpb25zIGZvciB0aGUgWENNUCBxdWV1ZS4APQFOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGNoYW5nZSB0aGUgc3RhdHVzIG9mIHRoZSBpbi9vdXQgYm91bmQgY2hhbm5lbHMuAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLmB1cGRhdGVfc3VzcGVuZF90aHJlc2hvbGQEAQxuZXc4AQx1MzIAAxRJAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBmb3IgdGhlIG90aGVyIHNpZGUgdG8gYmV4dG9sZCB0byBzdXNwZW5kIHRoZWlyIHNlbmRpbmcuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLugtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLnN1c3BlbmRfdmFsdWVgVHVwZGF0ZV9kcm9wX3RocmVzaG9sZAQBDG5ldzgBDHUzMgAEFEUBT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIG11c3QgYmUgaW4gdGhlIHF1ZXVlIGFmdGVyIHdoaWNoIHdlIGRyb3AgYW55iGZ1cnRoZXIgbWVzc2FnZXMgZnJvbSB0aGUgY2hhbm5lbC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu7C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEuZHJvcF90aHJlc2hvbGRgXHVwZGF0ZV9yZXN1bWVfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAUUTQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggdGhlIHF1ZXVlIG11c3QgYmUgcmVkdWNlZCB0byBiZWZvcmUgaXQgc2lnbmFscwEBdGhhdCBtZXNzYWdlIHNlbmRpbmcgbWF5IHJlY29tbWVuY2UgYWZ0ZXIgaXQgaGFzIGJlZW4gc3VzcGVuZGVkLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC70LSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5yZXN1bWVfdGhyZXNob2xkYAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6lAQwocGFsbGV0X3hjbRhwYWxsZXQQQ2FsbAQEVAABRBBzZW5kCAEQZGVzdKkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEcbWVzc2FnZTECAVRCb3g8VmVyc2lvbmVkWGNtPCgpPj4AAAA8dGVsZXBvcnRfYXNzZXRzEAEQZGVzdKkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnmpAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c20DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAFIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgAdASoqVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOiBVc2UgYGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGVoICBmZWUgb24gdGhlIGBkZXN0YCBjaGFpbi5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5ccmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMQARBkZXN0qQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeakBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzbQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAAnhdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLHhkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZS4APQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIGFuZCBtYXkgbm90IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuTQEgLSBgYXNzZXRzYCBoYXZlIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuVQEgLSBgYXNzZXRzYCBoYXZlIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5hASAtIGBhc3NldHNgIGhhdmUgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmVhASAgIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGD0ICAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLgA9ASoqVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOiBVc2UgYGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHNgIGluc3RlYWQuKioAUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAuIFRoZSB3ZWlnaHQgbGltaXQgZm9yIGZlZXMgaXMgbm90IHByb3ZpZGVkIGFuZCB0aHVzIGlzIHVubGltaXRlZCy0d2l0aCBhbGwgZmVlcyB0YWtlbiBhcyBuZWVkZWQgZnJvbSB0aGUgYXNzZXQuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLhxleGVjdXRlCAEcbWVzc2FnZXEDAbRCb3g8VmVyc2lvbmVkWGNtPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPj4AAShtYXhfd2VpZ2h0EQEBGFdlaWdodAADINBFeGVjdXRlIGFuIFhDTSBtZXNzYWdlIGZyb20gYSBsb2NhbCwgc2lnbmVkLCBvcmlnaW4uAE0BQW4gZXZlbnQgaXMgZGVwb3NpdGVkIGluZGljYXRpbmcgd2hldGhlciBgbXNnYCBjb3VsZCBiZSBleGVjdXRlZCBjb21wbGV0ZWx5IG9yIG9ubHkocGFydGlhbGx5LgBdAU5vIG1vcmUgdGhhbiBgbWF4X3dlaWdodGAgd2lsbCBiZSB1c2VkIGluIGl0cyBhdHRlbXB0ZWQgZXhlY3V0aW9uLiBJZiB0aGlzIGlzIGxlc3MgdGhhbkEBdGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCB0aGF0IHRoZSBtZXNzYWdlIGNvdWxkIHRha2UgdG8gYmUgZXhlY3V0ZWQsIHRoZW4gbm98ZXhlY3V0aW9uIGF0dGVtcHQgd2lsbCBiZSBtYWRlLkRmb3JjZV94Y21fdmVyc2lvbggBIGxvY2F0aW9u/QEBNEJveDxMb2NhdGlvbj4AARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAEGEkBRXh0b2xsIHRoYXQgYSBwYXJ0aWN1bGFyIGRlc3RpbmF0aW9uIGNhbiBiZSBjb21tdW5pY2F0ZWQgd2l0aCB0aHJvdWdoIGEgcGFydGljdWxhcjx2ZXJzaW9uIG9mIFhDTS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi7YLSBgbG9jYXRpb25gOiBUaGUgZGVzdGluYXRpb24gdGhhdCBpcyBiZWluZyBkZXNjcmliZWQuEQEtIGB4Y21fdmVyc2lvbmA6IFRoZSBsYXRlc3QgdmVyc2lvbiBvZiBYQ00gdGhhdCBgbG9jYXRpb25gIHN1cHBvcnRzLmRmb3JjZV9kZWZhdWx0X3hjbV92ZXJzaW9uBAFEbWF5YmVfeGNtX3ZlcnNpb27gAUhPcHRpb248WGNtVmVyc2lvbj4ABRRZAVNldCBhIHNhZmUgWENNIHZlcnNpb24gKHRoZSB2ZXJzaW9uIHRoYXQgWENNIHNob3VsZCBiZSBlbmNvZGVkIHdpdGggaWYgdGhlIG1vc3QgcmVjZW50tHZlcnNpb24gYSBkZXN0aW5hdGlvbiBjYW4gYWNjZXB0IGlzIHVua25vd24pLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLjkBLSBgbWF5YmVfeGNtX3ZlcnNpb25gOiBUaGUgZGVmYXVsdCBYQ00gZW5jb2RpbmcgdmVyc2lvbiwgb3IgYE5vbmVgIHRvIGRpc2FibGUueGZvcmNlX3N1YnNjcmliZV92ZXJzaW9uX25vdGlmeQQBIGxvY2F0aW9uqQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ABhA5AUFzayBhIGxvY2F0aW9uIHRvIG5vdGlmeSB1cyByZWdhcmRpbmcgdGhlaXIgWENNIHZlcnNpb24gYW5kIGFueSBjaGFuZ2VzIHRvIGl0LgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLlkBLSBgbG9jYXRpb25gOiBUaGUgbG9jYXRpb24gdG8gd2hpY2ggd2Ugc2hvdWxkIHN1YnNjcmliZSBmb3IgWENNIHZlcnNpb24gbm90aWZpY2F0aW9ucy6AZm9yY2VfdW5zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbqkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAcYSQFSZXF1aXJlIHRoYXQgYSBwYXJ0aWN1bGFyIGRlc3RpbmF0aW9uIHNob3VsZCBubyBsb25nZXIgbm90aWZ5IHVzIHJlZ2FyZGluZyBhbnkgWENNQHZlcnNpb24gY2hhbmdlcy4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi49AS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIGFyZSBjdXJyZW50bHkgc3Vic2NyaWJlZCBmb3IgWENNIHZlcnNpb26oICBub3RpZmljYXRpb25zIHdoaWNoIHdlIG5vIGxvbmdlciBkZXNpcmUufGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMUARBkZXN0qQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeakBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzbQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXSlAgEsV2VpZ2h0TGltaXQACHhdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLHhkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZS4APQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIGFuZCBtYXkgbm90IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuTQEgLSBgYXNzZXRzYCBoYXZlIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuVQEgLSBgYXNzZXRzYCBoYXZlIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5hASAtIGBhc3NldHNgIGhhdmUgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmVhASAgIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGD0ICAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5cbGltaXRlZF90ZWxlcG9ydF9hc3NldHMUARBkZXN0qQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeakBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzbQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXSlAgEsV2VpZ2h0TGltaXQACUgRAVRlbGVwb3J0IHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHNvbWUgZGVzdGluYXRpb24gY2hhaW4uAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0WQFpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGVoICBmZWUgb24gdGhlIGBkZXN0YCBjaGFpbi5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLkBmb3JjZV9zdXNwZW5zaW9uBAEkc3VzcGVuZGVkWQEBEGJvb2wAChD0U2V0IG9yIHVuc2V0IHRoZSBnbG9iYWwgc3VzcGVuc2lvbiBzdGF0ZSBvZiB0aGUgWENNIGV4ZWN1dG9yLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLtAtIGBzdXNwZW5kZWRgOiBgdHJ1ZWAgdG8gc3VzcGVuZCwgYGZhbHNlYCB0byByZXN1bWUuPHRyYW5zZmVyX2Fzc2V0cxQBEGRlc3SpAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5qQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHNtAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABMHdlaWdodF9saW1pdKUCASxXZWlnaHRMaW1pdAALhF0BVHJhbnNmZXIgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHRocm91Z2ggdGhlaXIgbG9jYWws0GRlc3RpbmF0aW9uIG9yIHJlbW90ZSByZXNlcnZlLCBvciB0aHJvdWdoIHRlbGVwb3J0cy4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2Y1AWluZGV4IGBmZWVfYXNzZXRfaXRlbWAgKGhlbmNlIHJlZmVycmVkIHRvIGFzIGBmZWVzYCksIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yQQFgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0IGlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZdxvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAGEBYGFzc2V0c2AgKGV4Y2x1ZGluZyBgZmVlc2ApIG11c3QgaGF2ZSBzYW1lIHJlc2VydmUgbG9jYXRpb24gb3Igb3RoZXJ3aXNlIGJlIHRlbGVwb3J0YWJsZbB0byBgZGVzdGAsIG5vIGxpbWl0YXRpb25zIGltcG9zZWQgb24gYGZlZXNgLk0BIC0gZm9yIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbiBjaGFpbiBhbmRNASAgIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvRCAgIGBiZW5lZmljaWFyeWAuYQEgLSBmb3IgZGVzdGluYXRpb24gcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gdG8gYGRlc3RgIGNoYWluWQEgICB0byB3aXRoZHJhdyB0aGUgcmVzZXJ2ZSBhc3NldHMgZnJvbSB0aGlzIGNoYWluJ3Mgc292ZXJlaWduIGFjY291bnQgYW5kIGRlcG9zaXQgdGhlbVAgICB0byBgYmVuZWZpY2lhcnlgLl0BIC0gZm9yIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlIHJlc2VydmVzXQEgICBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3RgIHRvIG1pbnTUICAgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5RASAtIGZvciB0ZWxlcG9ydHM6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG8gbWludC90ZWxlcG9ydLAgICBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uLQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFgyKFBhcmVudCxVASAgUGFyYWNoYWluKC4uKSlgIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgWDEoUGFyYWNoYWluKC4uKSlgIHRvIHNlbmRoICBmcm9tIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS4wY2xhaW1fYXNzZXRzCAEYYXNzZXRzbQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAEsYmVuZWZpY2lhcnmpAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAMGFUBQ2xhaW1zIGFzc2V0cyB0cmFwcGVkIG9uIHRoaXMgcGFsbGV0IGJlY2F1c2Ugb2YgbGVmdG92ZXIgYXNzZXRzIGR1cmluZyBYQ00gZXhlY3V0aW9uLgCsLSBgb3JpZ2luYDogQW55b25lIGNhbiBjYWxsIHRoaXMgZXh0cmluc2ljLl0BLSBgYXNzZXRzYDogVGhlIGV4YWN0IGFzc2V0cyB0aGF0IHdlcmUgdHJhcHBlZC4gVXNlIHRoZSB2ZXJzaW9uIHRvIHNwZWNpZnkgd2hhdCB2ZXJzaW9umHdhcyB0aGUgbGF0ZXN0IHdoZW4gdGhleSB3ZXJlIHRyYXBwZWQuRQEtIGBiZW5lZmljaWFyeWA6IFRoZSBsb2NhdGlvbi9hY2NvdW50IHdoZXJlIHRoZSBjbGFpbWVkIGFzc2V0cyB3aWxsIGJlIGRlcG9zaXRlZC6MdHJhbnNmZXJfYXNzZXRzX3VzaW5nX3R5cGVfYW5kX3RoZW4cARBkZXN0qQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHNtAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAVBhc3NldHNfdHJhbnNmZXJfdHlwZZ0DAURCb3g8VHJhbnNmZXJUeXBlPgABOHJlbW90ZV9mZWVzX2lkoQMBVEJveDxWZXJzaW9uZWRBc3NldElkPgABSGZlZXNfdHJhbnNmZXJfdHlwZZ0DAURCb3g8VHJhbnNmZXJUeXBlPgABSGN1c3RvbV94Y21fb25fZGVzdDECAVRCb3g8VmVyc2lvbmVkWGNtPCgpPj4AATB3ZWlnaHRfbGltaXSlAgEsV2VpZ2h0TGltaXQADcBVAVRyYW5zZmVyIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdXNpbmcgZXhwbGljaXQgdHJhbnNmZXJodHlwZXMgZm9yIGFzc2V0cyBhbmQgZmVlcy4AWQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG1heSBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLiBDYWxsZXIgbXVzdOxwcm92aWRlIHRoZSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgIHRvIGJlIHVzZWQgZm9yIGBhc3NldHNgOlEBIC0gYFRyYW5zZmVyVHlwZTo6TG9jYWxSZXNlcnZlYDogdHJhbnNmZXIgYXNzZXRzIHRvIHNvdmVyZWlnbiBhY2NvdW50IG9mIGRlc3RpbmF0aW9uTQEgICBjaGFpbiBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZGwgICBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5ZASAtIGBUcmFuc2ZlclR5cGU6OkRlc3RpbmF0aW9uUmVzZXJ2ZWA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5ZASAtIGBUcmFuc2ZlclR5cGU6OlJlbW90ZVJlc2VydmUocmVzZXJ2ZSlgOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gYHJlc2VydmVgYQEgICBjaGFpbiB0byBtb3ZlIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyVQEgICBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4gVHlwaWNhbGx5lCAgIHRoZSByZW1vdGUgYHJlc2VydmVgIGlzIEFzc2V0IEh1Yi5FASAtIGBUcmFuc2ZlclR5cGU6OlRlbGVwb3J0YDogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgWENNIHRvIGBkZXN0YCBjaGFpbiB0b+ggICBtaW50L3RlbGVwb3J0IGFzc2V0cyBhbmQgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuAFUBT24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLCBhcyB3ZWxsIGFzIGFueSBpbnRlcm1lZGlhcnkgaG9wcywgYEJ1eUV4ZWN1dGlvbmAgaXMgdXNlZCB0byEBYnV5IGV4ZWN1dGlvbiB1c2luZyB0cmFuc2ZlcnJlZCBgYXNzZXRzYCBpZGVudGlmaWVkIGJ5IGByZW1vdGVfZmVlc19pZGAuWQFNYWtlIHN1cmUgZW5vdWdoIG9mIHRoZSBzcGVjaWZpZWQgYHJlbW90ZV9mZWVzX2lkYCBhc3NldCBpcyBpbmNsdWRlZCBpbiB0aGUgZ2l2ZW4gbGlzdGEBb2YgYGFzc2V0c2AuIGByZW1vdGVfZmVlc19pZGAgc2hvdWxkIGJlIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgLiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4ARQFgcmVtb3RlX2ZlZXNfaWRgIG1heSB1c2UgZGlmZmVyZW50IHRyYW5zZmVyIHR5cGUgdGhhbiByZXN0IG9mIGBhc3NldHNgIGFuZCBjYW4gYmWcc3BlY2lmaWVkIHRocm91Z2ggYGZlZXNfdHJhbnNmZXJfdHlwZWAuAGEBVGhlIGNhbGxlciBuZWVkcyB0byBzcGVjaWZ5IHdoYXQgc2hvdWxkIGhhcHBlbiB0byB0aGUgdHJhbnNmZXJyZWQgYXNzZXRzIG9uY2UgdGhleSByZWFjaEEBdGhlIGBkZXN0YCBjaGFpbi4gVGhpcyBpcyBkb25lIHRocm91Z2ggdGhlIGBjdXN0b21feGNtX29uX2Rlc3RgIHBhcmFtZXRlciwgd2hpY2j8Y29udGFpbnMgdGhlIGluc3RydWN0aW9ucyB0byBleGVjdXRlIG9uIGBkZXN0YCBhcyBhIGZpbmFsIHN0ZXAufCAgVGhpcyBpcyB1c3VhbGx5IGFzIHNpbXBsZSBhczpRASAgYFhjbSh2ZWMhW0RlcG9zaXRBc3NldCB7IGFzc2V0czogV2lsZChBbGxDb3VudGVkKGFzc2V0cy5sZW4oKSkpLCBiZW5lZmljaWFyeSB9XSlgLDEBICBidXQgY291bGQgYmUgc29tZXRoaW5nIG1vcmUgZXhvdGljIGxpa2Ugc2VuZGluZyB0aGUgYGFzc2V0c2AgZXZlbiBmdXJ0aGVyLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tPQEgIHJlbGF5IHRvIHBhcmFjaGFpbiwgb3IgYChwYXJlbnRzOiAyLCAoR2xvYmFsQ29uc2Vuc3VzKC4uKSwgLi4pKWAgdG8gc2VuZCBmcm9t9CAgcGFyYWNoYWluIGFjcm9zcyBhIGJyaWRnZSB0byBhbm90aGVyIGVjb3N5c3RlbSBkZXN0aW5hdGlvbi5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuPQEtIGBhc3NldHNfdHJhbnNmZXJfdHlwZWA6IFRoZSBYQ00gYFRyYW5zZmVyVHlwZWAgdXNlZCB0byB0cmFuc2ZlciB0aGUgYGFzc2V0c2AuIQEtIGByZW1vdGVfZmVlc19pZGA6IE9uZSBvZiB0aGUgaW5jbHVkZWQgYGFzc2V0c2AgdG8gYmUgdXNlZCB0byBwYXkgZmVlcy5JAS0gYGZlZXNfdHJhbnNmZXJfdHlwZWA6IFRoZSBYQ00gYFRyYW5zZmVyVHlwZWAgdXNlZCB0byB0cmFuc2ZlciB0aGUgYGZlZXNgIGFzc2V0cy5ZAS0gYGN1c3RvbV94Y21fb25fZGVzdGA6IFRoZSBYQ00gdG8gYmUgZXhlY3V0ZWQgb24gYGRlc3RgIGNoYWluIGFzIHRoZSBsYXN0IHN0ZXAgb2YgdGhlWQEgIHRyYW5zZmVyLCB3aGljaCBhbHNvIGRldGVybWluZXMgd2hhdCBoYXBwZW5zIHRvIHRoZSBhc3NldHMgb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuUGFkZF9hdXRob3JpemVkX2FsaWFzCAEcYWxpYXNlcqkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEcZXhwaXJlc/wBLE9wdGlvbjx1NjQ+AA4sXQFBdXRob3JpemUgYW5vdGhlciBgYWxpYXNlcmAgbG9jYXRpb24gdG8gYWxpYXMgaW50byB0aGUgbG9jYWwgYG9yaWdpbmAgbWFraW5nIHRoaXMgY2FsbC4pAVRoZSBgYWxpYXNlcmAgaXMgb25seSBhdXRob3JpemVkIHVudGlsIHRoZSBwcm92aWRlZCBgZXhwaXJ5YCBibG9jayBudW1iZXIuSQFUaGUgY2FsbCBjYW4gYWxzbyBiZSB1c2VkIGZvciBhIHByZXZpb3VzbHkgYXV0aG9yaXplZCBhbGlhcyBpbiBvcmRlciB0byB1cGRhdGUgaXRzWGBleHBpcnlgIGJsb2NrIG51bWJlci4AUQFVc3VhbGx5IHVzZWZ1bCB0byBhbGxvdyB5b3VyIGxvY2FsIGFjY291bnQgdG8gYmUgYWxpYXNlZCBpbnRvIGZyb20gYSByZW1vdGUgbG9jYXRpb270YWxzbyB1bmRlciB5b3VyIGNvbnRyb2wgKGxpa2UgeW91ciBhY2NvdW50IG9uIGFub3RoZXIgY2hhaW4pLgBRAVdBUk5JTkc6IG1ha2Ugc3VyZSB0aGUgY2FsbGVyIGBvcmlnaW5gICh5b3UpIHRydXN0cyB0aGUgYGFsaWFzZXJgIGxvY2F0aW9uIHRvIGFjdCBpblkBdGhlaXIveW91ciBuYW1lLiBPbmNlIGF1dGhvcml6ZWQgdXNpbmcgdGhpcyBjYWxsLCB0aGUgYGFsaWFzZXJgIGNhbiBmcmVlbHkgaW1wZXJzb25hdGXUYG9yaWdpbmAgaW4gWENNIHByb2dyYW1zIGV4ZWN1dGVkIG9uIHRoZSBsb2NhbCBjaGFpbi5ccmVtb3ZlX2F1dGhvcml6ZWRfYWxpYXMEARxhbGlhc2VyqQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ADwhdAVJlbW92ZSBhIHByZXZpb3VzbHkgYXV0aG9yaXplZCBgYWxpYXNlcmAgZnJvbSB0aGUgbGlzdCBvZiBsb2NhdGlvbnMgdGhhdCBjYW4gYWxpYXMgaW50b5B0aGUgbG9jYWwgYG9yaWdpbmAgbWFraW5nIHRoaXMgY2FsbC50cmVtb3ZlX2FsbF9hdXRob3JpemVkX2FsaWFzZXMAEAhJAVJlbW92ZSBhbGwgcHJldmlvdXNseSBhdXRob3JpemVkIGBhbGlhc2VyYHMgdGhhdCBjYW4gYWxpYXMgaW50byB0aGUgbG9jYWwgYG9yaWdpbmBEbWFraW5nIHRoaXMgY2FsbC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuqQEIDHhjbURWZXJzaW9uZWRMb2NhdGlvbgABDAhWMwQArQEBRHYzOjpNdWx0aUxvY2F0aW9uAAMACFY0BADJAQEwdjQ6OkxvY2F0aW9uAAQACFY1BAD9AQEwdjU6OkxvY2F0aW9uAAUAAK0BECxzdGFnaW5nX3hjbQh2MzRtdWx0aWxvY2F0aW9uNE11bHRpTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9ysQEBJEp1bmN0aW9ucwAAsQEQDHhjbQh2MyRqdW5jdGlvbnMkSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEALUBASBKdW5jdGlvbgABAAhYMggAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AAgAIWDMMALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AAwAIWDQQALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAEAAhYNRQAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24ABQAIWDYYALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24ABgAIWDccALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAHAAhYOCAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24AALUBASBKdW5jdGlvbgAAtQEBIEp1bmN0aW9uAAC1AQEgSnVuY3Rpb24ACAAAtQEQDHhjbQh2MyBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmu5AQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya7kBAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmu5AQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABRAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkwQEBGEJvZHlJZAABEHBhcnTFAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBAC9AQEkTmV0d29ya0lkAAkAALkBBBhPcHRpb24EBFQBvQEBCBBOb25lAAAAEFNvbWUEAL0BAAABAAC9ARAMeGNtCHYzIGp1bmN0aW9uJE5ldHdvcmtJZAABLCRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAcV2VzdGVuZAAEABhSb2NvY28ABQAYV29jb2NvAAYAIEV0aGVyZXVtBAEgY2hhaW5faWS0AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAADBARAMeGNtCHYzIGp1bmN0aW9uGEJvZHlJZAABKBBVbml0AAAAHE1vbmlrZXIEAHABHFt1ODsgNF0AAQAUSW5kZXgEAGABDHUzMgACACRFeGVjdXRpdmUAAwAkVGVjaG5pY2FsAAQALExlZ2lzbGF0aXZlAAUAIEp1ZGljaWFsAAYAHERlZmVuc2UABwA4QWRtaW5pc3RyYXRpb24ACAAgVHJlYXN1cnkACQAAxQEQDHhjbQh2MyBqdW5jdGlvbiBCb2R5UGFydAABFBRWb2ljZQAAABxNZW1iZXJzBAEUY291bnRgAQx1MzIAAQAgRnJhY3Rpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgACAERBdExlYXN0UHJvcG9ydGlvbggBDG5vbWABDHUzMgABFGRlbm9tYAEMdTMyAAMASE1vcmVUaGFuUHJvcG9ydGlvbggBDG5vbWABDHUzMgABFGRlbm9tYAEMdTMyAAQAAMkBECxzdGFnaW5nX3hjbQh2NCBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3LNAQEkSnVuY3Rpb25zAADNARAsc3RhZ2luZ194Y20IdjQkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBADRAQFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBADhAQFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBADlAQFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BADpAQFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BADtAQFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BADxAQFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BAD1AQFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BAD5AQFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAANEBAAADAQAAANUBANUBECxzdGFnaW5nX3hjbQh2NCBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmvZAQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya9kBAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmvZAQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABRAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkwQEBGEJvZHlJZAABEHBhcnTFAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBADdAQEkTmV0d29ya0lkAAkAANkBBBhPcHRpb24EBFQB3QEBCBBOb25lAAAAEFNvbWUEAN0BAAABAADdARAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLQBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAOEBAAADAgAAANUBAOUBAAADAwAAANUBAOkBAAADBAAAANUBAO0BAAADBQAAANUBAPEBAAADBgAAANUBAPUBAAADBwAAANUBAPkBAAADCAAAANUBAP0BECxzdGFnaW5nX3hjbQh2NSBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3IBAgEkSnVuY3Rpb25zAAABAhAsc3RhZ2luZ194Y20IdjUkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBAAFAgFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBAAVAgFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBAAZAgFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BAAdAgFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BAAhAgFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BAAlAgFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BAApAgFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BAAtAgFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAAAUCAAADAQAAAAkCAAkCECxzdGFnaW5nX3hjbQh2NSBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmsNAgFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29yaw0CAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmsNAgFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABRAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkwQEBGEJvZHlJZAABEHBhcnTFAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBAARAgEkTmV0d29ya0lkAAkAAA0CBBhPcHRpb24EBFQBEQIBCBBOb25lAAAAEFNvbWUEABECAAABAAARAhAsc3RhZ2luZ194Y20IdjUganVuY3Rpb24kTmV0d29ya0lkAAEgJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADACBFdGhlcmV1bQQBIGNoYWluX2lktAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAAFQIAAAMCAAAACQIAGQIAAAMDAAAACQIAHQIAAAMEAAAACQIAIQIAAAMFAAAACQIAJQIAAAMGAAAACQIAKQIAAAMHAAAACQIALQIAAAMIAAAACQIAMQIIDHhjbTBWZXJzaW9uZWRYY20ELFJ1bnRpbWVDYWxsAAEMCFYzBAA1AgFQdjM6OlhjbTxSdW50aW1lQ2FsbD4AAwAIVjQEAKkCAVB2NDo6WGNtPFJ1bnRpbWVDYWxsPgAEAAhWNQQA9QIBUHY1OjpYY208UnVudGltZUNhbGw+AAUAADUCDAx4Y20IdjMMWGNtBBBDYWxsAAAEADkCAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAA5AgAAAj0CAD0CDAx4Y20IdjMsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAQQIBLE11bHRpQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAQQIBLE11bHRpQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAEECASxNdWx0aUFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2VhAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0EQEBGFdlaWdodAABHHF1ZXJpZXKJAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHNBAgEsTXVsdGlBc3NldHMAASxiZW5lZmljaWFyea0BATRNdWx0aUxvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzQQIBLE11bHRpQXNzZXRzAAEQZGVzdK0BATRNdWx0aUxvY2F0aW9uAAEMeGNtNQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZI0CAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdBEBARhXZWlnaHQAARBjYWxskQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAsQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAlQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c5kCAUBNdWx0aUFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnmtAQE0TXVsdGlMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzmQIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN0rQEBNE11bHRpTG9jYXRpb24AAQx4Y201AgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZZkCAUBNdWx0aUFzc2V0RmlsdGVyAAEQd2FudEECASxNdWx0aUFzc2V0cwABHG1heGltYWxZAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c5kCAUBNdWx0aUFzc2V0RmlsdGVyAAEccmVzZXJ2Za0BATRNdWx0aUxvY2F0aW9uAAEMeGNtNQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c5kCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdK0BATRNdWx0aUxvY2F0aW9uAAEMeGNtNQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm+VAgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHOZAgFATXVsdGlBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzSQIBKE11bHRpQXNzZXQAATB3ZWlnaHRfbGltaXSlAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEADUCASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEADUCASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzQQIBLE11bHRpQXNzZXRzAAEYdGlja2V0rQEBNE11bHRpTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0EQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BABBAgEsTXVsdGlBc3NldHMAHAAsRXhwZWN0QXNzZXQEAEECASxNdWx0aUFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAIkCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAGUCAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAgQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb5UCAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAJUCAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAtQEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrvQEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9usQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgABDHhjbTUCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0SQIBKE11bHRpQXNzZXQAASB1bmxvY2tlcq0BATRNdWx0aUxvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXRJAgEoTXVsdGlBc3NldAABGHRhcmdldK0BATRNdWx0aUxvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXRJAgEoTXVsdGlBc3NldAABFG93bmVyrQEBNE11bHRpTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0SQIBKE11bHRpQXNzZXQAARhsb2NrZXKtAQE0TXVsdGlMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd1kBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBACtAQE0TXVsdGlMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXSlAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW6JAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AC8AAEECEAx4Y20IdjMobXVsdGlhc3NldCxNdWx0aUFzc2V0cwAABABFAgE8VmVjPE11bHRpQXNzZXQ+AABFAgAAAkkCAEkCEAx4Y20IdjMobXVsdGlhc3NldChNdWx0aUFzc2V0AAAIAQhpZE0CARxBc3NldElkAAEMZnVuUQIBLEZ1bmdpYmlsaXR5AABNAhAMeGNtCHYzKG11bHRpYXNzZXQcQXNzZXRJZAABCCBDb25jcmV0ZQQArQEBNE11bHRpTG9jYXRpb24AAAAgQWJzdHJhY3QEAAgBIFt1ODsgMzJdAAEAAFECEAx4Y20IdjMobXVsdGlhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAUQEBEHUxMjgAAAAsTm9uRnVuZ2libGUEAFUCATRBc3NldEluc3RhbmNlAAEAAFUCEAx4Y20IdjMobXVsdGlhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQAUQEBEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQAWQIBHFt1ODsgOF0AAwAcQXJyYXkxNgQAXQIBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAAFkCAAADCAAAAAwAXQIAAAMQAAAADABhAgwMeGNtCHYzIFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBABBAgEsTXVsdGlBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BABlAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAOAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EAHECAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQAgQIBOE1heWJlRXJyb3JDb2RlAAUAAGUCBBhPcHRpb24EBFQBaQIBCBBOb25lAAAAEFNvbWUEAGkCAAABAABpAgAABAg4bQIAbQIQDHhjbQh2Mxh0cmFpdHMURXJyb3IAAaAgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAQAKAEMdTY0ABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIATFVuaGFuZGxlZFhjbVZlcnNpb24AIwBIV2VpZ2h0TGltaXRSZWFjaGVkBAARAQEYV2VpZ2h0ACQAHEJhcnJpZXIAJQBMV2VpZ2h0Tm90Q29tcHV0YWJsZQAmAERFeGNlZWRzU3RhY2tMaW1pdAAnAABxAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAXUCBFMAAAQAfQIBGFZlYzxUPgAAdQIMDHhjbQh2MyhQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWV5AgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZXkCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAAeQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAB9AgAAAnUCAIECDAx4Y20IdjM4TWF5YmVFcnJvckNvZGUAAQwcU3VjY2VzcwAAABRFcnJvcgQAhQIBjEJvdW5kZWRWZWM8dTgsIE1heERpc3BhdGNoRXJyb3JMZW4+AAEAOFRydW5jYXRlZEVycm9yBACFAgGMQm91bmRlZFZlYzx1OCwgTWF4RGlzcGF0Y2hFcnJvckxlbj4AAgAAhQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACJAgQYT3B0aW9uBARUAa0BAQgQTm9uZQAAABBTb21lBACtAQAAAQAAjQIMDHhjbQh2MyhPcmlnaW5LaW5kAAEQGE5hdGl2ZQAAAEBTb3ZlcmVpZ25BY2NvdW50AAEAJFN1cGVydXNlcgACAAxYY20AAwAAkQIMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAAlQIMDHhjbQh2M0RRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb26tAQE0TXVsdGlMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHQRAQEYV2VpZ2h0AACZAhAMeGNtCHYzKG11bHRpYXNzZXRATXVsdGlBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQAQQIBLE11bHRpQXNzZXRzAAAAEFdpbGQEAJ0CAThXaWxkTXVsdGlBc3NldAABAACdAhAMeGNtCHYzKG11bHRpYXNzZXQ4V2lsZE11bHRpQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWRNAgEcQXNzZXRJZAABDGZ1bqECATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAYAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlkTQIBHEFzc2V0SWQAAQxmdW6hAgE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRgAQx1MzIAAwAAoQIQDHhjbQh2MyhtdWx0aWFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAAClAgwMeGNtCHYzLFdlaWdodExpbWl0AAEIJFVubGltaXRlZAAAABxMaW1pdGVkBAARAQEYV2VpZ2h0AAEAAKkCDCxzdGFnaW5nX3hjbQh2NAxYY20EEENhbGwAAAQArQIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAK0CAAACsQIAsQIMLHN0YWdpbmdfeGNtCHY0LEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEALUCARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAC1AgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEALUCARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlzQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodBEBARhXZWlnaHQAARxxdWVyaWVy4QIBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c7UCARhBc3NldHMAASxiZW5lZmljaWFyeckBASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c7UCARhBc3NldHMAARBkZXN0yQEBIExvY2F0aW9uAAEMeGNtqQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZI0CAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdBEBARhXZWlnaHQAARBjYWxskQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAzQEBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAOUCAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHPpAgEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeckBASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRz6QIBLEFzc2V0RmlsdGVyAAEQZGVzdMkBASBMb2NhdGlvbgABDHhjbakCARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZl6QIBLEFzc2V0RmlsdGVyAAEQd2FudLUCARhBc3NldHMAARxtYXhpbWFsWQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHPpAgEsQXNzZXRGaWx0ZXIAARxyZXNlcnZlyQEBIExvY2F0aW9uAAEMeGNtqQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c+kCASxBc3NldEZpbHRlcgABEGRlc3TJAQEgTG9jYXRpb24AAQx4Y22pAgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb+UCAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c+kCASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzvQIBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0pQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBACpAgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BACpAgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c7UCARhBc3NldHMAARh0aWNrZXTJAQEgTG9jYXRpb24AGAAQVHJhcAQAtAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0EQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAC1AgEYQXNzZXRzABwALEV4cGVjdEFzc2V0BAC1AgEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQA4QIBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAGUCAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAgQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb+UCAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAOUCAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQA1QEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3Jr3QEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uzQEBQEludGVyaW9yTG9jYXRpb24AAQx4Y22pAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldL0CARRBc3NldAABIHVubG9ja2VyyQEBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXS9AgEUQXNzZXQAARh0YXJnZXTJAQEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldL0CARRBc3NldAABFG93bmVyyQEBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldL0CARRBc3NldAABGGxvY2tlcskBASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd1kBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBADJAQEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0pQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2lu4QIBQE9wdGlvbjxMb2NhdGlvbj4ALwAAtQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0GEFzc2V0cwAABAC5AgEoVmVjPEFzc2V0PgAAuQIAAAK9AgC9AhAsc3RhZ2luZ194Y20IdjQUYXNzZXQUQXNzZXQAAAgBCGlkwQIBHEFzc2V0SWQAAQxmdW7FAgEsRnVuZ2liaWxpdHkAAMECECxzdGFnaW5nX3hjbQh2NBRhc3NldBxBc3NldElkAAAEAMkBASBMb2NhdGlvbgAAxQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBABRAQEQdTEyOAAAACxOb25GdW5naWJsZQQAyQIBNEFzc2V0SW5zdGFuY2UAAQAAyQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BABRAQEQdTEyOAABABhBcnJheTQEAHABHFt1ODsgNF0AAgAYQXJyYXk4BABZAgEcW3U4OyA4XQADABxBcnJheTE2BABdAgEgW3U4OyAxNl0ABAAcQXJyYXkzMgQACAEgW3U4OyAzMl0ABQAAzQIMLHN0YWdpbmdfeGNtCHY0IFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBAC1AgEYQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAZQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBADRAgGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAIECAThNYXliZUVycm9yQ29kZQAFAADRAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAdUCBFMAAAQA3QIBGFZlYzxUPgAA1QIMLHN0YWdpbmdfeGNtCHY0KFBhbGxldEluZm8AABgBFGluZGV4YAEMdTMyAAEQbmFtZdkCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1l2QIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3JgAQx1MzIAARRtaW5vcmABDHUzMgABFHBhdGNoYAEMdTMyAADZAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAN0CAAAC1QIA4QIEGE9wdGlvbgQEVAHJAQEIEE5vbmUAAAAQU29tZQQAyQEAAAEAAOUCDCxzdGFnaW5nX3hjbQh2NERRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb27JAQEgTG9jYXRpb24AASBxdWVyeV9pZLQBHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0EQEBGFdlaWdodAAA6QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEFzc2V0RmlsdGVyAAEIIERlZmluaXRlBAC1AgEYQXNzZXRzAAAAEFdpbGQEAO0CASRXaWxkQXNzZXQAAQAA7QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0JFdpbGRBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZMECARxBc3NldElkAAEMZnVu8QIBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBABgAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWTBAgEcQXNzZXRJZAABDGZ1bvECATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudGABDHUzMgADAADxAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAAPUCDCxzdGFnaW5nX3hjbQh2NQxYY20EEENhbGwAAAQA+QIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAPkCAAAC/QIA/QIMLHN0YWdpbmdfeGNtCHY1LEluc3RydWN0aW9uBBBDYWxsAAHQNFdpdGhkcmF3QXNzZXQEAAEDARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAABAwEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAAEDARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlGQMBIFJlc3BvbnNlAAEobWF4X3dlaWdodBEBARhXZWlnaHQAARxxdWVyaWVyOQMBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0cwEDARhBc3NldHMAASxiZW5lZmljaWFyef0BASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cwEDARhBc3NldHMAARBkZXN0/QEBIExvY2F0aW9uAAEMeGNt9QIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZI0CAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodA0BAThPcHRpb248V2VpZ2h0PgABEGNhbGyRAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAABAgFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAPQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c0EDASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5/QEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHNBAwEsQXNzZXRGaWx0ZXIAARBkZXN0/QEBIExvY2F0aW9uAAEMeGNt9QIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVBAwEsQXNzZXRGaWx0ZXIAARB3YW50AQMBGEFzc2V0cwABHG1heGltYWxZAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c0EDASxBc3NldEZpbHRlcgABHHJlc2VydmX9AQEgTG9jYXRpb24AAQx4Y231AgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzQQMBLEFzc2V0RmlsdGVyAAEQZGVzdP0BASBMb2NhdGlvbgABDHhjbfUCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvPQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzQQMBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXMJAwEUQXNzZXQAATB3ZWlnaHRfbGltaXSlAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAPUCASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAPUCASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzAQMBGEFzc2V0cwABGHRpY2tldP0BASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQRAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAAEDARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAAEDARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAA5AwFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAHQMBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACBAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvPQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAPQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAAJAgEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmsRAgEkTmV0d29ya0lkAAEsZGVzdGluYXRpb24BAgFASW50ZXJpb3JMb2NhdGlvbgABDHhjbfUCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0CQMBFEFzc2V0AAEgdW5sb2NrZXL9AQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldAkDARRBc3NldAABGHRhcmdldP0BASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0CQMBFEFzc2V0AAEUb3duZXL9AQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0CQMBFEFzc2V0AAEYbG9ja2Vy/QEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3WQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAP0BASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXSlAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW45AwFAT3B0aW9uPExvY2F0aW9uPgAvABxQYXlGZWVzBAEUYXNzZXQJAwEUQXNzZXQAMABASW5pdGlhdGVUcmFuc2ZlchQBLGRlc3RpbmF0aW9u/QEBIExvY2F0aW9uAAEscmVtb3RlX2ZlZXNNAwFsT3B0aW9uPEFzc2V0VHJhbnNmZXJGaWx0ZXI+AAE8cHJlc2VydmVfb3JpZ2luWQEBEGJvb2wAARhhc3NldHNVAwHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNt9QIBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbl0DAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y231AgEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHNhAwGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAAAEDECxzdGFnaW5nX3hjbQh2NRRhc3NldBhBc3NldHMAAAQABQMBKFZlYzxBc3NldD4AAAUDAAACCQMACQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0FEFzc2V0AAAIAQhpZA0DARxBc3NldElkAAEMZnVuEQMBLEZ1bmdpYmlsaXR5AAANAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQcQXNzZXRJZAAABAD9AQEgTG9jYXRpb24AABEDECxzdGFnaW5nX3hjbQh2NRRhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAUQEBEHUxMjgAAAAsTm9uRnVuZ2libGUEABUDATRBc3NldEluc3RhbmNlAAEAABUDECxzdGFnaW5nX3hjbQh2NRRhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQAUQEBEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQAWQIBHFt1ODsgOF0AAwAcQXJyYXkxNgQAXQIBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAABkDDCxzdGFnaW5nX3hjbQh2NSBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQAAQMBGEFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAB0DAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQAKQMBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BACBAgE4TWF5YmVFcnJvckNvZGUABQAAHQMEGE9wdGlvbgQEVAEhAwEIEE5vbmUAAAAQU29tZQQAIQMAAAEAACEDAAAECDglAwAlAxAMeGNtCHY1GHRyYWl0cxRFcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAoAQx1NjQAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgA0VG9vTWFueUFzc2V0cwAjAExVbmhhbmRsZWRYY21WZXJzaW9uACQASFdlaWdodExpbWl0UmVhY2hlZAQAEQEBGFdlaWdodAAlABxCYXJyaWVyACYATFdlaWdodE5vdENvbXB1dGFibGUAJwBERXhjZWVkc1N0YWNrTGltaXQAKAAAKQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEtAwRTAAAEADUDARhWZWM8VD4AAC0DDCxzdGFnaW5nX3hjbQh2NShQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWUxAwGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZTEDAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAAMQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAA1AwAAAi0DADkDBBhPcHRpb24EBFQB/QEBCBBOb25lAAAAEFNvbWUEAP0BAAABAAA9Awwsc3RhZ2luZ194Y20IdjVEUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9u/QEBIExvY2F0aW9uAAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEobWF4X3dlaWdodBEBARhXZWlnaHQAAEEDECxzdGFnaW5nX3hjbQh2NRRhc3NldCxBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQAAQMBGEFzc2V0cwAAABBXaWxkBABFAwEkV2lsZEFzc2V0AAEAAEUDECxzdGFnaW5nX3hjbQh2NRRhc3NldCRXaWxkQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWQNAwEcQXNzZXRJZAABDGZ1bkkDATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAYAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlkDQMBHEFzc2V0SWQAAQxmdW5JAwE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRgAQx1MzIAAwAASQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAABNAwQYT3B0aW9uBARUAVEDAQgQTm9uZQAAABBTb21lBABRAwAAAQAAUQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0TEFzc2V0VHJhbnNmZXJGaWx0ZXIAAQwgVGVsZXBvcnQEAEEDASxBc3NldEZpbHRlcgAAADhSZXNlcnZlRGVwb3NpdAQAQQMBLEFzc2V0RmlsdGVyAAEAPFJlc2VydmVXaXRoZHJhdwQAQQMBLEFzc2V0RmlsdGVyAAIAAFUDDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBUQMEUwAABABZAwEYVmVjPFQ+AABZAwAAAlEDAF0DBBhPcHRpb24EBFQBAQIBCBBOb25lAAAAEFNvbWUEAAECAAABAABhAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAWUDBFMAAAQAaQMBGFZlYzxUPgAAZQMMLHN0YWdpbmdfeGNtCHY1EEhpbnQAAQQwQXNzZXRDbGFpbWVyBAEgbG9jYXRpb279AQEgTG9jYXRpb24AAAAAaQMAAAJlAwBtAwgMeGNtPFZlcnNpb25lZEFzc2V0cwABDAhWMwQAQQIBPHYzOjpNdWx0aUFzc2V0cwADAAhWNAQAtQIBKHY0OjpBc3NldHMABAAIVjUEAAEDASh2NTo6QXNzZXRzAAUAAHEDCAx4Y20wVmVyc2lvbmVkWGNtBCxSdW50aW1lQ2FsbAABDAhWMwQAdQMBUHYzOjpYY208UnVudGltZUNhbGw+AAMACFY0BACFAwFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAIVjUEAJEDAVB2NTo6WGNtPFJ1bnRpbWVDYWxsPgAFAAB1AwwMeGNtCHYzDFhjbQQQQ2FsbAAABAB5AwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAeQMAAAJ9AwB9AwwMeGNtCHYzLEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAEECASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAEECASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BABBAgEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlYQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodBEBARhXZWlnaHQAARxxdWVyaWVyiQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzQQIBLE11bHRpQXNzZXRzAAEsYmVuZWZpY2lhcnmtAQE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c0ECASxNdWx0aUFzc2V0cwABEGRlc3StAQE0TXVsdGlMb2NhdGlvbgABDHhjbTUCARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSNAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QRAQEYV2VpZ2h0AAEQY2FsbIEDAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EALEBAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAJUCAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHOZAgFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5rQEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c5kCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdK0BATRNdWx0aUxvY2F0aW9uAAEMeGNtNQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmWZAgFATXVsdGlBc3NldEZpbHRlcgABEHdhbnRBAgEsTXVsdGlBc3NldHMAARxtYXhpbWFsWQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHOZAgFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmWtAQE0TXVsdGlMb2NhdGlvbgABDHhjbTUCARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHOZAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3StAQE0TXVsdGlMb2NhdGlvbgABDHhjbTUCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvlQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzmQIBQE11bHRpQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc0kCAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl0pQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAB1AwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAB1AwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c0ECASxNdWx0aUFzc2V0cwABGHRpY2tldK0BATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodBEBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAQQIBLE11bHRpQXNzZXRzABwALEV4cGVjdEFzc2V0BABBAgEsTXVsdGlBc3NldHMAHQAwRXhwZWN0T3JpZ2luBACJAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBABlAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAIECAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm+VAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBACVAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EALUBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya70BASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbrEBAVRJbnRlcmlvck11bHRpTG9jYXRpb24AAQx4Y201AgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldEkCAShNdWx0aUFzc2V0AAEgdW5sb2NrZXKtAQE0TXVsdGlMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0SQIBKE11bHRpQXNzZXQAARh0YXJnZXStAQE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0SQIBKE11bHRpQXNzZXQAARRvd25lcq0BATRNdWx0aUxvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldEkCAShNdWx0aUFzc2V0AAEYbG9ja2VyrQEBNE11bHRpTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXdZAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQArQEBNE11bHRpTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0pQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luiQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAvAACBAwwMeGNtOGRvdWJsZV9lbmNvZGVkNERvdWJsZUVuY29kZWQEBFQAAAQBHGVuY29kZWQYARxWZWM8dTg+AACFAwwsc3RhZ2luZ194Y20IdjQMWGNtBBBDYWxsAAAEAIkDAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AACJAwAAAo0DAI0DDCxzdGFnaW5nX3hjbQh2NCxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BAC1AgEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAtQIBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAC1AgEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZc0CASBSZXNwb25zZQABKG1heF93ZWlnaHQRAQEYV2VpZ2h0AAEccXVlcmllcuECAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHO1AgEYQXNzZXRzAAEsYmVuZWZpY2lhcnnJAQEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHO1AgEYQXNzZXRzAAEQZGVzdMkBASBMb2NhdGlvbgABDHhjbakCARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmSNAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QRAQEYV2VpZ2h0AAEQY2FsbIEDAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAM0BAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBADlAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRz6QIBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnnJAQEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c+kCASxBc3NldEZpbHRlcgABEGRlc3TJAQEgTG9jYXRpb24AAQx4Y22pAgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZekCASxBc3NldEZpbHRlcgABEHdhbnS1AgEYQXNzZXRzAAEcbWF4aW1hbFkBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRz6QIBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZckBASBMb2NhdGlvbgABDHhjbakCARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHPpAgEsQXNzZXRGaWx0ZXIAARBkZXN0yQEBIExvY2F0aW9uAAEMeGNtqQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm/lAgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHPpAgEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc70CARRBc3NldAABMHdlaWdodF9saW1pdKUCASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAhQMBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAhQMBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHO1AgEYQXNzZXRzAAEYdGlja2V0yQEBIExvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodBEBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAtQIBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQAtQIBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAOECAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBABlAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAIECAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm/lAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBADlAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EANUBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya90BASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbs0BAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtqQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXS9AgEUQXNzZXQAASB1bmxvY2tlcskBASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0vQIBFEFzc2V0AAEYdGFyZ2V0yQEBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXS9AgEUQXNzZXQAARRvd25lcskBASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXS9AgEUQXNzZXQAARhsb2NrZXLJAQEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXdZAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAyQEBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdKUCASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbuECAUBPcHRpb248TG9jYXRpb24+AC8AAJEDDCxzdGFnaW5nX3hjbQh2NQxYY20EEENhbGwAAAQAlQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAJUDAAACmQMAmQMMLHN0YWdpbmdfeGNtCHY1LEluc3RydWN0aW9uBBBDYWxsAAHQNFdpdGhkcmF3QXNzZXQEAAEDARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAABAwEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAAEDARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlGQMBIFJlc3BvbnNlAAEobWF4X3dlaWdodBEBARhXZWlnaHQAARxxdWVyaWVyOQMBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0cwEDARhBc3NldHMAASxiZW5lZmljaWFyef0BASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cwEDARhBc3NldHMAARBkZXN0/QEBIExvY2F0aW9uAAEMeGNt9QIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZI0CAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodA0BAThPcHRpb248V2VpZ2h0PgABEGNhbGyBAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAABAgFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAPQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c0EDASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5/QEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHNBAwEsQXNzZXRGaWx0ZXIAARBkZXN0/QEBIExvY2F0aW9uAAEMeGNt9QIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVBAwEsQXNzZXRGaWx0ZXIAARB3YW50AQMBGEFzc2V0cwABHG1heGltYWxZAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c0EDASxBc3NldEZpbHRlcgABHHJlc2VydmX9AQEgTG9jYXRpb24AAQx4Y231AgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzQQMBLEFzc2V0RmlsdGVyAAEQZGVzdP0BASBMb2NhdGlvbgABDHhjbfUCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvPQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzQQMBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXMJAwEUQXNzZXQAATB3ZWlnaHRfbGltaXSlAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAJEDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAJEDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzAQMBGEFzc2V0cwABGHRpY2tldP0BASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQRAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAAEDARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAAEDARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAA5AwFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAHQMBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBACBAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvPQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAPQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAAJAgEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmsRAgEkTmV0d29ya0lkAAEsZGVzdGluYXRpb24BAgFASW50ZXJpb3JMb2NhdGlvbgABDHhjbfUCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0CQMBFEFzc2V0AAEgdW5sb2NrZXL9AQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldAkDARRBc3NldAABGHRhcmdldP0BASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0CQMBFEFzc2V0AAEUb3duZXL9AQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0CQMBFEFzc2V0AAEYbG9ja2Vy/QEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3WQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAP0BASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXSlAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW45AwFAT3B0aW9uPExvY2F0aW9uPgAvABxQYXlGZWVzBAEUYXNzZXQJAwEUQXNzZXQAMABASW5pdGlhdGVUcmFuc2ZlchQBLGRlc3RpbmF0aW9u/QEBIExvY2F0aW9uAAEscmVtb3RlX2ZlZXNNAwFsT3B0aW9uPEFzc2V0VHJhbnNmZXJGaWx0ZXI+AAE8cHJlc2VydmVfb3JpZ2luWQEBEGJvb2wAARhhc3NldHNVAwHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNt9QIBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbl0DAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y22RAwEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHNhAwGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAAJ0DEFBzdGFnaW5nX3hjbV9leGVjdXRvchh0cmFpdHM4YXNzZXRfdHJhbnNmZXIwVHJhbnNmZXJUeXBlAAEQIFRlbGVwb3J0AAAAMExvY2FsUmVzZXJ2ZQABAEhEZXN0aW5hdGlvblJlc2VydmUAAgA0UmVtb3RlUmVzZXJ2ZQQAqQEBRFZlcnNpb25lZExvY2F0aW9uAAMAAKEDCAx4Y21AVmVyc2lvbmVkQXNzZXRJZAABDAhWMwQATQIBLHYzOjpBc3NldElkAAMACFY0BADBAgEsdjQ6OkFzc2V0SWQABAAIVjUEAA0DASx2NTo6QXNzZXRJZAAFAAClAwxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBBDYWxsBARUAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLqkDDHBwYWxsZXRfeGNtX2JyaWRnZV9odWJfcm91dGVyGHBhbGxldBBDYWxsCARUAARJAAEEUHJlcG9ydF9icmlkZ2Vfc3RhdHVzCAEkYnJpZGdlX2lkPAEQSDI1NgABMGlzX2Nvbmdlc3RlZFkBARBib29sAAAEqE5vdGlmaWNhdGlvbiBhYm91dCBjb25nZXN0ZWQgYnJpZGdlIHF1ZXVlLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6tAwxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0EENhbGwEBFQAAQgkcmVhcF9wYWdlCAE4bWVzc2FnZV9vcmlnaW6xAwFITWVzc2FnZU9yaWdpbk9mPFQ+AAEocGFnZV9pbmRleDgBJFBhZ2VJbmRleAAABD0BUmVtb3ZlIGEgcGFnZSB3aGljaCBoYXMgbm8gbW9yZSBtZXNzYWdlcyByZW1haW5pbmcgdG8gYmUgcHJvY2Vzc2VkIG9yIGlzIHN0YWxlLkhleGVjdXRlX292ZXJ3ZWlnaHQQAThtZXNzYWdlX29yaWdpbrEDAUhNZXNzYWdlT3JpZ2luT2Y8VD4AARBwYWdlOAEkUGFnZUluZGV4AAEUaW5kZXg4ARxUOjpTaXplAAEwd2VpZ2h0X2xpbWl0EQEBGFdlaWdodAABNHhFeGVjdXRlIGFuIG92ZXJ3ZWlnaHQgbWVzc2FnZS4ATQFUZW1wb3JhcnkgcHJvY2Vzc2luZyBlcnJvcnMgd2lsbCBiZSBwcm9wYWdhdGVkIHdoZXJlYXMgcGVybWFuZW50IGVycm9ycyBhcmUgdHJlYXRlZFRhcyBzdWNjZXNzIGNvbmRpdGlvbi4AdC0gYG9yaWdpbmA6IE11c3QgYmUgYFNpZ25lZGAuNQEtIGBtZXNzYWdlX29yaWdpbmA6IFRoZSBvcmlnaW4gZnJvbSB3aGljaCB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZCBhcnJpdmVkLj0BLSBgcGFnZWA6IFRoZSBwYWdlIGluIHRoZSBxdWV1ZSBpbiB3aGljaCB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZCBpcyBzaXR0aW5nLgkBLSBgaW5kZXhgOiBUaGUgaW5kZXggaW50byB0aGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQuWQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgbWF4aW11bSBhbW91bnQgb2Ygd2VpZ2h0IGFsbG93ZWQgdG8gYmUgY29uc3VtZWQgaW4gdGhlIGV4ZWN1dGlvbkQgIG9mIHRoZSBtZXNzYWdlLgD0QmVuY2htYXJrIGNvbXBsZXhpdHkgY29uc2lkZXJhdGlvbnM6IE8oaW5kZXggKyB3ZWlnaHRfbGltaXQpLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6xAwhcY3VtdWx1c19wcmltaXRpdmVzX2NvcmVYQWdncmVnYXRlTWVzc2FnZU9yaWdpbgABDBBIZXJlAAAAGFBhcmVudAABABxTaWJsaW5nBACcARhQYXJhSWQAAgAAtQMMhHNub3dicmlkZ2VfcGFsbGV0X3N5c3RlbV9mcm9udGVuZBhwYWxsZXQQQ2FsbAQEVAABDEhzZXRfb3BlcmF0aW5nX21vZGUEARBtb2RluQMBNE9wZXJhdGluZ01vZGUAAAToU2V0IHRoZSBvcGVyYXRpbmcgbW9kZSBmb3IgZXhwb3J0aW5nIG1lc3NhZ2VzIHRvIEV0aGVyZXVtLjhyZWdpc3Rlcl90b2tlbgwBIGFzc2V0X2lkqQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASBtZXRhZGF0Yb0DATRBc3NldE1ldGFkYXRhAAEkZmVlX2Fzc2V0CQMBFEFzc2V0AAEcSQFJbml0aWF0ZXMgdGhlIHJlZ2lzdHJhdGlvbiBmb3IgYSBQb2xrYWRvdC1uYXRpdmUgdG9rZW4gYXMgYSB3cmFwcGVkIEVSQzIwIHRva2VuIG9uJEV0aGVyZXVtLowtIGBhc3NldF9pZGA6IExvY2F0aW9uIG9mIHRoZSBhc3NldEEBLSBgbWV0YWRhdGFgOiBNZXRhZGF0YSB0byBpbmNsdWRlIGluIHRoZSBpbnN0YW50aWF0ZWQgRVJDMjAgY29udHJhY3Qgb24gRXRoZXJldW0AXQFBbGwgb3JpZ2lucyBhcmUgYWxsb3dlZCwgaG93ZXZlciBgYXNzZXRfaWRgIG11c3QgYmUgYSBsb2NhdGlvbiBuZXN0ZWQgd2l0aGluIHRoZSBvcmlnaW5EY29uc2Vuc3VzIHN5c3RlbS4cYWRkX3RpcAgBKG1lc3NhZ2VfaWTFAwEkTWVzc2FnZUlkAAEUYXNzZXQJAwEUQXNzZXQAAghFAUFkZCBhbiBhZGRpdGlvbmFsIHJlbGF5ZXIgdGlwIGZvciBhIGNvbW1pdHRlZCBtZXNzYWdlIGlkZW50aWZpZWQgYnkgYG1lc3NhZ2VfaWRgLqBUaGUgdGlwIGFzc2V0IHdpbGwgYmUgc3dhcHBlZCBmb3IgZXRoZXIuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrkDDDxzbm93YnJpZGdlX2NvcmU4b3BlcmF0aW5nX21vZGVIQmFzaWNPcGVyYXRpbmdNb2RlAAEIGE5vcm1hbAAAABhIYWx0ZWQAAQAAvQMIPHNub3dicmlkZ2VfY29yZTRBc3NldE1ldGFkYXRhAAAMARBuYW1lwQMBwEJvdW5kZWRWZWM8dTgsIENvbnN0VTMyPE1FVEFEQVRBX0ZJRUxEX01BWF9MRU4+PgABGHN5bWJvbMEDAcBCb3VuZGVkVmVjPHU4LCBDb25zdFUzMjxNRVRBREFUQV9GSUVMRF9NQVhfTEVOPj4AASBkZWNpbWFscwwBCHU4AADBAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAMUDDDxzbm93YnJpZGdlX2NvcmUYcmV3YXJkJE1lc3NhZ2VJZAABCBxJbmJvdW5kBAAoAQx1NjQAAAAgT3V0Ym91bmQEACgBDHU2NAABAADJAww4cGFsbGV0X3V0aWxpdHkYcGFsbGV0EENhbGwEBFQAASAUYmF0Y2gEARRjYWxsc80DAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AABIfFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4AVQFUaGlzIHdpbGwgcmV0dXJuIGBPa2AgaW4gYWxsIGNpcmN1bXN0YW5jZXMuIFRvIGRldGVybWluZSB0aGUgc3VjY2VzcyBvZiB0aGUgYmF0Y2gsIGFuMQFldmVudCBpcyBkZXBvc2l0ZWQuIElmIGEgY2FsbCBmYWlsZWQgYW5kIHRoZSBiYXRjaCB3YXMgaW50ZXJydXB0ZWQsIHRoZW4gdGhlVQFgQmF0Y2hJbnRlcnJ1cHRlZGAgZXZlbnQgaXMgZGVwb3NpdGVkLCBhbG9uZyB3aXRoIHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCBjYWxscyBtYWRlTQFhbmQgdGhlIGVycm9yIG9mIHRoZSBmYWlsZWQgY2FsbC4gSWYgYWxsIHdlcmUgc3VjY2Vzc2Z1bCwgdGhlbiB0aGUgYEJhdGNoQ29tcGxldGVkYExldmVudCBpcyBkZXBvc2l0ZWQuNGFzX2Rlcml2YXRpdmUIARRpbmRleNEDAQx1MTYAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABNNxTZW5kIGEgY2FsbCB0aHJvdWdoIGFuIGluZGV4ZWQgcHNldWRvbnltIG9mIHRoZSBzZW5kZXIuAFUBRmlsdGVyIGZyb20gb3JpZ2luIGFyZSBwYXNzZWQgYWxvbmcuIFRoZSBjYWxsIHdpbGwgYmUgZGlzcGF0Y2hlZCB3aXRoIGFuIG9yaWdpbiB3aGljaLx1c2UgdGhlIHNhbWUgZmlsdGVyIGFzIHRoZSBvcmlnaW4gb2YgdGhpcyBjYWxsLgBFAU5PVEU6IElmIHlvdSBuZWVkIHRvIGVuc3VyZSB0aGF0IGFueSBhY2NvdW50LWJhc2VkIGZpbHRlcmluZyBpcyBub3QgaG9ub3JlZCAoaS5lLmEBYmVjYXVzZSB5b3UgZXhwZWN0IGBwcm94eWAgdG8gaGF2ZSBiZWVuIHVzZWQgcHJpb3IgaW4gdGhlIGNhbGwgc3RhY2sgYW5kIHlvdSBkbyBub3Qgd2FudFEBdGhlIGNhbGwgcmVzdHJpY3Rpb25zIHRvIGFwcGx5IHRvIGFueSBzdWItYWNjb3VudHMpLCB0aGVuIHVzZSBgYXNfbXVsdGlfdGhyZXNob2xkXzFgfGluIHRoZSBNdWx0aXNpZyBwYWxsZXQgaW5zdGVhZC4A9E5PVEU6IFByaW9yIHRvIHZlcnNpb24gKjEyLCB0aGlzIHdhcyBjYWxsZWQgYGFzX2xpbWl0ZWRfc3ViYC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiRiYXRjaF9hbGwEARRjYWxsc80DAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAI07FNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscyBhbmQgYXRvbWljYWxseSBleGVjdXRlIHRoZW0uIQFUaGUgd2hvbGUgdHJhbnNhY3Rpb24gd2lsbCByb2xsYmFjayBhbmQgZmFpbCBpZiBhbnkgb2YgdGhlIGNhbGxzIGZhaWxlZC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sZGlzcGF0Y2hfYXMIASRhc19vcmlnaW7VAwFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAxjIRGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIHByb3ZpZGVkIG9yaWdpbi4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLixmb3JjZV9iYXRjaAQBFGNhbGxzzQMBfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABDR8U2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzLtRVbmxpa2UgYGJhdGNoYCwgaXQgYWxsb3dzIGVycm9ycyBhbmQgd29uJ3QgaW50ZXJydXB0LgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBNAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sd2l0aF93ZWlnaHQIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABGHdlaWdodBEBARhXZWlnaHQABRjERGlzcGF0Y2ggYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBzcGVjaWZpZWQgd2VpZ2h0LgAtAVRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIHdlaWdodCBvZiB0aGUgY2FsbCwgYW5kIGluc3RlYWQgYWxsb3dzIHRoZbhSb290IG9yaWdpbiB0byBzcGVjaWZ5IHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uHGlmX2Vsc2UIARBtYWluIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABIGZhbGxiYWNrIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAGXBUBRGlzcGF0Y2ggYSBmYWxsYmFjayBjYWxsIGluIHRoZSBldmVudCB0aGUgbWFpbiBjYWxsIGZhaWxzIHRvIGV4ZWN1dGUusE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAORUaGlzIGZ1bmN0aW9uIGZpcnN0IGF0dGVtcHRzIHRvIGRpc3BhdGNoIHRoZSBgbWFpbmAgY2FsbC7USWYgdGhlIGBtYWluYCBjYWxsIGZhaWxzLCB0aGUgYGZhbGxiYWNrYCBpcyBhdHRlbXRlZC4VAWlmIHRoZSBmYWxsYmFjayBpcyBzdWNjZXNzZnVsbHkgZGlzcGF0Y2hlZCwgdGhlIHdlaWdodHMgb2YgYm90aCBjYWxscyUBYXJlIGFjY3VtdWxhdGVkIGFuZCBhbiBldmVudCBjb250YWluaW5nIHRoZSBtYWluIGNhbGwgZXJyb3IgaXMgZGVwb3NpdGVkLgDcSW4gdGhlIGV2ZW50IG9mIGEgZmFsbGJhY2sgZmFpbHVyZSB0aGUgd2hvbGUgY2FsbCBmYWlsc2h3aXRoIHRoZSB3ZWlnaHRzIHJldHVybmVkLgBBAS0gYG1haW5gOiBUaGUgbWFpbiBjYWxsIHRvIGJlIGRpc3BhdGNoZWQuIFRoaXMgaXMgdGhlIHByaW1hcnkgYWN0aW9uIHRvIGV4ZWN1dGUuPQEtIGBmYWxsYmFja2A6IFRoZSBmYWxsYmFjayBjYWxsIHRvIGJlIGRpc3BhdGNoZWQgaW4gY2FzZSB0aGUgYG1haW5gIGNhbGwgZmFpbHMuAEQjIyBEaXNwYXRjaCBMb2dpY0EBLSBJZiB0aGUgb3JpZ2luIGlzIGByb290YCwgYm90aCB0aGUgbWFpbiBhbmQgZmFsbGJhY2sgY2FsbHMgYXJlIGV4ZWN1dGVkIHdpdGhvdXR4ICBhcHBseWluZyBhbnkgb3JpZ2luIGZpbHRlcnMuSQEtIElmIHRoZSBvcmlnaW4gaXMgbm90IGByb290YCwgdGhlIG9yaWdpbiBmaWx0ZXIgaXMgYXBwbGllZCB0byBib3RoIHRoZSBgbWFpbmAgYW5kTCAgYGZhbGxiYWNrYCBjYWxscy4ALCMjIFVzZSBDYXNlWQEtIFNvbWUgdXNlIGNhc2VzIG1pZ2h0IGludm9sdmUgc3VibWl0dGluZyBhIGBiYXRjaGAgdHlwZSBjYWxsIGluIGVpdGhlciBtYWluLCBmYWxsYmFjayggIG9yIGJvdGguUGRpc3BhdGNoX2FzX2ZhbGxpYmxlCAEkYXNfb3JpZ2lu1QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAcUyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAFEBQWxtb3N0IHRoZSBzYW1lIGFzIFtgUGFsbGV0OjpkaXNwYXRjaF9hc2BdIGJ1dCBmb3J3YXJkcyBhbnkgZXJyb3Igb2YgdGhlIGlubmVyIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLs0DAAACIADRAwAABQQA1QMIcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUwT3JpZ2luQ2FsbGVyAAEgGHN5c3RlbQQA2QMBdGZyYW1lX3N5c3RlbTo6T3JpZ2luPFJ1bnRpbWU+AAAALFBvbGthZG90WGNtBADdAwFIcGFsbGV0X3hjbTo6T3JpZ2luAB8AKEN1bXVsdXNYY20EAOEDAWhjdW11bHVzX3BhbGxldF94Y206Ok9yaWdpbgAgABxPcmlnaW5zBADlAwF0cGFsbGV0X2N1c3RvbV9vcmlnaW5zOjpPcmlnaW4APwA0QWxpYXNBY2NvdW50cwQA6QMBjGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50czo6T3JpZ2luAGIAEFBnYXMEAPUDAWRpbmRpdl9wYWxsZXRfcGdhczo6T3JpZ2luAGMAGFJldml2ZQQAAQQBeHBhbGxldF9yZXZpdmU6Ok9yaWdpbjxSdW50aW1lPgBkADBEb3Ruc0dhdGV3YXkEAAkEAYhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheTo6T3JpZ2luAJgAANkDDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoJFJhd09yaWdpbgQkQWNjb3VudElkAQQBEBBSb290AAAAGFNpZ25lZAQABAEkQWNjb3VudElkAAEAEE5vbmUAAgAoQXV0aG9yaXplZAADAADdAwwocGFsbGV0X3hjbRhwYWxsZXQYT3JpZ2luAAEIDFhjbQQA/QEBIExvY2F0aW9uAAAAIFJlc3BvbnNlBAD9AQEgTG9jYXRpb24AAQAA4QMMSGN1bXVsdXNfcGFsbGV0X3hjbRhwYWxsZXQYT3JpZ2luAAEIFFJlbGF5AAAAQFNpYmxpbmdQYXJhY2hhaW4EAJwBGFBhcmFJZAABAADlAxRwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZShnb3Zlcm5hbmNlHG9yaWdpbnNUcGFsbGV0X2N1c3RvbV9vcmlnaW5zGE9yaWdpbgABPDBTdGFraW5nQWRtaW4AAAAkVHJlYXN1cmVyAAEAPEZlbGxvd3NoaXBBZG1pbgACADBHZW5lcmFsQWRtaW4AAwAwQXVjdGlvbkFkbWluAAQAKExlYXNlQWRtaW4ABQBMUmVmZXJlbmR1bUNhbmNlbGxlcgAGAEBSZWZlcmVuZHVtS2lsbGVyAAcALFNtYWxsVGlwcGVyAAgAJEJpZ1RpcHBlcgAJADBTbWFsbFNwZW5kZXIACgA0TWVkaXVtU3BlbmRlcgALAChCaWdTcGVuZGVyAAwARFdoaXRlbGlzdGVkQ2FsbGVyAA0ANFdpc2hGb3JDaGFuZ2UADgAA6QMMbGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50cxhwYWxsZXQYT3JpZ2luAAEEJFJpbmdBbGlhcwQA7QMBQEFsaWFzQWNjb3VudEluZm8AAAAA7QMMbGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50cxR0eXBlc0BBbGlhc0FjY291bnRJbmZvAAAQAShjb2xsZWN0aW9uCAEoSWRlbnRpZmllcgABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABEHJpbmc4ASRSaW5nSW5kZXgAAQhjYfEDATxDb250ZXh0dWFsQWxpYXMAAPEDEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5PENvbnRleHR1YWxBbGlhcwAACAEUYWxpYXMIARRBbGlhcwABHGNvbnRleHQIARxDb250ZXh0AAD1AwxEaW5kaXZfcGFsbGV0X3BnYXMYcGFsbGV0GE9yaWdpbgABBChDbGFpbUFsaWFzDAEUYWxpYXMIARRBbGlhcwABDGRhefkDAQxEYXkAAShjb2xsZWN0aW9u/QMBOFBnYXNDb2xsZWN0aW9uAAAAAPkDDDRpbmRpdl9zdXBwb3J0FHV0aWxzMEJpZ0VuZGlhblUzMgADBAAAAAwEGQFBIHUzMiBlbmNvZGVkIGluIGJpZy1lbmRpYW4gZm9ybWF0IGZvciBjb3JyZWN0IGxleGljb2dyYXBoaWMgb3JkZXJpbmcu/QMMRGluZGl2X3BhbGxldF9wZ2FzJGV4dGVuc2lvbjhQZ2FzQ29sbGVjdGlvbgABCBhQZW9wbGUAAAAoTGl0ZVBlb3BsZQABAAABBAw0cGFsbGV0X3Jldml2ZRhwYWxsZXQYT3JpZ2luBARUAQUEAQQ4RXRoVHJhbnNhY3Rpb24EAAQBMFQ6OkFjY291bnRJZAAAAAAFBAhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZRxSdW50aW1lAAAAAAkEDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRhwYWxsZXQYT3JpZ2luAAEESFBlcnNvblJlZ2lzdHJhdGlvbgQACAEUQWxpYXMAAAAADQQMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQQQ2FsbAQEVAABFFBhc19tdWx0aV90aHJlc2hvbGRfMQgBRG90aGVyX3NpZ25hdG9yaWVzXQEBRFZlYzxUOjpBY2NvdW50SWQ+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AADBRAUltbWVkaWF0ZWx5IGRpc3BhdGNoIGEgbXVsdGktc2lnbmF0dXJlIGNhbGwgdXNpbmcgYSBzaW5nbGUgYXBwcm92YWwgZnJvbSB0aGUgY2FsbGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAD0BLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGFyZSBwYXJ0IG9mIHRoZQEBbXVsdGktc2lnbmF0dXJlLCBidXQgZG8gbm90IHBhcnRpY2lwYXRlIGluIHRoZSBhcHByb3ZhbCBwcm9jZXNzLogtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuALhSZXN1bHQgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlzcGF0Y2hlZCByZXN1bHQuADQjIyBDb21wbGV4aXR5GQFPKFogKyBDKSB3aGVyZSBaIGlzIHRoZSBsZW5ndGggb2YgdGhlIGNhbGwgYW5kIEMgaXRzIGV4ZWN1dGlvbiB3ZWlnaHQuIGFzX211bHRpFAEkdGhyZXNob2xk0QMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzXQEBRFZlYzxUOjpBY2NvdW50SWQ+AAE8bWF5YmVfdGltZXBvaW50EQQBkE9wdGlvbjxUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+PgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEobWF4X3dlaWdodBEBARhXZWlnaHQAAahVAVJlZ2lzdGVyIGFwcHJvdmFsIGZvciBhIGRpc3BhdGNoIHRvIGJlIG1hZGUgZnJvbSBhIGRldGVybWluaXN0aWMgY29tcG9zaXRlIGFjY291bnQgaWb4YXBwcm92ZWQgYnkgYSB0b3RhbCBvZiBgdGhyZXNob2xkIC0gMWAgb2YgYG90aGVyX3NpZ25hdG9yaWVzYC4APQEqKklmIHRoZSBhcHByb3ZhbCB0aHJlc2hvbGQgaXMgbWV0IChpbmNsdWRpbmcgdGhlIHNlbmRlcidzIGFwcHJvdmFsKSwgdGhpcyB3aWxsRQFpbW1lZGlhdGVseSBleGVjdXRlIHRoZSBjYWxsLioqIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGV4ZWN1dGUgYSBtdWx0aXNpZyBjYWxsIC3AYGFwcHJvdmVfYXNfbXVsdGlgIHdpbGwgbmV2ZXIgdHJpZ2dlciBleGVjdXRpb24uAC0BUGF5bWVudDogYERlcG9zaXRCYXNlYCB3aWxsIGJlIHJlc2VydmVkIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCBwbHVzPQFgdGhyZXNob2xkYCB0aW1lcyBgRGVwb3NpdEZhY3RvcmAuIEl0IGlzIHJldHVybmVkIG9uY2UgdGhpcyBkaXNwYXRjaCBoYXBwZW5zIG9yNGlzIGNhbmNlbGxlZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBVAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIGZvciB0aGlzIGRpc3BhdGNoIGJlZm9yZSBpdCBpcyBleGVjdXRlZC5BAS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBjYW4gYXBwcm92ZSB0aGlzbGRpc3BhdGNoLiBNYXkgbm90IGJlIGVtcHR5LlkBLSBgbWF5YmVfdGltZXBvaW50YDogSWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gdGhpcyBtdXN0IGJlIGBOb25lYC4gSWYgaXQgaXNRAW5vdCB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gaXQgbXVzdCBiZSBgU29tZWAsIHdpdGggdGhlIHRpbWVwb2ludCAoYmxvY2sgbnVtYmVyIGFuZNR0cmFuc2FjdGlvbiBpbmRleCkgb2YgdGhlIGZpcnN0IGFwcHJvdmFsIHRyYW5zYWN0aW9uLogtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuAE0BTk9URTogRm9yIGludGVybWVkaWF0ZSBhcHByb3ZhbHMgKG5vdCB0aGUgZmluYWwgYXBwcm92YWwpLCB5b3Ugc2hvdWxkIGdlbmVyYWxseSB1c2VFAWBhcHByb3ZlX2FzX211bHRpYCBpbnN0ZWFkLCBzaW5jZSBpdCBvbmx5IHJlcXVpcmVzIGEgaGFzaCBvZiB0aGUgY2FsbCBhbmQgaXMgbW9yZShlZmZpY2llbnQuAFkBUmVzdWx0IGlzIGVxdWl2YWxlbnQgdG8gdGhlIGRpc3BhdGNoZWQgcmVzdWx0IGlmIGB0aHJlc2hvbGRgIGlzIGV4YWN0bHkgYDFgLiBPdGhlcndpc2VVAW9uIHN1Y2Nlc3MsIHJlc3VsdCBpcyBgT2tgIGFuZCB0aGUgcmVzdWx0IGZyb20gdGhlIGludGVyaW9yIGNhbGwsIGlmIGl0IHdhcyBleGVjdXRlZCzcbWF5IGJlIGZvdW5kIGluIHRoZSBkZXBvc2l0ZWQgYE11bHRpc2lnRXhlY3V0ZWRgIGV2ZW50LgA0IyMgQ29tcGxleGl0eVAtIGBPKFMgKyBaICsgQ2FsbClgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLiEBLSBPbmUgY2FsbCBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oWilgIHdoZXJlIGBaYCBpcyB0eC1sZW4uvC0gT25lIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhTKWAu1C0gVXAgdG8gb25lIGJpbmFyeSBzZWFyY2ggYW5kIGluc2VydCAoYE8obG9nUyArIFMpYCku+C0gSS9POiAxIHJlYWQgYE8oUylgLCB1cCB0byAxIG11dGF0ZSBgTyhTKWAuIFVwIHRvIG9uZSByZW1vdmUuMC0gT25lIGV2ZW50LmwtIFRoZSB3ZWlnaHQgb2YgdGhlIGBjYWxsYC5NAS0gU3RvcmFnZTogaW5zZXJ0cyBvbmUgaXRlbSwgdmFsdWUgc2l6ZSBib3VuZGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggYSBkZXBvc2l0GQEgIHRha2VuIGZvciBpdHMgbGlmZXRpbWUgb2YgYERlcG9zaXRCYXNlICsgdGhyZXNob2xkICogRGVwb3NpdEZhY3RvcmAuQGFwcHJvdmVfYXNfbXVsdGkUASR0aHJlc2hvbGTRAwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXNdAQFEVmVjPFQ6OkFjY291bnRJZD4AATxtYXliZV90aW1lcG9pbnQRBAGQT3B0aW9uPFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0AAShtYXhfd2VpZ2h0EQEBGFdlaWdodAACmFUBUmVnaXN0ZXIgYXBwcm92YWwgZm9yIGEgZGlzcGF0Y2ggdG8gYmUgbWFkZSBmcm9tIGEgZGV0ZXJtaW5pc3RpYyBjb21wb3NpdGUgYWNjb3VudCBpZvhhcHByb3ZlZCBieSBhIHRvdGFsIG9mIGB0aHJlc2hvbGQgLSAxYCBvZiBgb3RoZXJfc2lnbmF0b3JpZXNgLgA5ASoqVGhpcyBmdW5jdGlvbiB3aWxsIE5FVkVSIGV4ZWN1dGUgdGhlIGNhbGwsIGV2ZW4gaWYgdGhlIGFwcHJvdmFsIHRocmVzaG9sZCBpc1EBcmVhY2hlZC4qKiBJdCBvbmx5IHJlZ2lzdGVycyBhcHByb3ZhbC4gVG8gYWN0dWFsbHkgZXhlY3V0ZSB0aGUgY2FsbCwgYGFzX211bHRpYCBtdXN08GJlIGNhbGxlZCB3aXRoIHRoZSBmdWxsIGNhbGwgZGF0YSBieSBhbnkgb2YgdGhlIHNpZ25hdG9yaWVzLgBNAVRoaXMgZnVuY3Rpb24gaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBgYXNfbXVsdGlgIGZvciBpbnRlcm1lZGlhdGUgYXBwcm92YWxzIHNpbmNlIGl00G9ubHkgcmVxdWlyZXMgdGhlIGNhbGwgaGFzaCwgbm90IHRoZSBmdWxsIGNhbGwgZGF0YS4ALQFQYXltZW50OiBgRGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgaWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHBsdXM9AWB0aHJlc2hvbGRgIHRpbWVzIGBEZXBvc2l0RmFjdG9yYC4gSXQgaXMgcmV0dXJuZWQgb25jZSB0aGlzIGRpc3BhdGNoIGhhcHBlbnMgb3I0aXMgY2FuY2VsbGVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuWQEtIGBtYXliZV90aW1lcG9pbnRgOiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiB0aGlzIG11c3QgYmUgYE5vbmVgLiBJZiBpdCBpc1EBbm90IHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiBpdCBtdXN0IGJlIGBTb21lYCwgd2l0aCB0aGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5k1HRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWwgdHJhbnNhY3Rpb24uzC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgA9AU5PVEU6IFRvIGV4ZWN1dGUgdGhlIGNhbGwgYWZ0ZXIgYXBwcm92YWxzIGFyZSBnYXRoZXJlZCwgYW55IHNpZ25hdG9yeSBtdXN0IGNhbGwpAWBhc19tdWx0aWAgd2l0aCB0aGUgZnVsbCBjYWxsIGRhdGEuIFRoaXMgZnVuY3Rpb24gY2Fubm90IGV4ZWN1dGUgdGhlIGNhbGwuADQjIyBDb21wbGV4aXR5JC0gYE8oUylgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLtQtIFVwIHRvIG9uZSBiaW5hcnkgc2VhcmNoIGFuZCBpbnNlcnQgKGBPKGxvZ1MgKyBTKWApLvgtIEkvTzogMSByZWFkIGBPKFMpYCwgdXAgdG8gMSBtdXRhdGUgYE8oUylgLiBVcCB0byBvbmUgcmVtb3ZlLjAtIE9uZSBldmVudC5NAS0gU3RvcmFnZTogaW5zZXJ0cyBvbmUgaXRlbSwgdmFsdWUgc2l6ZSBib3VuZGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggYSBkZXBvc2l0GQEgIHRha2VuIGZvciBpdHMgbGlmZXRpbWUgb2YgYERlcG9zaXRCYXNlICsgdGhyZXNob2xkICogRGVwb3NpdEZhY3RvcmAuPGNhbmNlbF9hc19tdWx0aRABJHRocmVzaG9sZNEDAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc10BAURWZWM8VDo6QWNjb3VudElkPgABJHRpbWVwb2ludBUEAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0AA1RVAUNhbmNlbCBhIHByZS1leGlzdGluZywgb24tZ29pbmcgbXVsdGlzaWcgdHJhbnNhY3Rpb24uIEFueSBkZXBvc2l0IHJlc2VydmVkIHByZXZpb3VzbHnEZm9yIHRoaXMgb3BlcmF0aW9uIHdpbGwgYmUgdW5yZXNlcnZlZCBvbiBzdWNjZXNzLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuXQEtIGB0aW1lcG9pbnRgOiBUaGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5kIHRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWx4dHJhbnNhY3Rpb24gZm9yIHRoaXMgZGlzcGF0Y2guzC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgA0IyMgQ29tcGxleGl0eSQtIGBPKFMpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC4wLSBPbmUgZXZlbnQuhC0gSS9POiAxIHJlYWQgYE8oUylgLCBvbmUgcmVtb3ZlLnAtIFN0b3JhZ2U6IHJlbW92ZXMgb25lIGl0ZW0uMHBva2VfZGVwb3NpdAwBJHRocmVzaG9sZNEDAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc10BAURWZWM8VDo6QWNjb3VudElkPgABJGNhbGxfaGFzaAgBIFt1ODsgMzJdAAQ09FBva2UgdGhlIGRlcG9zaXQgcmVzZXJ2ZWQgZm9yIGFuIGV4aXN0aW5nIG11bHRpc2lnIG9wZXJhdGlvbi4AYQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgbXVzdCBiZSB0aGUgb3JpZ2luYWwgZGVwb3NpdG9yIG9mXHRoZSBtdWx0aXNpZyBvcGVyYXRpb24uAAEBVGhlIHRyYW5zYWN0aW9uIGZlZSBpcyB3YWl2ZWQgaWYgdGhlIGRlcG9zaXQgYW1vdW50IGhhcyBjaGFuZ2VkLgAZAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIG5lZWRlZCBmb3IgdGhpcyBtdWx0aXNpZy49AS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBhcmUgcGFydCBvZiB0aGUsICBtdWx0aXNpZy4FAS0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRoaXMgZGVwb3NpdCBpcyByZXNlcnZlZCBmb3IuAIxFbWl0cyBgRGVwb3NpdFBva2VkYCBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4RBAQYT3B0aW9uBARUARUEAQgQTm9uZQAAABBTb21lBAAVBAAAAQAAFQQIPHBhbGxldF9tdWx0aXNpZyRUaW1lcG9pbnQELEJsb2NrTnVtYmVyATgACAEYaGVpZ2h0OAEsQmxvY2tOdW1iZXIAARRpbmRleDgBDHUzMgAAGQQMMHBhbGxldF9wcm94eRhwYWxsZXQQQ2FsbAQEVAABLBRwcm94eQwBEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABQGZvcmNlX3Byb3h5X3R5cGUdBAFQT3B0aW9uPFQ6OlByb3h5VHlwZT4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAAJE0BRGlzcGF0Y2ggdGhlIGdpdmVuIGBjYWxsYCBmcm9tIGFuIGFjY291bnQgdGhhdCB0aGUgc2VuZGVyIGlzIGF1dGhvcmlzZWQgZm9yIHRocm91Z2gwYGFkZF9wcm94eWAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuYQEtIGBmb3JjZV9wcm94eV90eXBlYDogU3BlY2lmeSB0aGUgZXhhY3QgcHJveHkgdHlwZSB0byBiZSB1c2VkIGFuZCBjaGVja2VkIGZvciB0aGlzIGNhbGwu0C0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC4kYWRkX3Byb3h5DAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGUhBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgABJEUBUmVnaXN0ZXIgYSBwcm94eSBhY2NvdW50IGZvciB0aGUgc2VuZGVyIHRoYXQgaXMgYWJsZSB0byBtYWtlIGNhbGxzIG9uIGl0cyBiZWhhbGYuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6EQEtIGBwcm94eWA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIGBjYWxsZXJgIHdvdWxkIGxpa2UgdG8gbWFrZSBhIHByb3h5LvwtIGBwcm94eV90eXBlYDogVGhlIHBlcm1pc3Npb25zIGFsbG93ZWQgZm9yIHRoaXMgcHJveHkgYWNjb3VudC5NAS0gYGRlbGF5YDogVGhlIGFubm91bmNlbWVudCBwZXJpb2QgcmVxdWlyZWQgb2YgdGhlIGluaXRpYWwgcHJveHkuIFdpbGwgZ2VuZXJhbGx5IGJlFHplcm8uMHJlbW92ZV9wcm94eQwBIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShwcm94eV90eXBlIQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4AAhyoVW5yZWdpc3RlciBhIHByb3h5IGFjY291bnQgZm9yIHRoZSBzZW5kZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6JQEtIGBwcm94eWA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIGBjYWxsZXJgIHdvdWxkIGxpa2UgdG8gcmVtb3ZlIGFzIGEgcHJveHkuQQEtIGBwcm94eV90eXBlYDogVGhlIHBlcm1pc3Npb25zIGN1cnJlbnRseSBlbmFibGVkIGZvciB0aGUgcmVtb3ZlZCBwcm94eSBhY2NvdW50LjhyZW1vdmVfcHJveGllcwADGLRVbnJlZ2lzdGVyIGFsbCBwcm94eSBhY2NvdW50cyBmb3IgdGhlIHNlbmRlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBdAVdBUk5JTkc6IFRoaXMgbWF5IGJlIGNhbGxlZCBvbiBhY2NvdW50cyBjcmVhdGVkIGJ5IGBjcmVhdGVfcHVyZWAsIGhvd2V2ZXIgaWYgZG9uZSwgdGhlblkBdGhlIHVucmVzZXJ2ZWQgZmVlcyB3aWxsIGJlIGluYWNjZXNzaWJsZS4gKipBbGwgYWNjZXNzIHRvIHRoaXMgYWNjb3VudCB3aWxsIGJlIGxvc3QuKiosY3JlYXRlX3B1cmUMAShwcm94eV90eXBlIQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4AARRpbmRleNEDAQx1MTYABEg5AVNwYXduIGEgZnJlc2ggbmV3IGFjY291bnQgdGhhdCBpcyBndWFyYW50ZWVkIHRvIGJlIG90aGVyd2lzZSBpbmFjY2Vzc2libGUsIGFuZPxpbml0aWFsaXplIGl0IHdpdGggYSBwcm94eSBvZiBgcHJveHlfdHlwZWAgZm9yIGBvcmlnaW5gIHNlbmRlci4AbFJlcXVpcmVzIGEgYFNpZ25lZGAgb3JpZ2luLgBRAS0gYHByb3h5X3R5cGVgOiBUaGUgdHlwZSBvZiB0aGUgcHJveHkgdGhhdCB0aGUgc2VuZGVyIHdpbGwgYmUgcmVnaXN0ZXJlZCBhcyBvdmVyIHRoZU0BbmV3IGFjY291bnQuIFRoaXMgd2lsbCBhbG1vc3QgYWx3YXlzIGJlIHRoZSBtb3N0IHBlcm1pc3NpdmUgYFByb3h5VHlwZWAgcG9zc2libGUgdG94YWxsb3cgZm9yIG1heGltdW0gZmxleGliaWxpdHkuUQEtIGBpbmRleGA6IEEgZGlzYW1iaWd1YXRpb24gaW5kZXgsIGluIGNhc2UgdGhpcyBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgaW4gdGhlIHNhbWVdAXRyYW5zYWN0aW9uIChlLmcuIHdpdGggYHV0aWxpdHk6OmJhdGNoYCkuIFVubGVzcyB5b3UncmUgdXNpbmcgYGJhdGNoYCB5b3UgcHJvYmFibHkganVzdEB3YW50IHRvIHVzZSBgMGAuTQEtIGBkZWxheWA6IFRoZSBhbm5vdW5jZW1lbnQgcGVyaW9kIHJlcXVpcmVkIG9mIHRoZSBpbml0aWFsIHByb3h5LiBXaWxsIGdlbmVyYWxseSBiZRR6ZXJvLgBRAUZhaWxzIHdpdGggYER1cGxpY2F0ZWAgaWYgdGhpcyBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCBpbiB0aGlzIHRyYW5zYWN0aW9uLCBmcm9tIHRoZZhzYW1lIHNlbmRlciwgd2l0aCB0aGUgc2FtZSBwYXJhbWV0ZXJzLgDkRmFpbHMgaWYgdGhlcmUgYXJlIGluc3VmZmljaWVudCBmdW5kcyB0byBwYXkgZm9yIGRlcG9zaXQuJGtpbGxfcHVyZRQBHHNwYXduZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGUhBAEwVDo6UHJveHlUeXBlAAEUaW5kZXjRAwEMdTE2AAEYaGVpZ2h0YAFEQmxvY2tOdW1iZXJGb3I8VD4AASRleHRfaW5kZXhgAQx1MzIABUCgUmVtb3ZlcyBhIHByZXZpb3VzbHkgc3Bhd25lZCBwdXJlIHByb3h5LgBJAVdBUk5JTkc6ICoqQWxsIGFjY2VzcyB0byB0aGlzIGFjY291bnQgd2lsbCBiZSBsb3N0LioqIEFueSBmdW5kcyBoZWxkIGluIGl0IHdpbGwgYmU0aW5hY2Nlc3NpYmxlLgBZAVJlcXVpcmVzIGEgYFNpZ25lZGAgb3JpZ2luLCBhbmQgdGhlIHNlbmRlciBhY2NvdW50IG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgYSBjYWxsIHRvsGBjcmVhdGVfcHVyZWAgd2l0aCBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMuAFUBLSBgc3Bhd25lcmA6IFRoZSBhY2NvdW50IHRoYXQgb3JpZ2luYWxseSBjYWxsZWQgYGNyZWF0ZV9wdXJlYCB0byBjcmVhdGUgdGhpcyBhY2NvdW50LlUBLSBgaW5kZXhgOiBUaGUgZGlzYW1iaWd1YXRpb24gaW5kZXggb3JpZ2luYWxseSBwYXNzZWQgdG8gYGNyZWF0ZV9wdXJlYC4gUHJvYmFibHkgYDBgLgkBLSBgcHJveHlfdHlwZWA6IFRoZSBwcm94eSB0eXBlIG9yaWdpbmFsbHkgcGFzc2VkIHRvIGBjcmVhdGVfcHVyZWAuRQEtIGBoZWlnaHRgOiBUaGUgaGVpZ2h0IG9mIHRoZSBjaGFpbiB3aGVuIHRoZSBjYWxsIHRvIGBjcmVhdGVfcHVyZWAgd2FzIHByb2Nlc3NlZC5RAS0gYGV4dF9pbmRleGA6IFRoZSBleHRyaW5zaWMgaW5kZXggaW4gd2hpY2ggdGhlIGNhbGwgdG8gYGNyZWF0ZV9wdXJlYCB3YXMgcHJvY2Vzc2VkLgA1AUZhaWxzIHdpdGggYE5vUGVybWlzc2lvbmAgaW4gY2FzZSB0aGUgY2FsbGVyIGlzIG5vdCBhIHByZXZpb3VzbHkgY3JlYXRlZCBwdXJl+GFjY291bnQgd2hvc2UgYGNyZWF0ZV9wdXJlYCBjYWxsIGhhcyBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMuIGFubm91bmNlCAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgAGPAUBUHVibGlzaCB0aGUgaGFzaCBvZiBhIHByb3h5LWNhbGwgdGhhdCB3aWxsIGJlIG1hZGUgaW4gdGhlIGZ1dHVyZS4AXQFUaGlzIG11c3QgYmUgY2FsbGVkIHNvbWUgbnVtYmVyIG9mIGJsb2NrcyBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgYHByb3h5YCBpcyBhdHRlbXB0ZWQlAWlmIHRoZSBkZWxheSBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3h5IHJlbGF0aW9uc2hpcCBpcyBncmVhdGVyIHRoYW4gemVyby4AEQFObyBtb3JlIHRoYW4gYE1heFBlbmRpbmdgIGFubm91bmNlbWVudHMgbWF5IGJlIG1hZGUgYXQgYW55IG9uZSB0aW1lLgAJAVRoaXMgd2lsbCB0YWtlIGEgZGVwb3NpdCBvZiBgQW5ub3VuY2VtZW50RGVwb3NpdEZhY3RvcmAgYXMgd2VsbCBhcxkBYEFubm91bmNlbWVudERlcG9zaXRCYXNlYCBpZiB0aGVyZSBhcmUgbm8gb3RoZXIgcGVuZGluZyBhbm5vdW5jZW1lbnRzLgAlAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBhIHByb3h5IG9mIGByZWFsYC4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuFQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC5McmVtb3ZlX2Fubm91bmNlbWVudAgBEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGNhbGxfaGFzaDwBNENhbGxIYXNoT2Y8VD4AByhwUmVtb3ZlIGEgZ2l2ZW4gYW5ub3VuY2VtZW50LgBZAU1heSBiZSBjYWxsZWQgYnkgYSBwcm94eSBhY2NvdW50IHRvIHJlbW92ZSBhIGNhbGwgdGhleSBwcmV2aW91c2x5IGFubm91bmNlZCBhbmQgcmV0dXJuMHRoZSBkZXBvc2l0LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLhUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuTHJlamVjdF9hbm5vdW5jZW1lbnQIASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgAIKLBSZW1vdmUgdGhlIGdpdmVuIGFubm91bmNlbWVudCBvZiBhIGRlbGVnYXRlLgBhAU1heSBiZSBjYWxsZWQgYnkgYSB0YXJnZXQgKHByb3hpZWQpIGFjY291bnQgdG8gcmVtb3ZlIGEgY2FsbCB0aGF0IG9uZSBvZiB0aGVpciBkZWxlZ2F0ZXMlAShgZGVsZWdhdGVgKSBoYXMgYW5ub3VuY2VkIHRoZXkgd2FudCB0byBleGVjdXRlLiBUaGUgZGVwb3NpdCBpcyByZXR1cm5lZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczr0LSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0aGF0IHByZXZpb3VzbHkgYW5ub3VuY2VkIHRoZSBjYWxsLrwtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlLjxwcm94eV9hbm5vdW5jZWQQASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAZm9yY2VfcHJveHlfdHlwZR0EAVBPcHRpb248VDo6UHJveHlUeXBlPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAksTQFEaXNwYXRjaCB0aGUgZ2l2ZW4gYGNhbGxgIGZyb20gYW4gYWNjb3VudCB0aGF0IHRoZSBzZW5kZXIgaXMgYXV0aG9yaXplZCBmb3IgdGhyb3VnaDBgYWRkX3Byb3h5YC4AqFJlbW92ZXMgYW55IGNvcnJlc3BvbmRpbmcgYW5ub3VuY2VtZW50KHMpLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLmEBLSBgZm9yY2VfcHJveHlfdHlwZWA6IFNwZWNpZnkgdGhlIGV4YWN0IHByb3h5IHR5cGUgdG8gYmUgdXNlZCBhbmQgY2hlY2tlZCBmb3IgdGhpcyBjYWxsLtAtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuMHBva2VfZGVwb3NpdAAKIEkBUG9rZSAvIEFkanVzdCBkZXBvc2l0cyBtYWRlIGZvciBwcm94aWVzIGFuZCBhbm5vdW5jZW1lbnRzIGJhc2VkIG9uIGN1cnJlbnQgdmFsdWVzLg0BVGhpcyBjYW4gYmUgdXNlZCBieSBhY2NvdW50cyB0byBwb3NzaWJseSBsb3dlciB0aGVpciBsb2NrZWQgYW1vdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAAEBVGhlIHRyYW5zYWN0aW9uIGZlZSBpcyB3YWl2ZWQgaWYgdGhlIGRlcG9zaXQgYW1vdW50IGhhcyBjaGFuZ2VkLgCMRW1pdHMgYERlcG9zaXRQb2tlZGAgaWYgc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuHQQEGE9wdGlvbgQEVAEhBAEIEE5vbmUAAAAQU29tZQQAIQQAAAEAACEECHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lJFByb3h5VHlwZQABMAxBbnkAAAAsTm9uVHJhbnNmZXIAAQAsQ2FuY2VsUHJveHkAAgAYQXNzZXRzAAMAKEFzc2V0T3duZXIABAAwQXNzZXRNYW5hZ2VyAAUAIENvbGxhdG9yAAYAKEdvdmVybmFuY2UABwAcU3Rha2luZwAIADxOb21pbmF0aW9uUG9vbHMACQAcQXVjdGlvbgAKAEBQYXJhUmVnaXN0cmF0aW9uAAsAACUEDDhwYWxsZXRfaW5kaWNlcxhwYWxsZXQQQ2FsbAQEVAABGBRjbGFpbQQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAAwmEFzc2lnbiBhbiBwcmV2aW91c2x5IHVuYXNzaWduZWQgaW5kZXguANxQYXltZW50OiBgRGVwb3NpdGAgaXMgcmVzZXJ2ZWQgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4A8C0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIGNsYWltZWQuIFRoaXMgbXVzdCBub3QgYmUgaW4gdXNlLgCQRW1pdHMgYEluZGV4QXNzaWduZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLiB0cmFuc2ZlcggBDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAATBdAUFzc2lnbiBhbiBpbmRleCBhbHJlYWR5IG93bmVkIGJ5IHRoZSBzZW5kZXIgdG8gYW5vdGhlciBhY2NvdW50LiBUaGUgYmFsYW5jZSByZXNlcnZhdGlvbrhpcyBlZmZlY3RpdmVseSB0cmFuc2ZlcnJlZCB0byB0aGUgbmV3IGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AJQEtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSByZS1hc3NpZ25lZC4gVGhpcyBtdXN0IGJlIG93bmVkIGJ5IHRoZSBzZW5kZXIuXQEtIGBuZXdgOiB0aGUgbmV3IG93bmVyIG9mIHRoZSBpbmRleC4gVGhpcyBmdW5jdGlvbiBpcyBhIG5vLW9wIGlmIGl0IGlzIGVxdWFsIHRvIHNlbmRlci4AkEVtaXRzIGBJbmRleEFzc2lnbmVkYCBpZiBzdWNjZXNzZnVsLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC4QZnJlZQQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAIwlEZyZWUgdXAgYW4gaW5kZXggb3duZWQgYnkgdGhlIHNlbmRlci4AXQFQYXltZW50OiBBbnkgcHJldmlvdXMgZGVwb3NpdCBwbGFjZWQgZm9yIHRoZSBpbmRleCBpcyB1bnJlc2VydmVkIGluIHRoZSBzZW5kZXIgYWNjb3VudC4AVQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IG93biB0aGUgaW5kZXguAA0BLSBgaW5kZXhgOiB0aGUgaW5kZXggdG8gYmUgZnJlZWQuIFRoaXMgbXVzdCBiZSBvd25lZCBieSB0aGUgc2VuZGVyLgCERW1pdHMgYEluZGV4RnJlZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLjhmb3JjZV90cmFuc2ZlcgwBDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAARhmcmVlemVZAQEQYm9vbAADNFUBRm9yY2UgYW4gaW5kZXggdG8gYW4gYWNjb3VudC4gVGhpcyBkb2Vzbid0IHJlcXVpcmUgYSBkZXBvc2l0LiBJZiB0aGUgaW5kZXggaXMgYWxyZWFkeehoZWxkLCB0aGVuIGFueSBkZXBvc2l0IGlzIHJlaW1idXJzZWQgdG8gaXRzIGN1cnJlbnQgb3duZXIuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uAKQtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSAocmUtKWFzc2lnbmVkLl0BLSBgbmV3YDogdGhlIG5ldyBvd25lciBvZiB0aGUgaW5kZXguIFRoaXMgZnVuY3Rpb24gaXMgYSBuby1vcCBpZiBpdCBpcyBlcXVhbCB0byBzZW5kZXIuQQEtIGBmcmVlemVgOiBpZiBzZXQgdG8gYHRydWVgLCB3aWxsIGZyZWV6ZSB0aGUgaW5kZXggc28gaXQgY2Fubm90IGJlIHRyYW5zZmVycmVkLgCQRW1pdHMgYEluZGV4QXNzaWduZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLhhmcmVlemUEARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAAEMEEBRnJlZXplIGFuIGluZGV4IHNvIGl0IHdpbGwgYWx3YXlzIHBvaW50IHRvIHRoZSBzZW5kZXIgYWNjb3VudC4gVGhpcyBjb25zdW1lcyB0aGUgZGVwb3NpdC4AWQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGhhdmUgYWxub24tZnJvemVuIGFjY291bnQgYGluZGV4YC4ArC0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIGZyb3plbiBpbiBwbGFjZS4AiEVtaXRzIGBJbmRleEZyb3plbmAgaWYgc3VjY2Vzc2Z1bC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuMHBva2VfZGVwb3NpdAQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAUonFBva2UgdGhlIGRlcG9zaXQgcmVzZXJ2ZWQgZm9yIGFuIGluZGV4LgBZAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgaGF2ZSBhbG5vbi1mcm96ZW4gYWNjb3VudCBgaW5kZXhgLgBZAVRoZSB0cmFuc2FjdGlvbiBmZWVzIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBpcyBjaGFuZ2VkIGFmdGVyIHBva2luZy9yZWNvbnNpZGVyYXRpb24uAPwtIGBpbmRleGA6IHRoZSBpbmRleCB3aG9zZSBkZXBvc2l0IGlzIHRvIGJlIHBva2VkL3JlY29uc2lkZXJlZC4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLikEDDRwYWxsZXRfYXNzZXRzGHBhbGxldBBDYWxsCARUAARJAAGIGGNyZWF0ZQwBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlAABM6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50WQEBEGJvb2wAASxtaW5fYmFsYW5jZVEBAShUOjpCYWxhbmNlAAFM+Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uALRUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AWQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXIgcGVybWlzc2lvbnMlAW92ZXIgdGhpcyBhc3NldCwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWA0c3RhcnRfZGVzdHJveQQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgACMNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlmuGFuIGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS5AZGVzdHJveV9hY2NvdW50cwQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABSjEQ29tcGxldGUgZGVzdHJveWluZyBhc3NldCBhbmQgdW5yZXNlcnZlIGN1cnJlbmN5LgBVAWBmaW5pc2hfZGVzdHJveWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGVZAWFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLiBBbGwgYWNjb3VudHMgb3IgYXBwcm92YWxzIHNob3VsZCBiZSBkZXN0cm95ZWQgYmVmb3JlFGhhbmQuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A4EVhY2ggc3VjY2Vzc2Z1bCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZGAgZXZlbnQuEG1pbnQMAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50UQEBKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFEBAShUOjpCYWxhbmNlAAc8RQFSZWR1Y2UgdGhlIGJhbGFuY2Ugb2YgYHdob2AgYnkgYXMgbXVjaCBhcyBwb3NzaWJsZSB1cCB0byBgYW1vdW50YCBhc3NldHMgb2YgYGlkYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBNYW5hZ2VyIG9mIHRoZSBhc3NldCBgaWRgLgDQQmFpbHMgd2l0aCBgTm9BY2NvdW50YCBpZiB0aGUgYHdob2AgaXMgYWxyZWFkeSBkZWFkLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBidXJuZWQuoC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQgZnJvbS4pAS0gYGFtb3VudGA6IFRoZSBtYXhpbXVtIGFtb3VudCBieSB3aGljaCBgd2hvYCdzIGJhbGFuY2Ugc2hvdWxkIGJlIHJlZHVjZWQuAFEBRW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuIElmIHRoaXMgdGFrZXMgdGhlIGJhbGFuY2UgdG8gYmVsb3cgdGhlOQFtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCBidXJuZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgCQFNb2RlczogUG9zdC1leGlzdGVuY2Ugb2YgYHdob2A7IFByZSAmIHBvc3QgWm9tYmllLXN0YXR1cyBvZiBgd2hvYC4gdHJhbnNmZXIMAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFEBAShUOjpCYWxhbmNlAAhI0E1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLkx0cmFuc2Zlcl9rZWVwX2FsaXZlDAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRRAQEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50UQEBKFQ6OkJhbGFuY2UACky0TW92ZSBzb21lIGFzc2V0cyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6YLSBgc291cmNlYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZC6ULSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgYHNvdXJjZWAncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRZAWBkZXN0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluTQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgYHNvdXJjZWAgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dNRiZWxvdyB0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGBkZXN0YDsgUG9zdC1leGlzdGVuY2Ugb2YgYHNvdXJjZWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZhxgZGVzdGAuGGZyZWV6ZQgBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAswVQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCBmcm9tIGFuIGFjY291bnQgYHdob2AuIGB3aG9gTQFtdXN0IGFscmVhZHkgZXhpc3QgYXMgYW4gZW50cnkgaW4gYEFjY291bnRgcyBvZiB0aGUgYXNzZXQuIElmIHlvdSB3YW50IHRvIGZyZWV6ZSBhbvRhY2NvdW50IHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSwgdXNlIGB0b3VjaF9vdGhlcmAgZmlyc3QuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6ILSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjoQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmZyb3plbi4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWAwZnJlZXplX2Fzc2V0BAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAA0k8ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGNsYXNzLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgKHRoYXdfYXNzZXQEAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADiTEQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA8odENoYW5nZSB0aGUgT3duZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+ABAwxENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4ABFAeFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDYRnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6UQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUgKiAobmFtZS5sZW4gKyBzeW1ib2wubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEEAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAEiyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4ApEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgYXNzZXQgb3duZXIuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2Vfc2V0X21ldGFkYXRhFAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plblkBARBib29sABM4uEZvcmNlIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQgdG8gc29tZSB2YWx1ZS4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBoQW55IGRlcG9zaXQgaXMgbGVmdCBhbG9uZS4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgBRAVdlaWdodDogYE8oTiArIFMpYCB3aGVyZSBOIGFuZCBTIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIGFuZCBzeW1ib2wgcmVzcGVjdGl2ZWx5LlBmb3JjZV9jbGVhcl9tZXRhZGF0YQQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VRAQEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnRZAQEQYm9vbAABJGlzX2Zyb3plblkBARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50UQEBKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb24AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFEBAShUOjpCYWxhbmNlABlITQFUcmFuc2ZlciBzb21lIGFzc2V0IGJhbGFuY2UgZnJvbSBhIHByZXZpb3VzbHkgZGVsZWdhdGVkIGFjY291bnQgdG8gc29tZSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBieSB0aGUgYG93bmVyYCB0byB0aGUcc2lnbmVyLgBZAUlmIHRoZSBlbnRpcmUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2ZlciBpcyB0cmFuc2ZlcnJlZCwgdGhlbiBhbnkgZGVwb3NpdCBwcmV2aW91c2x5tHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBpcyB1bnJlc2VydmVkLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuYQEtIGBvd25lcmA6IFRoZSBhY2NvdW50IHdoaWNoIHByZXZpb3VzbHkgYXBwcm92ZWQgZm9yIGEgdHJhbnNmZXIgb2YgYXQgbGVhc3QgYGFtb3VudGAgYW5kvGZyb20gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugd2lsbCBiZSB3aXRoZHJhd24uYQEtIGBkZXN0aW5hdGlvbmA6IFRoZSBhY2NvdW50IHRvIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIG9mIGBhbW91bnRgIHdpbGwgYmUgdHJhbnNmZXJyZWQutC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXRzIHRvIHRyYW5zZmVyLgCcRW1pdHMgYFRyYW5zZmVycmVkQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYBR0b3VjaAQBCGlkYAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAaJMBDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3Igbm9uLXByb3ZpZGVyIGFzc2V0cy4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhhyZWZ1bmQIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAShhbGxvd19idXJuWQEBEGJvb2wAGzRZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZGABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdLIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi5hAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLCB0aGUgYXNzZXQgc3RhdHVzIG11c3QoICBiZSBsaXZlLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHjRdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZVkBARBib29sACBAHQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhc3NldCBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0PQFhbnkgaGVsZCwgZnJvemVuLCBvciBtaW5pbXVtIGJhbGFuY2UgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQuoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYXNzZXQgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IHRvIGJlIGtpbGxlZEUBICAoZmFsc2UpLCBvciB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgbWluaW11bSBiYWxhbmNlLCB3aGljaCB3aWxs6CAgZ3VhcmFudGVlIHRvIGtlZXAgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IGFsaXZlICh0cnVlKS4wc2V0X3Jlc2VydmVzCAEIaWRgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgcmVzZXJ2ZXMtBAHIQm91bmRlZFZlYzxUOjpSZXNlcnZlRGF0YSwgQ29uc3RVMzI8TUFYX1JFU0VSVkVTPj4AISTEU2V0cyB0aGUgdHJ1c3RlZCByZXNlcnZlIGluZm9ybWF0aW9uIG9mIGFuIGFzc2V0LgBVAU9yaWdpbiBtdXN0IGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4gVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQlAWBDcmVhdGVPcmlnaW5gIG9yIGJlIHRoZSBzaWduZWQgYG93bmVyYCBjb25maWd1cmVkIGR1cmluZyBhc3NldCBjcmVhdGlvbi4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LvAtIGByZXNlcnZlc2A6IFRoZSBmdWxsIGxpc3Qgb2YgdHJ1c3RlZCByZXNlcnZlcyBpbmZvcm1hdGlvbi4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLi0EDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBEARTAAAEADEEARhWZWM8VD4AADEEAAACEAA1BAw4cGFsbGV0X3VuaXF1ZXMYcGFsbGV0EENhbGwIBFQABEkAAWgYY3JlYXRlCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAEAJAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAdAVRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgCsYEl0ZW1EZXBvc2l0YCBmdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkLgAsUGFyYW1ldGVyczphAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGNvbGxlY3Rpb24uIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZS5FAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJhtZW1iZXIgb2YgdGhlIGNvbGxlY3Rpb24ncyBhZG1pbiB0ZWFtLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEwZnJlZV9ob2xkaW5nWQEBEGJvb2wAAUQZAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4ArFRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4ASQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBpdGVtLiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UuOQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNvbGxlY3Rpb24gb2YgaXRlbXMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXI0ICBwZXJtaXNzaW9ucyEBb3ZlciB0aGlzIGl0ZW0sIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAcZGVzdHJveQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARx3aXRuZXNzOQQBOERlc3Ryb3lXaXRuZXNzAAI8nERlc3Ryb3kgYSBjb2xsZWN0aW9uIG9mIGZ1bmdpYmxlIGl0ZW1zLgBdAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZWhvd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgAFAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB0byBiZSBkZXN0cm95ZWQuMQEtIGB3aXRuZXNzYDogSW5mb3JtYXRpb24gb24gdGhlIGl0ZW1zIG1pbnRlZCBpbiB0aGUgY29sbGVjdGlvbi4gVGhpcyBtdXN0IGJlIGNvcnJlY3QuAKBFbWl0cyBgRGVzdHJveWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuAGRXZWlnaHQ6IGBPKG4gKyBtKWAgd2hlcmU6VC0gYG4gPSB3aXRuZXNzLml0ZW1zYHgtIGBtID0gd2l0bmVzcy5pdGVtX21ldGFkYXRhc2BoLSBgYSA9IHdpdG5lc3MuYXR0cmlidXRlc2AQbWludAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADLKBNaW50IGFuIGl0ZW0gb2YgYSBwYXJ0aWN1bGFyIGNvbGxlY3Rpb24uAEEBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBJc3N1ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBtaW50ZWQuyC0gYGl0ZW1gOiBUaGUgaXRlbSB2YWx1ZSBvZiB0aGUgaXRlbSB0byBiZSBtaW50ZWQu2C0gYGJlbmVmaWNpYXJ5YDogVGhlIGluaXRpYWwgb3duZXIgb2YgdGhlIG1pbnRlZCBpdGVtLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAQYnVybgwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEsY2hlY2tfb3duZXI9BAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAEPFhEZXN0cm95IGEgc2luZ2xlIGl0ZW0uAPRPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBiZSBlaXRoZXI6gC0gdGhlIEFkbWluIG9mIHRoZSBgY29sbGVjdGlvbmA7aC0gdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLrAtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLlEBLSBgY2hlY2tfb3duZXJgOiBJZiBgU29tZWAgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCB3aXRoIGBXcm9uZ093bmVyYCB1bmxlc3MgdGhleCAgaXRlbSBpcyBvd25lZCBieSB0aGlzIHZhbHVlLgC0RW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuADhXZWlnaHQ6IGBPKDEpYHxNb2RlczogYGNoZWNrX293bmVyLmlzX3NvbWUoKWAuIHRyYW5zZmVyDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABUTATW92ZSBhbiBpdGVtIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuALRUaGlzIHJlc2V0cyB0aGUgYXBwcm92ZWQgYWNjb3VudCBvZiB0aGUgaXRlbS4A9E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlIGVpdGhlcjqALSB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYDtoLSB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDs1AS0gdGhlIGFwcHJvdmVkIGRlbGVnYXRlIGZvciB0aGUgYGl0ZW1gIChpbiB0aGlzIGNhc2UsIHRoZSBhcHByb3ZhbCBpcyByZXNldCkuAChBcmd1bWVudHM69C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSB0cmFuc2ZlcnJlZC7ELSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIHRyYW5zZmVycmVkLtwtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gcmVjZWl2ZSBvd25lcnNoaXAgb2YgdGhlIGl0ZW0uAFBFbWl0cyBgVHJhbnNmZXJyZWRgLgA4V2VpZ2h0OiBgTygxKWAkcmVkZXBvc2l0CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFGl0ZW1zQQQBOFZlYzxUOjpJdGVtSWQ+AAZEmFJlZXZhbHVhdGUgdGhlIGRlcG9zaXRzIG9uIHNvbWUgaXRlbXMuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBmcm96ZW4uKQEtIGBpdGVtc2A6IFRoZSBpdGVtcyBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBkZXBvc2l0cyB3aWxsIGJlIHJlZXZhbHVhdGVkLgAtAU5PVEU6IFRoaXMgZXhpc3RzIGFzIGEgYmVzdC1lZmZvcnQgZnVuY3Rpb24uIEFueSBpdGVtcyB3aGljaCBhcmUgdW5rbm93biBvcjkBaW4gdGhlIGNhc2UgdGhhdCB0aGUgb3duZXIgYWNjb3VudCBkb2VzIG5vdCBoYXZlIHJlc2VydmFibGUgZnVuZHMgdG8gcGF5IGZvciBhTQFkZXBvc2l0IGluY3JlYXNlIGFyZSBpZ25vcmVkLiBHZW5lcmFsbHkgdGhlIG93bmVyIGlzbid0IGdvaW5nIHRvIGNhbGwgdGhpcyBvbiBpdGVtc1UBd2hvc2UgZXhpc3RpbmcgZGVwb3NpdCBpcyBsZXNzIHRoYW4gdGhlIHJlZnJlc2hlZCBkZXBvc2l0IGFzIGl0IHdvdWxkIG9ubHkgY29zdCB0aGVtLHhzbyBpdCdzIG9mIGxpdHRsZSBjb25zZXF1ZW5jZS4AWQFJdCB3aWxsIHN0aWxsIHJldHVybiBhbiBlcnJvciBpbiB0aGUgY2FzZSB0aGF0IHRoZSBjb2xsZWN0aW9uIGlzIHVua25vd24gb2YgdGhlIHNpZ25lcnBpcyBub3QgcGVybWl0dGVkIHRvIGNhbGwgaXQuAGBXZWlnaHQ6IGBPKGl0ZW1zLmxlbigpKWAYZnJlZXplCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAByjIRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXIgb2YgYW4gaXRlbS4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgZnJvemVuLrAtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQACCioUmUtYWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVyIG9mIGFuIGl0ZW0uAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHRoYXdlZC6wLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBEZnJlZXplX2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAkk/ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgYSB3aG9sZSBjb2xsZWN0aW9uLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBmcm96ZW4uAGRFbWl0cyBgQ29sbGVjdGlvbkZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYDx0aGF3X2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAok3FJlLWFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIGEgd2hvbGUgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYGNvbGxlY3Rpb25gLgCwLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHRvIGJlIHRoYXdlZC4AZEVtaXRzIGBDb2xsZWN0aW9uVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgALLIRDaGFuZ2UgdGhlIE93bmVyIG9mIGEgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgD0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHdob3NlIG93bmVyIHNob3VsZCBiZSBjaGFuZ2VkLgkBLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhleSBtdXN0IGhhdmUgY2FsbGVkSQEgIGBzZXRfYWNjZXB0X293bmVyc2hpcGAgd2l0aCBgY29sbGVjdGlvbmAgaW4gb3JkZXIgZm9yIHRoaXMgb3BlcmF0aW9uIHRvIHN1Y2NlZWQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAMMNRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYSBjb2xsZWN0aW9uLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAPAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gd2hvc2UgdGVhbSBzaG91bGQgYmUgY2hhbmdlZC64LSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBjb2xsZWN0aW9uLrAtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBjb2xsZWN0aW9uLsAtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgY29sbGVjdGlvbi4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AA04FQFBcHByb3ZlIGFuIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4ATQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZfhlaXRoZXIgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAgb3IgdGhlIGFkbWluIG9mIHRoZSBjb2xsZWN0aW9uLgBFAS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyLhUBLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIuGQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgdGhlIGl0ZW0uABkBSW1wb3J0YW50IE5PVEU6IFRoZSBgYXBwcm92ZWRgIGFjY291bnQgZ2V0cyByZXNldCBhZnRlciBlYWNoIHRyYW5zZmVyLgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABUG1heWJlX2NoZWNrX2RlbGVnYXRlPQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4ADkARAUNhbmNlbCB0aGUgcHJpb3IgYXBwcm92YWwgZm9yIHRoZSB0cmFuc2ZlciBvZiBhbiBpdGVtIGJ5IGEgZGVsZWdhdGUuAFhPcmlnaW4gbXVzdCBiZSBlaXRoZXI6VC0gdGhlIGBGb3JjZWAgb3JpZ2luO/wtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYDvkLSBgU2lnbmVkYCB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AChBcmd1bWVudHM6PQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWwgd2lsbCBiZSBjYW5jZWxsZWQuDQEtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWwgd2lsbCBiZSBjYW5jZWxsZWQuUQEtIGBtYXliZV9jaGVja19kZWxlZ2F0ZWA6IElmIGBTb21lYCB3aWxsIGVuc3VyZSB0aGF0IHRoZSBnaXZlbiBhY2NvdW50IGlzIHRoZSBvbmUgdG+wICB3aGljaCBwZXJtaXNzaW9uIG9mIHRyYW5zZmVyIGlzIGRlbGVnYXRlZC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRGZvcmNlX2l0ZW1fc3RhdHVzHAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATBmcmVlX2hvbGRpbmdZAQEQYm9vbAABJGlzX2Zyb3plblkBARBib29sAA9AlEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gaXRlbS4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0umC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGl0ZW0uoC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgaXRlbS6YLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgaXRlbS6oLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGl0ZW0uUQEtIGBmcmVlX2hvbGRpbmdgOiBXaGV0aGVyIGEgZGVwb3NpdCBpcyB0YWtlbiBmb3IgaG9sZGluZyBhbiBpdGVtIG9mIHRoaXMgY29sbGVjdGlvbi45AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhpcyBjb2xsZWN0aW9uIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOBFbWl0cyBgSXRlbVN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBpdGVtLgA4V2VpZ2h0OiBgTygxKWA0c2V0X2F0dHJpYnV0ZRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXnBAwFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWV4AXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAQRKhTZXQgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGU0YGNvbGxlY3Rpb25gLgBRAUlmIHRoZSBvcmlnaW4gaXMgU2lnbmVkLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOikBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIChrZXkubGVuICsgdmFsdWUubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC4FAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS7MLSBgdmFsdWVgOiBUaGUgdmFsdWUgdG8gd2hpY2ggdG8gc2V0IHRoZSBhdHRyaWJ1dGUuAFRFbWl0cyBgQXR0cmlidXRlU2V0YC4AOFdlaWdodDogYE8oMSlgPGNsZWFyX2F0dHJpYnV0ZQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXnBAwFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+ABE4sENsZWFyIGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlNGBjb2xsZWN0aW9uYC4AwEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgY29sbGVjdGlvbidzIG93bmVyLgBBAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gY2xlYXIuDQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS4AZEVtaXRzIGBBdHRyaWJ1dGVDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgMHNldF9tZXRhZGF0YRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGF0YUUEAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AASRpc19mcm96ZW5ZAQEQYm9vbAASRHRTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBSWYgdGhlIG9yaWdpbiBpcyBTaWduZWQsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC7sLSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuNQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgZnJvemVuIGFnYWluc3QgZnVydGhlciBjaGFuZ2VzLgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAEzR8Q2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZRxgaXRlbWAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLvQtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgXHNldF9jb2xsZWN0aW9uX21ldGFkYXRhDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGFFBAF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuWQEBEGJvb2wAFECIU2V0IHRoZSBtZXRhZGF0YSBmb3IgYSBjb2xsZWN0aW9uLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4AWQFJZiB0aGUgb3JpZ2luIGlzIGBTaWduZWRgLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOvRgTWV0YWRhdGFEZXBvc2l0QmFzZSArIERlcG9zaXRQZXJCeXRlICogZGF0YS5sZW5gIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuABEBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHVwZGF0ZS5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuNQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgZnJvemVuIGFnYWluc3QgZnVydGhlciBjaGFuZ2VzLgB4RW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYGRjbGVhcl9jb2xsZWN0aW9uX21ldGFkYXRhBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAVMJBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGEgY29sbGVjdGlvbi4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mRHRoZSBgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AJQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAIhFbWl0cyBgQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFBzZXRfYWNjZXB0X293bmVyc2hpcAQBQG1heWJlX2NvbGxlY3Rpb27gAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAWKBEBU2V0IChvciByZXNldCkgdGhlIGFjY2VwdGFuY2Ugb2Ygb3duZXJzaGlwIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudC4AYQFPcmlnaW4gbXVzdCBiZSBgU2lnbmVkYCBhbmQgaWYgYG1heWJlX2NvbGxlY3Rpb25gIGlzIGBTb21lYCwgdGhlbiB0aGUgc2lnbmVyIG11c3QgaGF2ZSBhTHByb3ZpZGVyIHJlZmVyZW5jZS4AUQEtIGBtYXliZV9jb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2Ugb3duZXJzaGlwIHRoZSBzaWduZXIgaXNhASAgd2lsbGluZyB0byBhY2NlcHQsIG9yIGlmIGBOb25lYCwgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZSBzaWduZXIgaXMgd2lsbGluZyB0byBhY2NlcHQgbm9cICBvd25lcnNoaXAgdHJhbnNmZXJhbC4AjEVtaXRzIGBPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZGAuZHNldF9jb2xsZWN0aW9uX21heF9zdXBwbHkIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseTgBDHUzMgAXLOBTZXQgdGhlIG1heGltdW0gYW1vdW50IG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBjb3VsZCBoYXZlLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4A5E5vdGU6IFRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgc3VjY2VlZCBvbmNlIHBlciBjb2xsZWN0aW9uLgDsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGNoYW5nZS4RAS0gYG1heF9zdXBwbHlgOiBUaGUgbWF4aW11bSBhbW91bnQgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGNvdWxkIGhhdmUuANRFbWl0cyBgQ29sbGVjdGlvbk1heFN1cHBseVNldGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLiRzZXRfcHJpY2UQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlSQQBXE9wdGlvbjxJdGVtUHJpY2U8VCwgST4+AAFEd2hpdGVsaXN0ZWRfYnV5ZXI9BAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAYLJRTZXQgKG9yIHJlc2V0KSB0aGUgcHJpY2UgZm9yIGFuIGl0ZW0uAAEBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIHRoZSBvd25lciBvZiB0aGUgYXNzZXQgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqAtIGBpdGVtYDogVGhlIGl0ZW0gdG8gc2V0IHRoZSBwcmljZSBmb3IuDQEtIGBwcmljZWA6IFRoZSBwcmljZSBmb3IgdGhlIGl0ZW0uIFBhc3MgYE5vbmVgLCB0byByZXNldCB0aGUgcHJpY2Uu9C0gYGJ1eWVyYDogUmVzdHJpY3RzIHRoZSBidXkgb3BlcmF0aW9uIHRvIGEgc3BlY2lmaWMgYWNjb3VudC4A7EVtaXRzIGBJdGVtUHJpY2VTZXRgIG9uIHN1Y2Nlc3MgaWYgdGhlIHByaWNlIGlzIG5vdCBgTm9uZWAu7EVtaXRzIGBJdGVtUHJpY2VSZW1vdmVkYCBvbiBzdWNjZXNzIGlmIHRoZSBwcmljZSBpcyBgTm9uZWAuIGJ1eV9pdGVtDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASRiaWRfcHJpY2VVAQE8SXRlbVByaWNlPFQsIEk+ABkkqEFsbG93cyB0byBidXkgYW4gaXRlbSBpZiBpdCdzIHVwIGZvciBzYWxlLgD4T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IG5vdCBiZSB0aGUgb3duZXIgb2YgdGhlIGBpdGVtYC4ArC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbS6sLSBgaXRlbWA6IFRoZSBpdGVtIHRoZSBzZW5kZXIgd2FudHMgdG8gYnV5LtgtIGBiaWRfcHJpY2VgOiBUaGUgcHJpY2UgdGhlIHNlbmRlciBpcyB3aWxsaW5nIHRvIHBheS4AeEVtaXRzIGBJdGVtQm91Z2h0YCBvbiBzdWNjZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy45BAw4cGFsbGV0X3VuaXF1ZXMUdHlwZXM4RGVzdHJveVdpdG5lc3MAAAwBFGl0ZW1zYAEMdTMyAAE4aXRlbV9tZXRhZGF0YXNgAQx1MzIAAShhdHRyaWJ1dGVzYAEMdTMyAAA9BAQYT3B0aW9uBARUAQABCBBOb25lAAAAEFNvbWUEAAAAAAEAAEEEAAACOABFBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAEkEBBhPcHRpb24EBFQBVQEBCBBOb25lAAAAEFNvbWUEAFUBAAABAABNBAwscGFsbGV0X25mdHMYcGFsbGV0EENhbGwIBFQABEkAAZwYY3JlYXRlCAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGNvbmZpZ1EEAWRDb2xsZWN0aW9uQ29uZmlnRm9yPFQsIEk+AAA8CQFJc3N1ZSBhIG5ldyBjb2xsZWN0aW9uIG9mIG5vbi1mdW5naWJsZSBpdGVtcyBmcm9tIGEgcHVibGljIG9yaWdpbi4AHQFUaGlzIG5ldyBjb2xsZWN0aW9uIGhhcyBubyBpdGVtcyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgAlAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AxGBDb2xsZWN0aW9uRGVwb3NpdGAgZnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZC4ALFBhcmFtZXRlcnM6RQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2iYbWVtYmVyIG9mIHRoZSBjb2xsZWN0aW9uJ3MgYWRtaW4gdGVhbS4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUIARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYY29uZmlnUQQBZENvbGxlY3Rpb25Db25maWdGb3I8VCwgST4AATwZAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4ArFRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AOQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNvbGxlY3Rpb24gb2YgaXRlbXMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXJZASAgcGVybWlzc2lvbnMgb3ZlciB0aGlzIGl0ZW0sIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nmCAgYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuAKxFbWl0cyBgRm9yY2VDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYBxkZXN0cm95CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABHHdpdG5lc3NtBAE4RGVzdHJveVdpdG5lc3MAAkScRGVzdHJveSBhIGNvbGxlY3Rpb24gb2YgZnVuZ2libGUgaXRlbXMuAF0BVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlaG93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuANxOT1RFOiBUaGUgY29sbGVjdGlvbiBtdXN0IGhhdmUgMCBpdGVtcyB0byBiZSBkZXN0cm95ZWQuAAUBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGJlIGRlc3Ryb3llZC4xAS0gYHdpdG5lc3NgOiBJbmZvcm1hdGlvbiBvbiB0aGUgaXRlbXMgbWludGVkIGluIHRoZSBjb2xsZWN0aW9uLiBUaGlzIG11c3QgYmUgY29ycmVjdC4AoEVtaXRzIGBEZXN0cm95ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AdFdlaWdodDogYE8obSArIGMgKyBhKWAgd2hlcmU6eC0gYG0gPSB3aXRuZXNzLml0ZW1fbWV0YWRhdGFzYHAtIGBjID0gd2l0bmVzcy5pdGVtX2NvbmZpZ3NgaC0gYGEgPSB3aXRuZXNzLmF0dHJpYnV0ZXNgEG1pbnQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABHG1pbnRfdG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABMHdpdG5lc3NfZGF0YXEEAdhPcHRpb248TWludFdpdG5lc3M8VDo6SXRlbUlkLCBEZXBvc2l0QmFsYW5jZU9mPFQsIEk+Pj4AA0CgTWludCBhbiBpdGVtIG9mIGEgcGFydGljdWxhciBjb2xsZWN0aW9uLgBRAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBjb21wbHkgd2l0aCB0aGUgYG1pbnRfc2V0dGluZ3NgIHJ1bGVzLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIG1pbnRlZC6gLSBgaXRlbWA6IEFuIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBpdGVtLuAtIGBtaW50X3RvYDogQWNjb3VudCBpbnRvIHdoaWNoIHRoZSBpdGVtIHdpbGwgYmUgbWludGVkLkUBLSBgd2l0bmVzc19kYXRhYDogV2hlbiB0aGUgbWludCB0eXBlIGlzIGBIb2xkZXJPZihjb2xsZWN0aW9uX2lkKWAsIHRoZW4gdGhlIG93bmVkWQEgIGl0ZW1faWQgZnJvbSB0aGF0IGNvbGxlY3Rpb24gbmVlZHMgdG8gYmUgcHJvdmlkZWQgd2l0aGluIHRoZSB3aXRuZXNzIGRhdGEgb2JqZWN0LiBJZmEBICB0aGUgbWludCBwcmljZSBpcyBzZXQsIHRoZW4gaXQgc2hvdWxkIGJlIGFkZGl0aW9uYWxseSBjb25maXJtZWQgaW4gdGhlIGB3aXRuZXNzX2RhdGFgLgBRAU5vdGU6IHRoZSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgYG9yaWdpbmAgYW5kIG5vdCB0aGUgYG93bmVyYCBvZiB0aGUgYGl0ZW1gLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAoZm9yY2VfbWludBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEcbWludF90bwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsaXRlbV9jb25maWd5BAEoSXRlbUNvbmZpZwAENAUBTWludCBhbiBpdGVtIG9mIGEgcGFydGljdWxhciBjb2xsZWN0aW9uIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGVsSXNzdWVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgbWludGVkLqAtIGBpdGVtYDogQW4gaWRlbnRpZmllciBvZiB0aGUgbmV3IGl0ZW0u4C0gYG1pbnRfdG9gOiBBY2NvdW50IGludG8gd2hpY2ggdGhlIGl0ZW0gd2lsbCBiZSBtaW50ZWQuqC0gYGl0ZW1fY29uZmlnYDogQSBjb25maWcgb2YgdGhlIG5ldyBpdGVtLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAQYnVybggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAUsWERlc3Ryb3kgYSBzaW5nbGUgaXRlbS4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3RsYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLoAtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmUgYnVybmVkLgA8RW1pdHMgYEJ1cm5lZGAuADhXZWlnaHQ6IGBPKDEpYCB0cmFuc2ZlcgwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAY4wE1vdmUgYW4gaXRlbSBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLgD0T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgYmUgZWl0aGVyOmgtIHRoZSBPd25lciBvZiB0aGUgYGl0ZW1gOzUBLSB0aGUgYXBwcm92ZWQgZGVsZWdhdGUgZm9yIHRoZSBgaXRlbWAgKGluIHRoaXMgY2FzZSwgdGhlIGFwcHJvdmFsIGlzIHJlc2V0KS4AKEFyZ3VtZW50czr0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHRyYW5zZmVycmVkLpQtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQu3C0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byByZWNlaXZlIG93bmVyc2hpcCBvZiB0aGUgaXRlbS4AUEVtaXRzIGBUcmFuc2ZlcnJlZGAuADhXZWlnaHQ6IGBPKDEpYCRyZWRlcG9zaXQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUaXRlbXNBBAE4VmVjPFQ6Okl0ZW1JZD4AB0ScUmUtZXZhbHVhdGUgdGhlIGRlcG9zaXRzIG9uIHNvbWUgaXRlbXMuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A+C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbXMgdG8gYmUgcmVldmFsdWF0ZWQuKQEtIGBpdGVtc2A6IFRoZSBpdGVtcyBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBkZXBvc2l0cyB3aWxsIGJlIHJlZXZhbHVhdGVkLgAtAU5PVEU6IFRoaXMgZXhpc3RzIGFzIGEgYmVzdC1lZmZvcnQgZnVuY3Rpb24uIEFueSBpdGVtcyB3aGljaCBhcmUgdW5rbm93biBvcjkBaW4gdGhlIGNhc2UgdGhhdCB0aGUgb3duZXIgYWNjb3VudCBkb2VzIG5vdCBoYXZlIHJlc2VydmFibGUgZnVuZHMgdG8gcGF5IGZvciBhTQFkZXBvc2l0IGluY3JlYXNlIGFyZSBpZ25vcmVkLiBHZW5lcmFsbHkgdGhlIG93bmVyIGlzbid0IGdvaW5nIHRvIGNhbGwgdGhpcyBvbiBpdGVtc1UBd2hvc2UgZXhpc3RpbmcgZGVwb3NpdCBpcyBsZXNzIHRoYW4gdGhlIHJlZnJlc2hlZCBkZXBvc2l0IGFzIGl0IHdvdWxkIG9ubHkgY29zdCB0aGVtLHhzbyBpdCdzIG9mIGxpdHRsZSBjb25zZXF1ZW5jZS4AWQFJdCB3aWxsIHN0aWxsIHJldHVybiBhbiBlcnJvciBpbiB0aGUgY2FzZSB0aGF0IHRoZSBjb2xsZWN0aW9uIGlzIHVua25vd24gb3IgdGhlIHNpZ25lcnBpcyBub3QgcGVybWl0dGVkIHRvIGNhbGwgaXQuAGBXZWlnaHQ6IGBPKGl0ZW1zLmxlbigpKWBIbG9ja19pdGVtX3RyYW5zZmVyCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQACCjIRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXIgb2YgYW4gaXRlbS4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgY2hhbmdlZC64LSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlY29tZSBub24tdHJhbnNmZXJhYmxlLgBsRW1pdHMgYEl0ZW1UcmFuc2ZlckxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYFB1bmxvY2tfaXRlbV90cmFuc2ZlcggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAkoqFJlLWFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlciBvZiBhbiBpdGVtLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A5C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBjaGFuZ2VkLqgtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmVjb21lIHRyYW5zZmVyYWJsZS4AdEVtaXRzIGBJdGVtVHJhbnNmZXJVbmxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYDxsb2NrX2NvbGxlY3Rpb24IAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAE0bG9ja19zZXR0aW5nc1UEAUhDb2xsZWN0aW9uU2V0dGluZ3MACjDYRGlzYWxsb3dzIHNwZWNpZmllZCBzZXR0aW5ncyBmb3IgdGhlIHdob2xlIGNvbGxlY3Rpb24uADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBsb2NrZWQutC0gYGxvY2tfc2V0dGluZ3NgOiBUaGUgc2V0dGluZ3MgdG8gYmUgbG9ja2VkLgAdAU5vdGU6IGl0J3MgcG9zc2libGUgdG8gb25seSBsb2NrKHNldCkgdGhlIHNldHRpbmcsIGJ1dCBub3QgdG8gdW5zZXQgaXQuAGRFbWl0cyBgQ29sbGVjdGlvbkxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkbmV3X293bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ACyyEQ2hhbmdlIHRoZSBPd25lciBvZiBhIGNvbGxlY3Rpb24uADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A9C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB3aG9zZSBvd25lciBzaG91bGQgYmUgY2hhbmdlZC4JAS0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZXkgbXVzdCBoYXZlIGNhbGxlZEkBICBgc2V0X2FjY2VwdF9vd25lcnNoaXBgIHdpdGggYGNvbGxlY3Rpb25gIGluIG9yZGVyIGZvciB0aGlzIG9wZXJhdGlvbiB0byBzdWNjZWVkLgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARhpc3N1ZXI9BAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgABFGFkbWluPQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4AARxmcmVlemVyPQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4ADEDUQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGEgY29sbGVjdGlvbi4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGU0YGNvbGxlY3Rpb25gLgBRAU5vdGU6IGJ5IHNldHRpbmcgdGhlIHJvbGUgdG8gYE5vbmVgIG9ubHkgdGhlIGBGb3JjZU9yaWdpbmAgd2lsbCBiZSBhYmxlIHRvIGNoYW5nZSBpdGRhZnRlciB0byBgU29tZShhY2NvdW50KWAuAPAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gd2hvc2UgdGVhbSBzaG91bGQgYmUgY2hhbmdlZC64LSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBjb2xsZWN0aW9uLrAtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBjb2xsZWN0aW9uLsAtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgY29sbGVjdGlvbi4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYFhmb3JjZV9jb2xsZWN0aW9uX293bmVyCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADSiEQ2hhbmdlIHRoZSBPd25lciBvZiBhIGNvbGxlY3Rpb24uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgDELSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uLrAtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBjb2xsZWN0aW9uLgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYFxmb3JjZV9jb2xsZWN0aW9uX2NvbmZpZwgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARhjb25maWdRBAFkQ29sbGVjdGlvbkNvbmZpZ0ZvcjxULCBJPgAOKIhDaGFuZ2UgdGhlIGNvbmZpZyBvZiBhIGNvbGxlY3Rpb24uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgDELSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uLrgtIGBjb25maWdgOiBUaGUgbmV3IGNvbmZpZyBvZiB0aGlzIGNvbGxlY3Rpb24uAIBFbWl0cyBgQ29sbGVjdGlvbkNvbmZpZ0NoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlchABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABOG1heWJlX2RlYWRsaW5l4AFwT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQsIEk+PgAPOBUBQXBwcm92ZSBhbiBpdGVtIHRvIGJlIHRyYW5zZmVycmVkIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlHGBpdGVtYC4ARQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2Zlci7kLSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlIGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIuGQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgdGhlIGl0ZW0uSQEtIGBtYXliZV9kZWFkbGluZWA6IE9wdGlvbmFsIGRlYWRsaW5lIGZvciB0aGUgYXBwcm92YWwuIFNwZWNpZmllZCBieSBwcm92aWRpbmcgdGhl2AludW1iZXIgb2YgYmxvY2tzIGFmdGVyIHdoaWNoIHRoZSBhcHByb3ZhbCB3aWxsIGV4cGlyZQCQRW1pdHMgYFRyYW5zZmVyQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AEDjkQ2FuY2VsIG9uZSBvZiB0aGUgdHJhbnNmZXIgYXBwcm92YWxzIGZvciBhIHNwZWNpZmljIGl0ZW0uAFhPcmlnaW4gbXVzdCBiZSBlaXRoZXI6VC0gdGhlIGBGb3JjZWAgb3JpZ2luO+QtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDsAKEFyZ3VtZW50czo9AS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC4lAS0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgY29sbGVjdGlvbiBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC4BAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdGhhdCBpcyBnb2luZyB0byBsb29zZSB0aGVpciBhcHByb3ZhbC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgcGNsZWFyX2FsbF90cmFuc2Zlcl9hcHByb3ZhbHMIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAARNLBDYW5jZWwgYWxsIHRoZSBhcHByb3ZhbHMgb2YgYSBzcGVjaWZpYyBpdGVtLgBYT3JpZ2luIG11c3QgYmUgZWl0aGVyOlQtIHRoZSBgRm9yY2VgIG9yaWdpbjvkLSBgU2lnbmVkYCB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AChBcmd1bWVudHM6OQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWxzIHdpbGwgYmUgY2xlYXJlZC4hAS0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgY29sbGVjdGlvbiBvZiB3aG9zZSBhcHByb3ZhbHMgd2lsbCBiZSBjbGVhcmVkLgCkRW1pdHMgYEFsbEFwcHJvdmFsc0NhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgUGxvY2tfaXRlbV9wcm9wZXJ0aWVzEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAATRsb2NrX21ldGFkYXRhWQEBEGJvb2wAATxsb2NrX2F0dHJpYnV0ZXNZAQEQYm9vbAASROhEaXNhbGxvd3MgY2hhbmdpbmcgdGhlIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZXMgb2YgdGhlIGl0ZW0uAEEBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW5Qb2YgdGhlIGBjb2xsZWN0aW9uYC4AtC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBpZiB0aGUgYGl0ZW1gLnwtIGBpdGVtYDogQW4gaXRlbSB0byBiZSBsb2NrZWQuDQEtIGBsb2NrX21ldGFkYXRhYDogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIG1ldGFkYXRhIHNob3VsZCBiZSBsb2NrZWQuYQEtIGBsb2NrX2F0dHJpYnV0ZXNgOiBTcGVjaWZpZXMgd2hldGhlciB0aGUgYXR0cmlidXRlcyBpbiB0aGUgYENvbGxlY3Rpb25Pd25lcmAgbmFtZXNwYWNlTCAgc2hvdWxkIGJlIGxvY2tlZC4AXQFOb3RlOiBgbG9ja19hdHRyaWJ1dGVzYCBhZmZlY3RzIHRoZSBhdHRyaWJ1dGVzIGluIHRoZSBgQ29sbGVjdGlvbk93bmVyYCBuYW1lc3BhY2Ugb25seS5FAVdoZW4gdGhlIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZXMgYXJlIGxvY2tlZCwgaXQgd29uJ3QgYmUgcG9zc2libGUgdGhlIHVubG9jayB0aGVtLgB0RW1pdHMgYEl0ZW1Qcm9wZXJ0aWVzTG9ja2VkYC4AOFdlaWdodDogYE8oMSlgNHNldF9hdHRyaWJ1dGUUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeABRE9wdGlvbjxUOjpJdGVtSWQ+AAEkbmFtZXNwYWNlfQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+AAEMa2V5eAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWVBAQF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AE1ioU2V0IGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAAEBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGNvbmZvcm0gdG8gdGhlIG5hbWVzcGFjZSBydWxlc2V0Oj0BLSBgQ29sbGVjdGlvbk93bmVyYCBuYW1lc3BhY2UgY291bGQgYmUgbW9kaWZpZWQgYnkgdGhlIGBjb2xsZWN0aW9uYCBBZG1pbiBvbmx5O1kBLSBgSXRlbU93bmVyYCBuYW1lc3BhY2UgY291bGQgYmUgbW9kaWZpZWQgYnkgdGhlIGBtYXliZV9pdGVtYCBvd25lciBvbmx5LiBgbWF5YmVfaXRlbWB0ICBzaG91bGQgYmUgc2V0IGluIHRoYXQgY2FzZTtVAS0gYEFjY291bnQoQWNjb3VudElkKWAgbmFtZXNwYWNlIGNvdWxkIGJlIG1vZGlmaWVkIG9ubHkgd2hlbiB0aGUgYG9yaWdpbmAgd2FzIGdpdmVuIGFYICBwZXJtaXNzaW9uIHRvIGRvIHNvOwDwVGhlIGZ1bmRzIG9mIGBvcmlnaW5gIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6LQFgQXR0cmlidXRlRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIChrZXkubGVuICsgdmFsdWUubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC4FAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQulC0gYG5hbWVzcGFjZWA6IEF0dHJpYnV0ZSdzIG5hbWVzcGFjZS6ILSBga2V5YDogVGhlIGtleSBvZiB0aGUgYXR0cmlidXRlLswtIGB2YWx1ZWA6IFRoZSB2YWx1ZSB0byB3aGljaCB0byBzZXQgdGhlIGF0dHJpYnV0ZS4AVEVtaXRzIGBBdHRyaWJ1dGVTZXRgLgA4V2VpZ2h0OiBgTygxKWBMZm9yY2Vfc2V0X2F0dHJpYnV0ZRgBGHNldF9hc40BAVBPcHRpb248VDo6QWNjb3VudElkPgABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AASRuYW1lc3BhY2V9BAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AAQxrZXl4AWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AARR2YWx1ZUEBAXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAURMBGb3JjZS1zZXQgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuADkBSWYgdGhlIGF0dHJpYnV0ZSBhbHJlYWR5IGV4aXN0cyBhbmQgaXQgd2FzIHNldCBieSBhbm90aGVyIGFjY291bnQsIHRoZSBkZXBvc2l0nHdpbGwgYmUgcmV0dXJuZWQgdG8gdGhlIHByZXZpb3VzIG93bmVyLgC8LSBgc2V0X2FzYDogQW4gb3B0aW9uYWwgb3duZXIgb2YgdGhlIGF0dHJpYnV0ZS45AS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gc2V0LgUBLSBgbWF5YmVfaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC6ULSBgbmFtZXNwYWNlYDogQXR0cmlidXRlJ3MgbmFtZXNwYWNlLogtIGBrZXlgOiBUaGUga2V5IG9mIHRoZSBhdHRyaWJ1dGUuzC0gYHZhbHVlYDogVGhlIHZhbHVlIHRvIHdoaWNoIHRvIHNldCB0aGUgYXR0cmlidXRlLgBURW1pdHMgYEF0dHJpYnV0ZVNldGAuADhXZWlnaHQ6IGBPKDEpYDxjbGVhcl9hdHRyaWJ1dGUQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeABRE9wdGlvbjxUOjpJdGVtSWQ+AAEkbmFtZXNwYWNlfQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+AAEMa2V5eAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+ABU8sENsZWFyIGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlKGF0dHJpYnV0ZS4AwEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgY29sbGVjdGlvbidzIG93bmVyLgBBAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gY2xlYXIuDQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIulC0gYG5hbWVzcGFjZWA6IEF0dHJpYnV0ZSdzIG5hbWVzcGFjZS6ILSBga2V5YDogVGhlIGtleSBvZiB0aGUgYXR0cmlidXRlLgBkRW1pdHMgYEF0dHJpYnV0ZUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBcYXBwcm92ZV9pdGVtX2F0dHJpYnV0ZXMMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFiQtAUFwcHJvdmUgaXRlbSdzIGF0dHJpYnV0ZXMgdG8gYmUgY2hhbmdlZCBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgDkT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgaXRlbWAuAKQtIGBjb2xsZWN0aW9uYDogQSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqQtIGBpdGVtYDogVGhlIGl0ZW0gdGhhdCBob2xkcyBhdHRyaWJ1dGVzLkkBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBhdHRyaWJ1dGVzIG9mIHRoZSBpdGVtLgC8RW1pdHMgYEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxBZGRlZGAgb24gc3VjY2Vzcy58Y2FuY2VsX2l0ZW1fYXR0cmlidXRlc19hcHByb3ZhbBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHHdpdG5lc3OBBAF8Q2FuY2VsQXR0cmlidXRlc0FwcHJvdmFsV2l0bmVzcwAXKBEBQ2FuY2VsIHRoZSBwcmV2aW91c2x5IHByb3ZpZGVkIGFwcHJvdmFsIHRvIGNoYW5nZSBpdGVtJ3MgYXR0cmlidXRlcy4RAUFsbCB0aGUgcHJldmlvdXNseSBzZXQgYXR0cmlidXRlcyBieSB0aGUgYGRlbGVnYXRlYCB3aWxsIGJlIHJlbW92ZWQuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4A9C0gYGNvbGxlY3Rpb25gOiBDb2xsZWN0aW9uIHRoYXQgdGhlIGl0ZW0gaXMgY29udGFpbmVkIHdpdGhpbi6kLSBgaXRlbWA6IFRoZSBpdGVtIHRoYXQgaG9sZHMgYXR0cmlidXRlcy7gLSBgZGVsZWdhdGVgOiBUaGUgcHJldmlvdXNseSBhcHByb3ZlZCBhY2NvdW50IHRvIHJlbW92ZS4AxEVtaXRzIGBJdGVtQXR0cmlidXRlc0FwcHJvdmFsUmVtb3ZlZGAgb24gc3VjY2Vzcy4wc2V0X21ldGFkYXRhDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkYXRhQQEBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAYQHRTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBSWYgdGhlIG9yaWdpbiBpcyBTaWduZWQsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC7sLSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuAGBFbWl0cyBgSXRlbU1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAGTR8Q2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZTRgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLvQtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAHBFbWl0cyBgSXRlbU1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFxzZXRfY29sbGVjdGlvbl9tZXRhZGF0YQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBkYXRhQQEBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAaPIhTZXQgdGhlIG1ldGFkYXRhIGZvciBhIGNvbGxlY3Rpb24uAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZkR0aGUgYGNvbGxlY3Rpb25gLgBZAUlmIHRoZSBvcmlnaW4gaXMgYFNpZ25lZGAsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AEQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gdXBkYXRlLk0BLSBgZGF0YWA6IFRoZSBnZW5lcmFsIGluZm9ybWF0aW9uIG9mIHRoaXMgaXRlbS4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4AeEVtaXRzIGBDb2xsZWN0aW9uTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWBkY2xlYXJfY29sbGVjdGlvbl9tZXRhZGF0YQQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAGzCQQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhIGNvbGxlY3Rpb24uAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZkR0aGUgYGNvbGxlY3Rpb25gLgDAQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIuACUBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLgCIRW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBQc2V0X2FjY2VwdF9vd25lcnNoaXAEAUBtYXliZV9jb2xsZWN0aW9u4AFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AHCgRAVNldCAob3IgcmVzZXQpIHRoZSBhY2NlcHRhbmNlIG9mIG93bmVyc2hpcCBmb3IgYSBwYXJ0aWN1bGFyIGFjY291bnQuAGEBT3JpZ2luIG11c3QgYmUgYFNpZ25lZGAgYW5kIGlmIGBtYXliZV9jb2xsZWN0aW9uYCBpcyBgU29tZWAsIHRoZW4gdGhlIHNpZ25lciBtdXN0IGhhdmUgYUxwcm92aWRlciByZWZlcmVuY2UuAFEBLSBgbWF5YmVfY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIG93bmVyc2hpcCB0aGUgc2lnbmVyIGlzYQEgIHdpbGxpbmcgdG8gYWNjZXB0LCBvciBpZiBgTm9uZWAsIGFuIGluZGljYXRpb24gdGhhdCB0aGUgc2lnbmVyIGlzIHdpbGxpbmcgdG8gYWNjZXB0IG5vXCAgb3duZXJzaGlwIHRyYW5zZmVyYWwuAIxFbWl0cyBgT3duZXJzaGlwQWNjZXB0YW5jZUNoYW5nZWRgLmRzZXRfY29sbGVjdGlvbl9tYXhfc3VwcGx5CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heF9zdXBwbHk4AQx1MzIAHSTgU2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gY291bGQgaGF2ZS4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mRHRoZSBgY29sbGVjdGlvbmAuAOwtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gdG8gY2hhbmdlLhEBLSBgbWF4X3N1cHBseWA6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gY291bGQgaGF2ZS4A1EVtaXRzIGBDb2xsZWN0aW9uTWF4U3VwcGx5U2V0YCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuUHVwZGF0ZV9taW50X3NldHRpbmdzCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABNG1pbnRfc2V0dGluZ3NdBAEVAU1pbnRTZXR0aW5nczxCYWxhbmNlT2Y8VCwgST4sIEJsb2NrTnVtYmVyRm9yPFQsIEk+LCBUOjoKQ29sbGVjdGlvbklkPgAeJFRVcGRhdGUgbWludCBzZXR0aW5ncy4ATQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIElzc3VlclBvZiB0aGUgYGNvbGxlY3Rpb25gLgDsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGNoYW5nZS6kLSBgbWludF9zZXR0aW5nc2A6IFRoZSBuZXcgbWludCBzZXR0aW5ncy4A8EVtaXRzIGBDb2xsZWN0aW9uTWludFNldHRpbmdzVXBkYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLiRzZXRfcHJpY2UQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlSQQBXE9wdGlvbjxJdGVtUHJpY2U8VCwgST4+AAFEd2hpdGVsaXN0ZWRfYnV5ZXI9BAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAfLJRTZXQgKG9yIHJlc2V0KSB0aGUgcHJpY2UgZm9yIGFuIGl0ZW0uAOhPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0uoC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBzZXQgdGhlIHByaWNlIGZvci4NAS0gYHByaWNlYDogVGhlIHByaWNlIGZvciB0aGUgaXRlbS4gUGFzcyBgTm9uZWAsIHRvIHJlc2V0IHRoZSBwcmljZS70LSBgYnV5ZXJgOiBSZXN0cmljdHMgdGhlIGJ1eSBvcGVyYXRpb24gdG8gYSBzcGVjaWZpYyBhY2NvdW50LgDsRW1pdHMgYEl0ZW1QcmljZVNldGAgb24gc3VjY2VzcyBpZiB0aGUgcHJpY2UgaXMgbm90IGBOb25lYC7sRW1pdHMgYEl0ZW1QcmljZVJlbW92ZWRgIG9uIHN1Y2Nlc3MgaWYgdGhlIHByaWNlIGlzIGBOb25lYC4gYnV5X2l0ZW0MAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABJGJpZF9wcmljZVUBATxJdGVtUHJpY2U8VCwgST4AICSoQWxsb3dzIHRvIGJ1eSBhbiBpdGVtIGlmIGl0J3MgdXAgZm9yIHNhbGUuAPhPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3Qgbm90IGJlIHRoZSBvd25lciBvZiB0aGUgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqwtIGBpdGVtYDogVGhlIGl0ZW0gdGhlIHNlbmRlciB3YW50cyB0byBidXku2C0gYGJpZF9wcmljZWA6IFRoZSBwcmljZSB0aGUgc2VuZGVyIGlzIHdpbGxpbmcgdG8gcGF5LgB4RW1pdHMgYEl0ZW1Cb3VnaHRgIG9uIHN1Y2Nlc3MuIHBheV90aXBzBAEQdGlwc4UEAZxCb3VuZGVkVmVjPEl0ZW1UaXBPZjxULCBJPiwgVDo6TWF4VGlwcz4AIRxcQWxsb3dzIHRvIHBheSB0aGUgdGlwcy4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AVC0gYHRpcHNgOiBUaXBzIGFycmF5LgCYRW1pdHMgYFRpcFNlbnRgIG9uIGV2ZXJ5IHRpcCB0cmFuc2Zlci4sY3JlYXRlX3N3YXAYAUhvZmZlcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBvZmZlcmVkX2l0ZW04ASRUOjpJdGVtSWQAAUhkZXNpcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAUhtYXliZV9kZXNpcmVkX2l0ZW3gAURPcHRpb248VDo6SXRlbUlkPgABLG1heWJlX3ByaWNlkQQBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AASBkdXJhdGlvbjgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+ACJAUQFSZWdpc3RlciBhIG5ldyBhdG9taWMgc3dhcCwgZGVjbGFyaW5nIGFuIGludGVudGlvbiB0byBzZW5kIGFuIGBpdGVtYCBpbiBleGNoYW5nZSBmb3L8YGRlc2lyZWRfaXRlbWAgZnJvbSBvcmlnaW4gdG8gdGFyZ2V0IG9uIHRoZSBjdXJyZW50IGJsb2NrY2hhaW4uTQFUaGUgdGFyZ2V0IGNhbiBleGVjdXRlIHRoZSBzd2FwIGR1cmluZyB0aGUgc3BlY2lmaWVkIGBkdXJhdGlvbmAgb2YgYmxvY2tzIChpZiBzZXQpLvBBZGRpdGlvbmFsbHksIHRoZSBwcmljZSBjb3VsZCBiZSBzZXQgZm9yIHRoZSBkZXNpcmVkIGBpdGVtYC4A5E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSBhbiBvd25lciBvZiB0aGUgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqgtIGBpdGVtYDogVGhlIGl0ZW0gYW4gb3duZXIgd2FudHMgdG8gZ2l2ZS7sLSBgZGVzaXJlZF9jb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGRlc2lyZWQgaXRlbS70LSBgZGVzaXJlZF9pdGVtYDogVGhlIGRlc2lyZWQgaXRlbSBhbiBvd25lciB3YW50cyB0byByZWNlaXZlLmEBLSBgbWF5YmVfcHJpY2VgOiBUaGUgcHJpY2UgYW4gb3duZXIgaXMgd2lsbGluZyB0byBwYXkgb3IgcmVjZWl2ZSBmb3IgdGhlIGRlc2lyZWQgYGl0ZW1gLkkBLSBgZHVyYXRpb25gOiBBIGRlYWRsaW5lIGZvciB0aGUgc3dhcC4gU3BlY2lmaWVkIGJ5IHByb3ZpZGluZyB0aGUgbnVtYmVyIG9mIGJsb2Nrc4gJYWZ0ZXIgd2hpY2ggdGhlIHN3YXAgd2lsbCBleHBpcmUuAHxFbWl0cyBgU3dhcENyZWF0ZWRgIG9uIHN1Y2Nlc3MuLGNhbmNlbF9zd2FwCAFIb2ZmZXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwb2ZmZXJlZF9pdGVtOAEkVDo6SXRlbUlkACMkWENhbmNlbCBhbiBhdG9taWMgc3dhcC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4VAU9yaWdpbiBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgaXRlbWAgaWYgdGhlIGRlYWRsaW5lIGhhc24ndCBleHBpcmVkLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqgtIGBpdGVtYDogVGhlIGl0ZW0gYW4gb3duZXIgd2FudHMgdG8gZ2l2ZS4AhEVtaXRzIGBTd2FwQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLihjbGFpbV9zd2FwFAE8c2VuZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkc2VuZF9pdGVtOAEkVDo6SXRlbUlkAAFIcmVjZWl2ZV9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwcmVjZWl2ZV9pdGVtOAEkVDo6SXRlbUlkAAE0d2l0bmVzc19wcmljZZEEAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+ACQwVENsYWltIGFuIGF0b21pYyBzd2FwLjkBVGhpcyBtZXRob2QgZXhlY3V0ZXMgYSBwZW5kaW5nIHN3YXAsIHRoYXQgd2FzIGNyZWF0ZWQgYnkgYSBjb3VudGVycGFydCBiZWZvcmUuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4A7C0gYHNlbmRfY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHNlbnQujC0gYHNlbmRfaXRlbWA6IFRoZSBpdGVtIHRvIGJlIHNlbnQuCQEtIGByZWNlaXZlX2NvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSByZWNlaXZlZC6oLSBgcmVjZWl2ZV9pdGVtYDogVGhlIGl0ZW0gdG8gYmUgcmVjZWl2ZWQu5C0gYHdpdG5lc3NfcHJpY2VgOiBBIHByaWNlIHRoYXQgd2FzIHByZXZpb3VzbHkgYWdyZWVkIG9uLgB8RW1pdHMgYFN3YXBDbGFpbWVkYCBvbiBzdWNjZXNzLjxtaW50X3ByZV9zaWduZWQMASRtaW50X2RhdGGdBAFoQm94PFByZVNpZ25lZE1pbnRPZjxULCBJPj4AASRzaWduYXR1cmWhBAFQVDo6T2ZmY2hhaW5TaWduYXR1cmUAARhzaWduZXIEATBUOjpBY2NvdW50SWQAJTTITWludCBhbiBpdGVtIGJ5IHByb3ZpZGluZyB0aGUgcHJlLXNpZ25lZCBhcHByb3ZhbC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AXQEtIGBtaW50X2RhdGFgOiBUaGUgcHJlLXNpZ25lZCBhcHByb3ZhbCB0aGF0IGNvbnNpc3RzIG9mIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaXRlbSxRASAgaXRzIG1ldGFkYXRhLCBhdHRyaWJ1dGVzLCB3aG8gY2FuIG1pbnQgaXQgKGBOb25lYCBmb3IgYW55b25lKSBhbmQgdW50aWwgd2hhdCBibG9jayQgIG51bWJlci7ILSBgc2lnbmF0dXJlYDogVGhlIHNpZ25hdHVyZSBvZiB0aGUgYGRhdGFgIG9iamVjdC45AS0gYHNpZ25lcmA6IFRoZSBgZGF0YWAgb2JqZWN0J3Mgc2lnbmVyLiBTaG91bGQgYmUgYW4gSXNzdWVyIG9mIHRoZSBjb2xsZWN0aW9uLgBoRW1pdHMgYElzc3VlZGAgb24gc3VjY2Vzcy7URW1pdHMgYEF0dHJpYnV0ZVNldGAgaWYgdGhlIGF0dHJpYnV0ZXMgd2VyZSBwcm92aWRlZC7YRW1pdHMgYEl0ZW1NZXRhZGF0YVNldGAgaWYgdGhlIG1ldGFkYXRhIHdhcyBub3QgZW1wdHkuZHNldF9hdHRyaWJ1dGVzX3ByZV9zaWduZWQMARBkYXRhqQQBbFByZVNpZ25lZEF0dHJpYnV0ZXNPZjxULCBJPgABJHNpZ25hdHVyZaEEAVBUOjpPZmZjaGFpblNpZ25hdHVyZQABGHNpZ25lcgQBMFQ6OkFjY291bnRJZAAmNAEBU2V0IGF0dHJpYnV0ZXMgZm9yIGFuIGl0ZW0gYnkgcHJvdmlkaW5nIHRoZSBwcmUtc2lnbmVkIGFwcHJvdmFsLgD4T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgZGF0YS5pdGVtYC4ASQEtIGBkYXRhYDogVGhlIHByZS1zaWduZWQgYXBwcm92YWwgdGhhdCBjb25zaXN0cyBvZiB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGl0ZW0szCAgYXR0cmlidXRlcyB0byB1cGRhdGUgYW5kIHVudGlsIHdoYXQgYmxvY2sgbnVtYmVyLsgtIGBzaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIHRoZSBgZGF0YWAgb2JqZWN0LlEBLSBgc2lnbmVyYDogVGhlIGBkYXRhYCBvYmplY3QncyBzaWduZXIuIFNob3VsZCBiZSBhbiBBZG1pbiBvZiB0aGUgY29sbGVjdGlvbiBmb3IgdGhleCAgYENvbGxlY3Rpb25Pd25lcmAgbmFtZXNwYWNlLgDERW1pdHMgYEF0dHJpYnV0ZVNldGAgZm9yIGVhY2ggcHJvdmlkZWQgYXR0cmlidXRlLhkBRW1pdHMgYEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxBZGRlZGAgaWYgdGhlIGFwcHJvdmFsIHdhc24ndCBzZXQgYmVmb3JlLqhFbWl0cyBgUHJlU2lnbmVkQXR0cmlidXRlc1NldGAgb24gc3VjY2Vzcy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuUQQMLHBhbGxldF9uZnRzFHR5cGVzQENvbGxlY3Rpb25Db25maWcMFFByaWNlAVUBLEJsb2NrTnVtYmVyATgwQ29sbGVjdGlvbklkATgADAEgc2V0dGluZ3NVBAFIQ29sbGVjdGlvblNldHRpbmdzAAEobWF4X3N1cHBseeABLE9wdGlvbjx1MzI+AAE0bWludF9zZXR0aW5nc10EAbhNaW50U2V0dGluZ3M8UHJpY2UsIEJsb2NrTnVtYmVyLCBDb2xsZWN0aW9uSWQ+AABVBAwscGFsbGV0X25mdHMUdHlwZXMgQml0RmxhZ3MEBFQBWQQABAAoAURDb2xsZWN0aW9uU2V0dGluZwAAWQQMLHBhbGxldF9uZnRzFHR5cGVzRENvbGxlY3Rpb25TZXR0aW5nAAEURFRyYW5zZmVyYWJsZUl0ZW1zAAEAQFVubG9ja2VkTWV0YWRhdGEAAgBIVW5sb2NrZWRBdHRyaWJ1dGVzAAQARFVubG9ja2VkTWF4U3VwcGx5AAgAPERlcG9zaXRSZXF1aXJlZAAQAABdBAwscGFsbGV0X25mdHMUdHlwZXMwTWludFNldHRpbmdzDBRQcmljZQFVASxCbG9ja051bWJlcgE4MENvbGxlY3Rpb25JZAE4ABQBJG1pbnRfdHlwZWEEAVhNaW50VHlwZTxDb2xsZWN0aW9uSWQ+AAEUcHJpY2VJBAE0T3B0aW9uPFByaWNlPgABLHN0YXJ0X2Jsb2Nr4AFMT3B0aW9uPEJsb2NrTnVtYmVyPgABJGVuZF9ibG9ja+ABTE9wdGlvbjxCbG9ja051bWJlcj4AAVRkZWZhdWx0X2l0ZW1fc2V0dGluZ3NlBAEwSXRlbVNldHRpbmdzAABhBAwscGFsbGV0X25mdHMUdHlwZXMgTWludFR5cGUEMENvbGxlY3Rpb25JZAE4AQwYSXNzdWVyAAAAGFB1YmxpYwABACBIb2xkZXJPZgQAOAEwQ29sbGVjdGlvbklkAAIAAGUEDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAFpBAAEACgBLEl0ZW1TZXR0aW5nAABpBAwscGFsbGV0X25mdHMUdHlwZXMsSXRlbVNldHRpbmcAAQwwVHJhbnNmZXJhYmxlAAEAQFVubG9ja2VkTWV0YWRhdGEAAgBIVW5sb2NrZWRBdHRyaWJ1dGVzAAQAAG0EDCxwYWxsZXRfbmZ0cxR0eXBlczhEZXN0cm95V2l0bmVzcwAADAE4aXRlbV9tZXRhZGF0YXNgAQx1MzIAATBpdGVtX2NvbmZpZ3NgAQx1MzIAAShhdHRyaWJ1dGVzYAEMdTMyAABxBAQYT3B0aW9uBARUAXUEAQgQTm9uZQAAABBTb21lBAB1BAAAAQAAdQQMLHBhbGxldF9uZnRzFHR5cGVzLE1pbnRXaXRuZXNzCBhJdGVtSWQBOBxCYWxhbmNlAVUBAAgBKG93bmVkX2l0ZW3gAThPcHRpb248SXRlbUlkPgABKG1pbnRfcHJpY2VJBAE8T3B0aW9uPEJhbGFuY2U+AAB5BAwscGFsbGV0X25mdHMUdHlwZXMoSXRlbUNvbmZpZwAABAEgc2V0dGluZ3NlBAEwSXRlbVNldHRpbmdzAAB9BAwscGFsbGV0X25mdHMUdHlwZXNIQXR0cmlidXRlTmFtZXNwYWNlBCRBY2NvdW50SWQBBAEQGFBhbGxldAAAADxDb2xsZWN0aW9uT3duZXIAAQAkSXRlbU93bmVyAAIAHEFjY291bnQEAAQBJEFjY291bnRJZAADAACBBAwscGFsbGV0X25mdHMUdHlwZXN8Q2FuY2VsQXR0cmlidXRlc0FwcHJvdmFsV2l0bmVzcwAABAFIYWNjb3VudF9hdHRyaWJ1dGVzOAEMdTMyAACFBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYkEBFMAAAQAjQQBGFZlYzxUPgAAiQQMLHBhbGxldF9uZnRzFHR5cGVzHEl0ZW1UaXAQMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4JEFjY291bnRJZAEEGEFtb3VudAFVAQAQAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBGEl0ZW1JZAABIHJlY2VpdmVyBAEkQWNjb3VudElkAAEYYW1vdW50VQEBGEFtb3VudAAAjQQAAAKJBACRBAQYT3B0aW9uBARUAZUEAQgQTm9uZQAAABBTb21lBACVBAAAAQAAlQQMLHBhbGxldF9uZnRzFHR5cGVzSFByaWNlV2l0aERpcmVjdGlvbgQYQW1vdW50AVUBAAgBGGFtb3VudFUBARhBbW91bnQAASRkaXJlY3Rpb26ZBAE4UHJpY2VEaXJlY3Rpb24AAJkEDCxwYWxsZXRfbmZ0cxR0eXBlczhQcmljZURpcmVjdGlvbgABCBBTZW5kAAAAHFJlY2VpdmUAAQAAnQQMLHBhbGxldF9uZnRzFHR5cGVzNFByZVNpZ25lZE1pbnQUMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4JEFjY291bnRJZAEEIERlYWRsaW5lATgcQmFsYW5jZQFVAQAcAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBGEl0ZW1JZAABKGF0dHJpYnV0ZXMsAVxWZWM8KFZlYzx1OD4sIFZlYzx1OD4pPgABIG1ldGFkYXRhGAEcVmVjPHU4PgABMG9ubHlfYWNjb3VudI0BAURPcHRpb248QWNjb3VudElkPgABIGRlYWRsaW5lOAEgRGVhZGxpbmUAAShtaW50X3ByaWNlSQQBPE9wdGlvbjxCYWxhbmNlPgAAoQQIKHNwX3J1bnRpbWU4TXVsdGlTaWduYXR1cmUAARAcRWQyNTUxOQQApQQBSGVkMjU1MTk6OlNpZ25hdHVyZQAAABxTcjI1NTE5BAClBAFIc3IyNTUxOTo6U2lnbmF0dXJlAAEAFEVjZHNhBAB1AQFAZWNkc2E6OlNpZ25hdHVyZQACAAxFdGgEAHUBAVhlY2RzYTo6S2VjY2FrU2lnbmF0dXJlAAMAAKUEAAADQAAAAAwAqQQMLHBhbGxldF9uZnRzFHR5cGVzTFByZVNpZ25lZEF0dHJpYnV0ZXMQMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4JEFjY291bnRJZAEEIERlYWRsaW5lATgAFAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABEGl0ZW04ARhJdGVtSWQAAShhdHRyaWJ1dGVzLAFcVmVjPChWZWM8dTg+LCBWZWM8dTg+KT4AASRuYW1lc3BhY2V9BAF0QXR0cmlidXRlTmFtZXNwYWNlPEFjY291bnRJZD4AASBkZWFkbGluZTgBIERlYWRsaW5lAACtBAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQQQ2FsbAgEVAAESQABiBhjcmVhdGUMAQhpZP0BAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlVQEBKFQ6OkJhbGFuY2UAAEzoSXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAlAVRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5IGFuZCBpdHMgb3duZXIgaXMgdGhlIG9yaWdpbi4AYQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCBgQ3JlYXRlT3JpZ2luYCBhbmQgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZyZWUuALxGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGJ5IGBBc3NldERlcG9zaXRgLgAsUGFyYW1ldGVyczpZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5MQFhbiBleGlzdGluZyBhc3NldC4gSWYgW2BOZXh0QXNzZXRJZGBdIGlzIHNldCwgdGhlbiB0aGlzIG11c3QgYmUgZXF1YWwgdG8gaXQuWQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJxtZW1iZXIgb2YgdGhlIGFzc2V0IGNsYXNzJ3MgYWRtaW4gdGVhbS5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAJhFbWl0cyBgQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAwZm9yY2VfY3JlYXRlEAEIaWT9AQFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50WQEBEGJvb2wAASxtaW5fYmFsYW5jZVEBAShUOjpCYWxhbmNlAAFM+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/QEBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASByZXNlcnZlc7EEAchCb3VuZGVkVmVjPFQ6OlJlc2VydmVEYXRhLCBDb25zdFUzMjxNQVhfUkVTRVJWRVM+PgAhJMRTZXRzIHRoZSB0cnVzdGVkIHJlc2VydmUgaW5mb3JtYXRpb24gb2YgYW4gYXNzZXQuAFUBT3JpZ2luIG11c3QgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLiBUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCUBYENyZWF0ZU9yaWdpbmAgb3IgYmUgdGhlIHNpZ25lZCBgb3duZXJgIGNvbmZpZ3VyZWQgZHVyaW5nIGFzc2V0IGNyZWF0aW9uLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQu8C0gYHJlc2VydmVzYDogVGhlIGZ1bGwgbGlzdCBvZiB0cnVzdGVkIHJlc2VydmVzIGluZm9ybWF0aW9uLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMusQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAG1BARTAAAEALkEARhWZWM8VD4AALUEDDRhc3NldHNfY29tbW9uYGxvY2FsX2FuZF9mb3JlaWduX2Fzc2V0c1xGb3JlaWduQXNzZXRSZXNlcnZlRGF0YQAACAEccmVzZXJ2Zf0BASBMb2NhdGlvbgABMHRlbGVwb3J0YWJsZVkBARBib29sAAC5BAAAArUEAL0EDDRwYWxsZXRfYXNzZXRzGHBhbGxldBBDYWxsCARUAARJAAGIGGNyZWF0ZQwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlAABM6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50WQEBEGJvb2wAASxtaW5fYmFsYW5jZVEBAShUOjpCYWxhbmNlAAFM+Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uALRUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AWQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXIgcGVybWlzc2lvbnMlAW92ZXIgdGhpcyBhc3NldCwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWA0c3RhcnRfZGVzdHJveQQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgACMNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlmuGFuIGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS5AZGVzdHJveV9hY2NvdW50cwQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABSjEQ29tcGxldGUgZGVzdHJveWluZyBhc3NldCBhbmQgdW5yZXNlcnZlIGN1cnJlbmN5LgBVAWBmaW5pc2hfZGVzdHJveWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGVZAWFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLiBBbGwgYWNjb3VudHMgb3IgYXBwcm92YWxzIHNob3VsZCBiZSBkZXN0cm95ZWQgYmVmb3JlFGhhbmQuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A4EVhY2ggc3VjY2Vzc2Z1bCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZGAgZXZlbnQuEG1pbnQMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50UQEBKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFEBAShUOjpCYWxhbmNlAAc8RQFSZWR1Y2UgdGhlIGJhbGFuY2Ugb2YgYHdob2AgYnkgYXMgbXVjaCBhcyBwb3NzaWJsZSB1cCB0byBgYW1vdW50YCBhc3NldHMgb2YgYGlkYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBNYW5hZ2VyIG9mIHRoZSBhc3NldCBgaWRgLgDQQmFpbHMgd2l0aCBgTm9BY2NvdW50YCBpZiB0aGUgYHdob2AgaXMgYWxyZWFkeSBkZWFkLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBidXJuZWQuoC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQgZnJvbS4pAS0gYGFtb3VudGA6IFRoZSBtYXhpbXVtIGFtb3VudCBieSB3aGljaCBgd2hvYCdzIGJhbGFuY2Ugc2hvdWxkIGJlIHJlZHVjZWQuAFEBRW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuIElmIHRoaXMgdGFrZXMgdGhlIGJhbGFuY2UgdG8gYmVsb3cgdGhlOQFtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCBidXJuZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgCQFNb2RlczogUG9zdC1leGlzdGVuY2Ugb2YgYHdob2A7IFByZSAmIHBvc3QgWm9tYmllLXN0YXR1cyBvZiBgd2hvYC4gdHJhbnNmZXIMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFEBAShUOjpCYWxhbmNlAAhI0E1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLkx0cmFuc2Zlcl9rZWVwX2FsaXZlDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRRAQEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50UQEBKFQ6OkJhbGFuY2UACky0TW92ZSBzb21lIGFzc2V0cyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6YLSBgc291cmNlYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZC6ULSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgYHNvdXJjZWAncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRZAWBkZXN0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluTQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgYHNvdXJjZWAgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dNRiZWxvdyB0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGBkZXN0YDsgUG9zdC1leGlzdGVuY2Ugb2YgYHNvdXJjZWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZhxgZGVzdGAuGGZyZWV6ZQgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAswVQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCBmcm9tIGFuIGFjY291bnQgYHdob2AuIGB3aG9gTQFtdXN0IGFscmVhZHkgZXhpc3QgYXMgYW4gZW50cnkgaW4gYEFjY291bnRgcyBvZiB0aGUgYXNzZXQuIElmIHlvdSB3YW50IHRvIGZyZWV6ZSBhbvRhY2NvdW50IHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSwgdXNlIGB0b3VjaF9vdGhlcmAgZmlyc3QuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6ILSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjoQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmZyb3plbi4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWAwZnJlZXplX2Fzc2V0BAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAA0k8ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGNsYXNzLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgKHRoYXdfYXNzZXQEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADiTEQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA8odENoYW5nZSB0aGUgT3duZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+ABAwxENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4ABFAeFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDYRnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6UQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUgKiAobmFtZS5sZW4gKyBzeW1ib2wubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAEiyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4ApEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgYXNzZXQgb3duZXIuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2Vfc2V0X21ldGFkYXRhFAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plblkBARBib29sABM4uEZvcmNlIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQgdG8gc29tZSB2YWx1ZS4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBoQW55IGRlcG9zaXQgaXMgbGVmdCBhbG9uZS4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgBRAVdlaWdodDogYE8oTiArIFMpYCB3aGVyZSBOIGFuZCBTIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIGFuZCBzeW1ib2wgcmVzcGVjdGl2ZWx5LlBmb3JjZV9jbGVhcl9tZXRhZGF0YQQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VRAQEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnRZAQEQYm9vbAABJGlzX2Zyb3plblkBARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50UQEBKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb24AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFEBAShUOjpCYWxhbmNlABlITQFUcmFuc2ZlciBzb21lIGFzc2V0IGJhbGFuY2UgZnJvbSBhIHByZXZpb3VzbHkgZGVsZWdhdGVkIGFjY291bnQgdG8gc29tZSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBieSB0aGUgYG93bmVyYCB0byB0aGUcc2lnbmVyLgBZAUlmIHRoZSBlbnRpcmUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2ZlciBpcyB0cmFuc2ZlcnJlZCwgdGhlbiBhbnkgZGVwb3NpdCBwcmV2aW91c2x5tHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBpcyB1bnJlc2VydmVkLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuYQEtIGBvd25lcmA6IFRoZSBhY2NvdW50IHdoaWNoIHByZXZpb3VzbHkgYXBwcm92ZWQgZm9yIGEgdHJhbnNmZXIgb2YgYXQgbGVhc3QgYGFtb3VudGAgYW5kvGZyb20gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugd2lsbCBiZSB3aXRoZHJhd24uYQEtIGBkZXN0aW5hdGlvbmA6IFRoZSBhY2NvdW50IHRvIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIG9mIGBhbW91bnRgIHdpbGwgYmUgdHJhbnNmZXJyZWQutC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXRzIHRvIHRyYW5zZmVyLgCcRW1pdHMgYFRyYW5zZmVycmVkQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYBR0b3VjaAQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAaJMBDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3Igbm9uLXByb3ZpZGVyIGFzc2V0cy4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhhyZWZ1bmQIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAShhbGxvd19idXJuWQEBEGJvb2wAGzRZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdLIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi5hAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLCB0aGUgYXNzZXQgc3RhdHVzIG11c3QoICBiZSBsaXZlLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHjRdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZVkBARBib29sACBAHQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhc3NldCBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0PQFhbnkgaGVsZCwgZnJvemVuLCBvciBtaW5pbXVtIGJhbGFuY2UgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQuoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYXNzZXQgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IHRvIGJlIGtpbGxlZEUBICAoZmFsc2UpLCBvciB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgbWluaW11bSBiYWxhbmNlLCB3aGljaCB3aWxs6CAgZ3VhcmFudGVlIHRvIGtlZXAgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IGFsaXZlICh0cnVlKS4wc2V0X3Jlc2VydmVzCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEgcmVzZXJ2ZXMtBAHIQm91bmRlZFZlYzxUOjpSZXNlcnZlRGF0YSwgQ29uc3RVMzI8TUFYX1JFU0VSVkVTPj4AISTEU2V0cyB0aGUgdHJ1c3RlZCByZXNlcnZlIGluZm9ybWF0aW9uIG9mIGFuIGFzc2V0LgBVAU9yaWdpbiBtdXN0IGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4gVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQlAWBDcmVhdGVPcmlnaW5gIG9yIGJlIHRoZSBzaWduZWQgYG93bmVyYCBjb25maWd1cmVkIGR1cmluZyBhc3NldCBjcmVhdGlvbi4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LvAtIGByZXNlcnZlc2A6IFRoZSBmdWxsIGxpc3Qgb2YgdHJ1c3RlZCByZXNlcnZlcyBpbmZvcm1hdGlvbi4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsEEDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhhwYWxsZXQQQ2FsbAQEVAABGCxjcmVhdGVfcG9vbAgBGGFzc2V0Mf0BAURCb3g8VDo6QXNzZXRLaW5kPgABGGFzc2V0Mv0BAURCb3g8VDo6QXNzZXRLaW5kPgAAEBkBQ3JlYXRlcyBhbiBlbXB0eSBsaXF1aWRpdHkgcG9vbCBhbmQgYW4gYXNzb2NpYXRlZCBuZXcgYGxwX3Rva2VuYCBhc3NldAEBKHRoZSBpZCBvZiB3aGljaCBpcyByZXR1cm5lZCBpbiB0aGUgYEV2ZW50OjpQb29sQ3JlYXRlZGAgZXZlbnQpLgARAU9uY2UgYSBwb29sIGlzIGNyZWF0ZWQsIHNvbWVvbmUgbWF5IFtgUGFsbGV0OjphZGRfbGlxdWlkaXR5YF0gdG8gaXQuNGFkZF9saXF1aWRpdHkcARhhc3NldDH9AQFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDL9AQFEQm94PFQ6OkFzc2V0S2luZD4AATxhbW91bnQxX2Rlc2lyZWRVAQEoVDo6QmFsYW5jZQABPGFtb3VudDJfZGVzaXJlZFUBAShUOjpCYWxhbmNlAAEsYW1vdW50MV9taW5VAQEoVDo6QmFsYW5jZQABLGFtb3VudDJfbWluVQEBKFQ6OkJhbGFuY2UAARxtaW50X3RvBAEwVDo6QWNjb3VudElkAAE45FByb3ZpZGUgbGlxdWlkaXR5IGludG8gdGhlIHBvb2wgb2YgYGFzc2V0MWAgYW5kIGBhc3NldDJgLg0BTk9URTogYW4gb3B0aW1hbCBhbW91bnQgb2YgYXNzZXQxIGFuZCBhc3NldDIgd2lsbCBiZSBjYWxjdWxhdGVkIGFuZCEBbWlnaHQgYmUgZGlmZmVyZW50IHRoYW4gdGhlIHByb3ZpZGVkIGBhbW91bnQxX2Rlc2lyZWRgL2BhbW91bnQyX2Rlc2lyZWRg/HRodXMgeW91IHNob3VsZCBwcm92aWRlIHRoZSBtaW4gYW1vdW50IHlvdSdyZSBoYXBweSB0byBwcm92aWRlLshQYXJhbXMgYGFtb3VudDFfbWluYC9gYW1vdW50Ml9taW5gIHJlcHJlc2VudCB0aGF0LkkBYG1pbnRfdG9gIHdpbGwgYmUgc2VudCB0aGUgbGlxdWlkaXR5IHRva2VucyB0aGF0IHJlcHJlc2VudCB0aGlzIHNoYXJlIG9mIHRoZSBwb29sLgBdAU5PVEU6IHdoZW4gZW5jb3VudGVyaW5nIGFuIGluY29ycmVjdCBleGNoYW5nZSByYXRlIGFuZCBub24td2l0aGRyYXdhYmxlIHBvb2wgbGlxdWlkaXR5LNxiYXRjaCBhbiBhdG9taWMgY2FsbCB3aXRoIFtgUGFsbGV0OjphZGRfbGlxdWlkaXR5YF0gYW5kUQFbYFBhbGxldDo6c3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdIG9yIFtgUGFsbGV0Ojpzd2FwX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zYF0lAWNhbGxzIHRvIHJlbmRlciB0aGUgbGlxdWlkaXR5IHdpdGhkcmF3YWJsZSBhbmQgcmVjdGlmeSB0aGUgZXhjaGFuZ2UgcmF0ZS4A2E9uY2UgbGlxdWlkaXR5IGlzIGFkZGVkLCBzb21lb25lIG1heSBzdWNjZXNzZnVsbHkgY2FsbKRbYFBhbGxldDo6c3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdLkByZW1vdmVfbGlxdWlkaXR5GAEYYXNzZXQx/QEBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQy/QEBREJveDxUOjpBc3NldEtpbmQ+AAE0bHBfdG9rZW5fYnVyblUBAShUOjpCYWxhbmNlAAFMYW1vdW50MV9taW5fcmVjZWl2ZVUBAShUOjpCYWxhbmNlAAFMYW1vdW50Ml9taW5fcmVjZWl2ZVUBAShUOjpCYWxhbmNlAAEsd2l0aGRyYXdfdG8EATBUOjpBY2NvdW50SWQAAgxNAUFsbG93cyB5b3UgdG8gcmVtb3ZlIGxpcXVpZGl0eSBieSBwcm92aWRpbmcgdGhlIGBscF90b2tlbl9idXJuYCB0b2tlbnMgdGhhdCB3aWxsIGJlUQFidXJuZWQgaW4gdGhlIHByb2Nlc3MuIFdpdGggdGhlIHVzYWdlIG9mIGBhbW91bnQxX21pbl9yZWNlaXZlYC9gYW1vdW50Ml9taW5fcmVjZWl2ZWA1AWl0J3MgcG9zc2libGUgdG8gY29udHJvbCB0aGUgbWluIGFtb3VudCBvZiByZXR1cm5lZCB0b2tlbnMgeW91J3JlIGhhcHB5IHdpdGgucHN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnMUARBwYXRoxQQBWFZlYzxCb3g8VDo6QXNzZXRLaW5kPj4AASRhbW91bnRfaW5VAQEoVDo6QmFsYW5jZQABOGFtb3VudF9vdXRfbWluVQEBKFQ6OkJhbGFuY2UAARxzZW5kX3RvBAEwVDo6QWNjb3VudElkAAEoa2VlcF9hbGl2ZVkBARBib29sAAMYwFN3YXAgdGhlIGV4YWN0IGFtb3VudCBvZiBgYXNzZXQxYCBpbnRvIGBhc3NldDJgLi0BYGFtb3VudF9vdXRfbWluYCBwYXJhbSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG1pbiBhbW91bnQgb2YgdGhlIGBhc3NldDJgYHlvdSdyZSBoYXBweSB0byByZWNlaXZlLgBZAVtgQXNzZXRDb252ZXJzaW9uQXBpOjpxdW90ZV9wcmljZV9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdIHJ1bnRpbWUgY2FsbCBjYW4gYmUgY2FsbGVkMGZvciBhIHF1b3RlLnBzd2FwX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zFAEQcGF0aMUEAVhWZWM8Qm94PFQ6OkFzc2V0S2luZD4+AAEoYW1vdW50X291dFUBAShUOjpCYWxhbmNlAAE0YW1vdW50X2luX21heFUBAShUOjpCYWxhbmNlAAEcc2VuZF90bwQBMFQ6OkFjY291bnRJZAABKGtlZXBfYWxpdmVZAQEQYm9vbAAEGAEBU3dhcCBhbnkgYW1vdW50IG9mIGBhc3NldDFgIHRvIGdldCB0aGUgZXhhY3QgYW1vdW50IG9mIGBhc3NldDJgLhkBYGFtb3VudF9pbl9tYXhgIHBhcmFtIGFsbG93cyB0byBzcGVjaWZ5IHRoZSBtYXggYW1vdW50IG9mIHRoZSBgYXNzZXQxYGB5b3UncmUgaGFwcHkgdG8gcHJvdmlkZS4AWQFbYEFzc2V0Q29udmVyc2lvbkFwaTo6cXVvdGVfcHJpY2VfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnNgXSBydW50aW1lIGNhbGwgY2FuIGJlIGNhbGxlZDBmb3IgYSBxdW90ZS4UdG91Y2gIARhhc3NldDH9AQFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDL9AQFEQm94PFQ6OkFzc2V0S2luZD4ABSxNAVRvdWNoIGFuIGV4aXN0aW5nIHBvb2wgdG8gZnVsZmlsbCBwcmVyZXF1aXNpdGVzIGJlZm9yZSBwcm92aWRpbmcgbGlxdWlkaXR5LCBzdWNoIGFzSQFlbnN1cmluZyB0aGF0IHRoZSBwb29sJ3MgYWNjb3VudHMgYXJlIGluIHBsYWNlLiBJdCBpcyB0eXBpY2FsbHkgdXNlZnVsIHdoZW4gYSBwb29sVQFjcmVhdG9yIHJlbW92ZXMgdGhlIHBvb2wncyBhY2NvdW50cyBhbmQgZG9lcyBub3QgcHJvdmlkZSBhIGxpcXVpZGl0eS4gVGhpcyBhY3Rpb24gbWF5VQFpbnZvbHZlIGhvbGRpbmcgYXNzZXRzIGZyb20gdGhlIGNhbGxlciBhcyBhIGRlcG9zaXQgZm9yIGNyZWF0aW5nIHRoZSBwb29sJ3MgYWNjb3VudHMuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgApAS0gYGFzc2V0MWA6IFRoZSBhc3NldCBJRCBvZiBhbiBleGlzdGluZyBwb29sIHdpdGggYSBwYWlyIChhc3NldDEsIGFzc2V0MikuKQEtIGBhc3NldDJgOiBUaGUgYXNzZXQgSUQgb2YgYW4gZXhpc3RpbmcgcG9vbCB3aXRoIGEgcGFpciAoYXNzZXQxLCBhc3NldDIpLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4EcFBhbGxldCdzIGNhbGxhYmxlIGZ1bmN0aW9ucy7FBAAAAv0BAMkEDDxwYWxsZXRfdHJlYXN1cnkYcGFsbGV0EENhbGwIBFQABEkAARgsc3BlbmRfbG9jYWwIARhhbW91bnRRAQE8QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADRLhQcm9wb3NlIGFuZCBhcHByb3ZlIGEgc3BlbmQgb2YgdHJlYXN1cnkgZnVuZHMuAEgjIyBEaXNwYXRjaCBPcmlnaW4ARQFNdXN0IGJlIFtgQ29uZmlnOjpTcGVuZE9yaWdpbmBdIHdpdGggdGhlIGBTdWNjZXNzYCB2YWx1ZSBiZWluZyBhdCBsZWFzdCBgYW1vdW50YC4ALCMjIyBEZXRhaWxzRQFOT1RFOiBGb3IgcmVjb3JkLWtlZXBpbmcgcHVycG9zZXMsIHRoZSBwcm9wb3NlciBpcyBkZWVtZWQgdG8gYmUgZXF1aXZhbGVudCB0byB0aGUwYmVuZWZpY2lhcnkuADgjIyMgUGFyYW1ldGVyc0EBLSBgYW1vdW50YDogVGhlIGFtb3VudCB0byBiZSB0cmFuc2ZlcnJlZCBmcm9tIHRoZSB0cmVhc3VyeSB0byB0aGUgYGJlbmVmaWNpYXJ5YC7oLSBgYmVuZWZpY2lhcnlgOiBUaGUgZGVzdGluYXRpb24gYWNjb3VudCBmb3IgdGhlIHRyYW5zZmVyLgAkIyMgRXZlbnRzALRFbWl0cyBbYEV2ZW50OjpTcGVuZEFwcHJvdmVkYF0gaWYgc3VjY2Vzc2Z1bC48cmVtb3ZlX2FwcHJvdmFsBAEscHJvcG9zYWxfaWRgATRQcm9wb3NhbEluZGV4AARULQFGb3JjZSBhIHByZXZpb3VzbHkgYXBwcm92ZWQgcHJvcG9zYWwgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBhcHByb3ZhbCBxdWV1ZS4ASCMjIERpc3BhdGNoIE9yaWdpbgCETXVzdCBiZSBbYENvbmZpZzo6UmVqZWN0T3JpZ2luYF0uACgjIyBEZXRhaWxzAMBUaGUgb3JpZ2luYWwgZGVwb3NpdCB3aWxsIG5vIGxvbmdlciBiZSByZXR1cm5lZC4AOCMjIyBQYXJhbWV0ZXJzoC0gYHByb3Bvc2FsX2lkYDogVGhlIGluZGV4IG9mIGEgcHJvcG9zYWwAOCMjIyBDb21wbGV4aXR5rC0gTyhBKSB3aGVyZSBgQWAgaXMgdGhlIG51bWJlciBvZiBhcHByb3ZhbHMAKCMjIyBFcnJvcnNFAS0gW2BFcnJvcjo6UHJvcG9zYWxOb3RBcHByb3ZlZGBdOiBUaGUgYHByb3Bvc2FsX2lkYCBzdXBwbGllZCB3YXMgbm90IGZvdW5kIGluIHRoZVEBICBhcHByb3ZhbCBxdWV1ZSwgaS5lLiwgdGhlIHByb3Bvc2FsIGhhcyBub3QgYmVlbiBhcHByb3ZlZC4gVGhpcyBjb3VsZCBhbHNvIG1lYW4gdGhlWQEgIHByb3Bvc2FsIGRvZXMgbm90IGV4aXN0IGFsdG9nZXRoZXIsIHRodXMgdGhlcmUgaXMgbm8gd2F5IGl0IHdvdWxkIGhhdmUgYmVlbiBhcHByb3ZlZFQgIGluIHRoZSBmaXJzdCBwbGFjZS4Uc3BlbmQQAShhc3NldF9raW5kzQQBREJveDxUOjpBc3NldEtpbmQ+AAEYYW1vdW50UQEBUEFzc2V0QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnnRBAF4Qm94PEJlbmVmaWNpYXJ5TG9va3VwT2Y8VCwgST4+AAEodmFsaWRfZnJvbeABcE9wdGlvbjxCbG9ja051bWJlckZvcjxULCBJPj4ABWi4UHJvcG9zZSBhbmQgYXBwcm92ZSBhIHNwZW5kIG9mIHRyZWFzdXJ5IGZ1bmRzLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAB0BTXVzdCBiZSBbYENvbmZpZzo6U3BlbmRPcmlnaW5gXSB3aXRoIHRoZSBgU3VjY2Vzc2AgdmFsdWUgYmVpbmcgYXQgbGVhc3RVAWBhbW91bnRgIG9mIGBhc3NldF9raW5kYCBpbiB0aGUgbmF0aXZlIGFzc2V0LiBUaGUgYW1vdW50IG9mIGBhc3NldF9raW5kYCBpcyBjb252ZXJ0ZWTUZm9yIGFzc2VydGlvbiB1c2luZyB0aGUgW2BDb25maWc6OkJhbGFuY2VDb252ZXJ0ZXJgXS4AKCMjIERldGFpbHMASQFDcmVhdGUgYW4gYXBwcm92ZWQgc3BlbmQgZm9yIHRyYW5zZmVycmluZyBhIHNwZWNpZmljIGBhbW91bnRgIG9mIGBhc3NldF9raW5kYCB0byBhYQFkZXNpZ25hdGVkIGJlbmVmaWNpYXJ5LiBUaGUgc3BlbmQgbXVzdCBiZSBjbGFpbWVkIHVzaW5nIHRoZSBgcGF5b3V0YCBkaXNwYXRjaGFibGUgd2l0aGludHRoZSBbYENvbmZpZzo6UGF5b3V0UGVyaW9kYF0uADgjIyMgUGFyYW1ldGVycxUBLSBgYXNzZXRfa2luZGA6IEFuIGluZGljYXRvciBvZiB0aGUgc3BlY2lmaWMgYXNzZXQgY2xhc3MgdG8gYmUgc3BlbnQuQQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IHRvIGJlIHRyYW5zZmVycmVkIGZyb20gdGhlIHRyZWFzdXJ5IHRvIHRoZSBgYmVuZWZpY2lhcnlgLrgtIGBiZW5lZmljaWFyeWA6IFRoZSBiZW5lZmljaWFyeSBvZiB0aGUgc3BlbmQuVQEtIGB2YWxpZF9mcm9tYDogVGhlIGJsb2NrIG51bWJlciBmcm9tIHdoaWNoIHRoZSBzcGVuZCBjYW4gYmUgY2xhaW1lZC4gSXQgY2FuIHJlZmVyIHRvGQEgIHRoZSBwYXN0IGlmIHRoZSByZXN1bHRpbmcgc3BlbmQgaGFzIG5vdCB5ZXQgZXhwaXJlZCBhY2NvcmRpbmcgdG8gdGhlRQEgIFtgQ29uZmlnOjpQYXlvdXRQZXJpb2RgXS4gSWYgYE5vbmVgLCB0aGUgc3BlbmQgY2FuIGJlIGNsYWltZWQgaW1tZWRpYXRlbHkgYWZ0ZXIsICBhcHByb3ZhbC4AJCMjIEV2ZW50cwDIRW1pdHMgW2BFdmVudDo6QXNzZXRTcGVuZEFwcHJvdmVkYF0gaWYgc3VjY2Vzc2Z1bC4YcGF5b3V0BAEUaW5kZXg4AShTcGVuZEluZGV4AAZMOENsYWltIGEgc3BlbmQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AOE11c3QgYmUgc2lnbmVkACgjIyBEZXRhaWxzAFUBU3BlbmRzIG11c3QgYmUgY2xhaW1lZCB3aXRoaW4gc29tZSB0ZW1wb3JhbCBib3VuZHMuIEEgc3BlbmQgbWF5IGJlIGNsYWltZWQgd2l0aGluIG9uZdRbYENvbmZpZzo6UGF5b3V0UGVyaW9kYF0gZnJvbSB0aGUgYHZhbGlkX2Zyb21gIGJsb2NrLlUBSW4gY2FzZSBvZiBhIHBheW91dCBmYWlsdXJlLCB0aGUgc3BlbmQgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZSBgY2hlY2tfc3RhdHVzYNxkaXNwYXRjaGFibGUgYmVmb3JlIHJldHJ5aW5nIHdpdGggdGhlIGN1cnJlbnQgZnVuY3Rpb24uADgjIyMgUGFyYW1ldGVyc2wtIGBpbmRleGA6IFRoZSBzcGVuZCBpbmRleC4AJCMjIEV2ZW50cwCQRW1pdHMgW2BFdmVudDo6UGFpZGBdIGlmIHN1Y2Nlc3NmdWwuMGNoZWNrX3N0YXR1cwQBFGluZGV4OAEoU3BlbmRJbmRleAAHTCkBQ2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgc3BlbmQgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBzdG9yYWdlIGlmIHByb2Nlc3NlZC4ASCMjIERpc3BhdGNoIE9yaWdpbgA8TXVzdCBiZSBzaWduZWQuACgjIyBEZXRhaWxzAAEBVGhlIHN0YXR1cyBjaGVjayBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgcmV0cnlpbmcgYSBmYWlsZWQgcGF5b3V0LkkBSWYgYSBzcGVuZCBoYXMgZWl0aGVyIHN1Y2NlZWRlZCBvciBleHBpcmVkLCBpdCBpcyByZW1vdmVkIGZyb20gdGhlIHN0b3JhZ2UgYnkgdGhpc+xmdW5jdGlvbi4gSW4gc3VjaCBpbnN0YW5jZXMsIHRyYW5zYWN0aW9uIGZlZXMgYXJlIHJlZnVuZGVkLgA4IyMjIFBhcmFtZXRlcnNsLSBgaW5kZXhgOiBUaGUgc3BlbmQgaW5kZXguACQjIyBFdmVudHMA+EVtaXRzIFtgRXZlbnQ6OlBheW1lbnRGYWlsZWRgXSBpZiB0aGUgc3BlbmQgcGF5b3V0IGhhcyBmYWlsZWQuAQFFbWl0cyBbYEV2ZW50OjpTcGVuZFByb2Nlc3NlZGBdIGlmIHRoZSBzcGVuZCBwYXlvdXQgaGFzIHN1Y2NlZWQuKHZvaWRfc3BlbmQEARRpbmRleDgBKFNwZW5kSW5kZXgACEB8Vm9pZCBwcmV2aW91c2x5IGFwcHJvdmVkIHNwZW5kLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAIRNdXN0IGJlIFtgQ29uZmlnOjpSZWplY3RPcmlnaW5gXS4AKCMjIERldGFpbHMAHQFBIHNwZW5kIHZvaWQgaXMgb25seSBwb3NzaWJsZSBpZiB0aGUgcGF5b3V0IGhhcyBub3QgYmVlbiBhdHRlbXB0ZWQgeWV0LgA4IyMjIFBhcmFtZXRlcnNsLSBgaW5kZXhgOiBUaGUgc3BlbmQgaW5kZXguACQjIyBFdmVudHMAwEVtaXRzIFtgRXZlbnQ6OkFzc2V0U3BlbmRWb2lkZWRgXSBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7NBAxccG9sa2Fkb3RfcnVudGltZV9jb21tb24UaW1wbHNcVmVyc2lvbmVkTG9jYXRhYmxlQXNzZXQAAQwIVjMIASBsb2NhdGlvbq0BAUR4Y206OnYzOjpMb2NhdGlvbgABIGFzc2V0X2lkTQIBQHhjbTo6djM6OkFzc2V0SWQAAwAIVjQIASBsb2NhdGlvbskBAUR4Y206OnY0OjpMb2NhdGlvbgABIGFzc2V0X2lkwQIBQHhjbTo6djQ6OkFzc2V0SWQABAAIVjUIASBsb2NhdGlvbv0BAUR4Y206OnY1OjpMb2NhdGlvbgABIGFzc2V0X2lkDQMBQHhjbTo6djU6OkFzc2V0SWQABQAA0QQMRHBhcmFjaGFpbnNfY29tbW9uDHBheWRWZXJzaW9uZWRMb2NhdGFibGVBY2NvdW50AAEICFY0CAEgbG9jYXRpb27JAQFEeGNtOjp2NDo6TG9jYXRpb24AAShhY2NvdW50X2lkyQEBRHhjbTo6djQ6OkxvY2F0aW9uAAQACFY1CAEgbG9jYXRpb279AQFEeGNtOjp2NTo6TG9jYXRpb24AAShhY2NvdW50X2lk/QEBRHhjbTo6djU6OkxvY2F0aW9uAAUAANUEDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcYcGFsbGV0EENhbGwIBFQABEkAARgQdm90ZQgBKHBvbGxfaW5kZXhgAURQb2xsSW5kZXhPZjxULCBJPgABEHZvdGXZBAFwQWNjb3VudFZvdGU8QmFsYW5jZU9mPFQsIEk+PgAAJBkBVm90ZSBpbiBhIHBvbGwuIElmIGB2b3RlLmlzX2F5ZSgpYCwgdGhlIHZvdGUgaXMgdG8gZW5hY3QgdGhlIHByb3Bvc2FsO7hvdGhlcndpc2UgaXQgaXMgYSB2b3RlIHRvIGtlZXAgdGhlIHN0YXR1cyBxdW8uAMhUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgDILSBgcG9sbF9pbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgcG9sbCB0byB2b3RlIGZvci6ELSBgdm90ZWA6IFRoZSB2b3RlIGNvbmZpZ3VyYXRpb24uABUBV2VpZ2h0OiBgTyhSKWAgd2hlcmUgUiBpcyB0aGUgbnVtYmVyIG9mIHBvbGxzIHRoZSB2b3RlciBoYXMgdm90ZWQgb24uIGRlbGVnYXRlEAEUY2xhc3PRAwE0Q2xhc3NPZjxULCBJPgABCHRvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShjb252aWN0aW9u4QQBKENvbnZpY3Rpb24AARxiYWxhbmNlVQEBPEJhbGFuY2VPZjxULCBJPgABXE0BRGVsZWdhdGUgdGhlIHZvdGluZyBwb3dlciAod2l0aCBzb21lIGdpdmVuIGNvbnZpY3Rpb24pIG9mIHRoZSBzZW5kaW5nIGFjY291bnQgZm9yIGFocGFydGljdWxhciBjbGFzcyBvZiBwb2xscy4AVQFUaGUgYmFsYW5jZSBkZWxlZ2F0ZWQgaXMgbG9ja2VkIGZvciBhcyBsb25nIGFzIGl0J3MgZGVsZWdhdGVkLCBhbmQgdGhlcmVhZnRlciBmb3IgdGhlyHRpbWUgYXBwcm9wcmlhdGUgZm9yIHRoZSBjb252aWN0aW9uJ3MgbG9jayBwZXJpb2QuAF0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXywgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBlaXRoZXI6dCAgLSBiZSBkZWxlZ2F0aW5nIGFscmVhZHk7IG9yRQEgIC0gaGF2ZSBubyB2b3RpbmcgYWN0aXZpdHkgKGlmIHRoZXJlIGlzLCB0aGVuIGl0IHdpbGwgbmVlZCB0byBiZSByZW1vdmVkIHRocm91Z2hMICAgIGByZW1vdmVfdm90ZWApLgBFAS0gYHRvYDogVGhlIGFjY291bnQgd2hvc2Ugdm90aW5nIHRoZSBgdGFyZ2V0YCBhY2NvdW50J3Mgdm90aW5nIHBvd2VyIHdpbGwgZm9sbG93Ll0BLSBgY2xhc3NgOiBUaGUgY2xhc3Mgb2YgcG9sbHMgdG8gZGVsZWdhdGUuIFRvIGRlbGVnYXRlIG11bHRpcGxlIGNsYXNzZXMsIG11bHRpcGxlIGNhbGxzgCAgdG8gdGhpcyBmdW5jdGlvbiBhcmUgcmVxdWlyZWQuVQEtIGBjb252aWN0aW9uYDogVGhlIGNvbnZpY3Rpb24gdGhhdCB3aWxsIGJlIGF0dGFjaGVkIHRvIHRoZSBkZWxlZ2F0ZWQgdm90ZXMuIFdoZW4gdGhlQQEgIGFjY291bnQgaXMgdW5kZWxlZ2F0ZWQsIHRoZSBmdW5kcyB3aWxsIGJlIGxvY2tlZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgcGVyaW9kLmEBLSBgYmFsYW5jZWA6IFRoZSBhbW91bnQgb2YgdGhlIGFjY291bnQncyBiYWxhbmNlIHRvIGJlIHVzZWQgaW4gZGVsZWdhdGluZy4gVGhpcyBtdXN0IG5vdLQgIGJlIG1vcmUgdGhhbiB0aGUgYWNjb3VudCdzIGN1cnJlbnQgYmFsYW5jZS4ASEVtaXRzIGBEZWxlZ2F0ZWRgLgAlAVdlaWdodDogYE8oUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGUgdm90ZXIgZGVsZWdhdGluZyB0byBoYXNNASAgdm90ZWQgb24uIFdlaWdodCBpcyBpbml0aWFsbHkgY2hhcmdlZCBhcyBpZiBtYXhpbXVtIHZvdGVzLCBidXQgaXMgcmVmdW5kZWQgbGF0ZXIuKHVuZGVsZWdhdGUEARRjbGFzc9EDATRDbGFzc09mPFQsIEk+AAI4TQFVbmRlbGVnYXRlIHRoZSB2b3RpbmcgcG93ZXIgb2YgdGhlIHNlbmRpbmcgYWNjb3VudCBmb3IgYSBwYXJ0aWN1bGFyIGNsYXNzIG9mIHBvbGxzLgBdAVRva2VucyBtYXkgYmUgdW5sb2NrZWQgZm9sbG93aW5nIG9uY2UgYW4gYW1vdW50IG9mIHRpbWUgY29uc2lzdGVudCB3aXRoIHRoZSBsb2NrIHBlcmlvZAkBb2YgdGhlIGNvbnZpY3Rpb24gd2l0aCB3aGljaCB0aGUgZGVsZWdhdGlvbiB3YXMgaXNzdWVkIGhhcyBwYXNzZWQuAEUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlVGN1cnJlbnRseSBkZWxlZ2F0aW5nLgDwLSBgY2xhc3NgOiBUaGUgY2xhc3Mgb2YgcG9sbHMgdG8gcmVtb3ZlIHRoZSBkZWxlZ2F0aW9uIGZyb20uAFBFbWl0cyBgVW5kZWxlZ2F0ZWRgLgAlAVdlaWdodDogYE8oUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGUgdm90ZXIgZGVsZWdhdGluZyB0byBoYXNNASAgdm90ZWQgb24uIFdlaWdodCBpcyBpbml0aWFsbHkgY2hhcmdlZCBhcyBpZiBtYXhpbXVtIHZvdGVzLCBidXQgaXMgcmVmdW5kZWQgbGF0ZXIuGHVubG9jawgBFGNsYXNz0QMBNENsYXNzT2Y8VCwgST4AARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADJF0BUmVtb3ZlIHRoZSBsb2NrIGNhdXNlZCBieSBwcmlvciB2b3RpbmcvZGVsZWdhdGluZyB3aGljaCBoYXMgZXhwaXJlZCB3aXRoaW4gYSBwYXJ0aWN1bGFyGGNsYXNzLgDIVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AoC0gYGNsYXNzYDogVGhlIGNsYXNzIG9mIHBvbGxzIHRvIHVubG9jay64LSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gcmVtb3ZlIHRoZSBsb2NrIG9uLgC8V2VpZ2h0OiBgTyhSKWAgd2l0aCBSIG51bWJlciBvZiB2b3RlIG9mIHRhcmdldC4scmVtb3ZlX3ZvdGUIARRjbGFzc+UEAVRPcHRpb248Q2xhc3NPZjxULCBJPj4AARRpbmRleDgBRFBvbGxJbmRleE9mPFQsIEk+AAR0ZFJlbW92ZSBhIHZvdGUgZm9yIGEgcG9sbC4ADElmOnAtIHRoZSBwb2xsIHdhcyBjYW5jZWxsZWQsIG9yZC0gdGhlIHBvbGwgaXMgb25nb2luZywgb3J4LSB0aGUgcG9sbCBoYXMgZW5kZWQgc3VjaCB0aGF0/CAgLSB0aGUgdm90ZSBvZiB0aGUgYWNjb3VudCB3YXMgaW4gb3Bwb3NpdGlvbiB0byB0aGUgcmVzdWx0OyBvctQgIC0gdGhlcmUgd2FzIG5vIGNvbnZpY3Rpb24gdG8gdGhlIGFjY291bnQncyB2b3RlOyBvcoQgIC0gdGhlIGFjY291bnQgbWFkZSBhIHNwbGl0IHZvdGVdAS4uLnRoZW4gdGhlIHZvdGUgaXMgcmVtb3ZlZCBjbGVhbmx5IGFuZCBhIGZvbGxvd2luZyBjYWxsIHRvIGB1bmxvY2tgIG1heSByZXN1bHQgaW4gbW9yZVhmdW5kcyBiZWluZyBhdmFpbGFibGUuAJBJZiwgaG93ZXZlciwgdGhlIHBvbGwgaGFzIGVuZGVkIGFuZDrsLSBpdCBmaW5pc2hlZCBjb3JyZXNwb25kaW5nIHRvIHRoZSB2b3RlIG9mIHRoZSBhY2NvdW50LCBhbmTcLSB0aGUgYWNjb3VudCBtYWRlIGEgc3RhbmRhcmQgdm90ZSB3aXRoIGNvbnZpY3Rpb24sIGFuZLwtIHRoZSBsb2NrIHBlcmlvZCBvZiB0aGUgY29udmljdGlvbiBpcyBub3Qgb3ZlclkBLi4udGhlbiB0aGUgbG9jayB3aWxsIGJlIGFnZ3JlZ2F0ZWQgaW50byB0aGUgb3ZlcmFsbCBhY2NvdW50J3MgbG9jaywgd2hpY2ggbWF5IGludm9sdmVZASpvdmVybG9ja2luZyogKHdoZXJlIHRoZSB0d28gbG9ja3MgYXJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgbG9jayB0aGF0IGlzIHRoZSBtYXhpbXVt5G9mIGJvdGggdGhlIGFtb3VudCBsb2NrZWQgYW5kIHRoZSB0aW1lIGlzIGl0IGxvY2tlZCBmb3IpLgBJAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8sIGFuZCB0aGUgc2lnbmVyIG11c3QgaGF2ZSBhIHZvdGVwcmVnaXN0ZXJlZCBmb3IgcG9sbCBgaW5kZXhgLgDcLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgcG9sbCBvZiB0aGUgdm90ZSB0byBiZSByZW1vdmVkLlUBLSBgY2xhc3NgOiBPcHRpb25hbCBwYXJhbWV0ZXIsIGlmIGdpdmVuIGl0IGluZGljYXRlcyB0aGUgY2xhc3Mgb2YgdGhlIHBvbGwuIEZvciBwb2xsc/AgIHdoaWNoIGhhdmUgZmluaXNoZWQgb3IgYXJlIGNhbmNlbGxlZCwgdGhpcyBtdXN0IGJlIGBTb21lYC4ARQFXZWlnaHQ6IGBPKFIgKyBsb2cgUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGF0IGB0YXJnZXRgIGhhcyB2b3RlZCBvbi7YICBXZWlnaHQgaXMgY2FsY3VsYXRlZCBmb3IgdGhlIG1heGltdW0gbnVtYmVyIG9mIHZvdGUuRHJlbW92ZV9vdGhlcl92b3RlDAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRjbGFzc9EDATRDbGFzc09mPFQsIEk+AAEUaW5kZXg4AURQb2xsSW5kZXhPZjxULCBJPgAFQGRSZW1vdmUgYSB2b3RlIGZvciBhIHBvbGwuAE0BSWYgdGhlIGB0YXJnZXRgIGlzIGVxdWFsIHRvIHRoZSBzaWduZXIsIHRoZW4gdGhpcyBmdW5jdGlvbiBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8tAWByZW1vdmVfdm90ZWAuIElmIG5vdCBlcXVhbCB0byB0aGUgc2lnbmVyLCB0aGVuIHRoZSB2b3RlIG11c3QgaGF2ZSBleHBpcmVkLCUBZWl0aGVyIGJlY2F1c2UgdGhlIHBvbGwgd2FzIGNhbmNlbGxlZCwgYmVjYXVzZSB0aGUgdm90ZXIgbG9zdCB0aGUgcG9sbCBvcphiZWNhdXNlIHRoZSBjb252aWN0aW9uIHBlcmlvZCBpcyBvdmVyLgDIVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AYQEtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCBvZiB0aGUgdm90ZSB0byBiZSByZW1vdmVkOyB0aGlzIGFjY291bnQgbXVzdCBoYXZlIHZvdGVkIGZvciBwb2xsKCAgYGluZGV4YC7cLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgcG9sbCBvZiB0aGUgdm90ZSB0byBiZSByZW1vdmVkLoQtIGBjbGFzc2A6IFRoZSBjbGFzcyBvZiB0aGUgcG9sbC4ARQFXZWlnaHQ6IGBPKFIgKyBsb2cgUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGF0IGB0YXJnZXRgIGhhcyB2b3RlZCBvbi7YICBXZWlnaHQgaXMgY2FsY3VsYXRlZCBmb3IgdGhlIG1heGltdW0gbnVtYmVyIG9mIHZvdGUuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLtkEDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZSxBY2NvdW50Vm90ZQQcQmFsYW5jZQFVAQEMIFN0YW5kYXJkCAEQdm90Zd0EARBWb3RlAAEcYmFsYW5jZVUBARxCYWxhbmNlAAAAFFNwbGl0CAEMYXllVQEBHEJhbGFuY2UAAQxuYXlVAQEcQmFsYW5jZQABADBTcGxpdEFic3RhaW4MAQxheWVVAQEcQmFsYW5jZQABDG5heVUBARxCYWxhbmNlAAEcYWJzdGFpblUBARxCYWxhbmNlAAIAAN0EDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZRBWb3RlAAAEAAwAAADhBAxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nKGNvbnZpY3Rpb24oQ29udmljdGlvbgABHBBOb25lAAAAIExvY2tlZDF4AAEAIExvY2tlZDJ4AAIAIExvY2tlZDN4AAMAIExvY2tlZDR4AAQAIExvY2tlZDV4AAUAIExvY2tlZDZ4AAYAAOUEBBhPcHRpb24EBFQB0QMBCBBOb25lAAAAEFNvbWUEANEDAAABAADpBAxAcGFsbGV0X3JlZmVyZW5kYRhwYWxsZXQQQ2FsbAgEVAAESQABJBhzdWJtaXQMATxwcm9wb3NhbF9vcmlnaW7VAwFcQm94PFBhbGxldHNPcmlnaW5PZjxUPj4AASBwcm9wb3NhbO0EAUxCb3VuZGVkQ2FsbE9mPFQsIEk+AAFAZW5hY3RtZW50X21vbWVudPUEAYhEaXNwYXRjaFRpbWU8QmxvY2tOdW1iZXJGb3I8VCwgST4+AAAksFByb3Bvc2UgYSByZWZlcmVuZHVtIG9uIGEgcHJpdmlsZWdlZCBhY3Rpb24uAFkBLSBgb3JpZ2luYDogbXVzdCBiZSBgU3VibWl0T3JpZ2luYCBhbmQgdGhlIGFjY291bnQgbXVzdCBoYXZlIGBTdWJtaXNzaW9uRGVwb3NpdGAgZnVuZHMwICBhdmFpbGFibGUuLQEtIGBwcm9wb3NhbF9vcmlnaW5gOiBUaGUgb3JpZ2luIGZyb20gd2hpY2ggdGhlIHByb3Bvc2FsIHNob3VsZCBiZSBleGVjdXRlZC5sLSBgcHJvcG9zYWxgOiBUaGUgcHJvcG9zYWwuFQEtIGBlbmFjdG1lbnRfbW9tZW50YDogVGhlIG1vbWVudCB0aGF0IHRoZSBwcm9wb3NhbCBzaG91bGQgYmUgZW5hY3RlZC4ASEVtaXRzIGBTdWJtaXR0ZWRgLlhwbGFjZV9kZWNpc2lvbl9kZXBvc2l0BAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgAASCsUG9zdCB0aGUgRGVjaXNpb24gRGVwb3NpdCBmb3IgYSByZWZlcmVuZHVtLgA5AS0gYG9yaWdpbmA6IG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBhY2NvdW50IG11c3QgaGF2ZSBmdW5kcyBhdmFpbGFibGUgZm9yIHRoZaAgIHJlZmVyZW5kdW0ncyB0cmFjaydzIERlY2lzaW9uIERlcG9zaXQuUQEtIGBpbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgc3VibWl0dGVkIHJlZmVyZW5kdW0gd2hvc2UgRGVjaXNpb24gRGVwb3NpdCBpcyB5ZXQgdG8gYmUkICBwb3N0ZWQuAHhFbWl0cyBgRGVjaXNpb25EZXBvc2l0UGxhY2VkYC5ccmVmdW5kX2RlY2lzaW9uX2RlcG9zaXQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAACHCkBUmVmdW5kIHRoZSBEZWNpc2lvbiBEZXBvc2l0IGZvciBhIGNsb3NlZCByZWZlcmVuZHVtIGJhY2sgdG8gdGhlIGRlcG9zaXRvci4AnC0gYG9yaWdpbmA6IG11c3QgYmUgYFNpZ25lZGAgb3IgYFJvb3RgLk0BLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgYSBjbG9zZWQgcmVmZXJlbmR1bSB3aG9zZSBEZWNpc2lvbiBEZXBvc2l0IGhhcyBub3QgeWV0IGJlZW4sICByZWZ1bmRlZC4AgEVtaXRzIGBEZWNpc2lvbkRlcG9zaXRSZWZ1bmRlZGAuGGNhbmNlbAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAMYdENhbmNlbCBhbiBvbmdvaW5nIHJlZmVyZW5kdW0uAJwtIGBvcmlnaW5gOiBtdXN0IGJlIHRoZSBgQ2FuY2VsT3JpZ2luYC7cLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIHJlZmVyZW5kdW0gdG8gYmUgY2FuY2VsbGVkLgBIRW1pdHMgYENhbmNlbGxlZGAuEGtpbGwEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAAEGNBDYW5jZWwgYW4gb25nb2luZyByZWZlcmVuZHVtIGFuZCBzbGFzaCB0aGUgZGVwb3NpdHMuAJQtIGBvcmlnaW5gOiBtdXN0IGJlIHRoZSBgS2lsbE9yaWdpbmAu3C0gYGluZGV4YDogVGhlIGluZGV4IG9mIHRoZSByZWZlcmVuZHVtIHRvIGJlIGNhbmNlbGxlZC4AkEVtaXRzIGBLaWxsZWRgIGFuZCBgRGVwb3NpdFNsYXNoZWRgLkBudWRnZV9yZWZlcmVuZHVtBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgABRAdAUFkdmFuY2UgYSByZWZlcmVuZHVtIG9udG8gaXRzIG5leHQgbG9naWNhbCBzdGF0ZS4gT25seSB1c2VkIGludGVybmFsbHkuAGwtIGBvcmlnaW5gOiBtdXN0IGJlIGBSb290YC6kLSBgaW5kZXhgOiB0aGUgcmVmZXJlbmR1bSB0byBiZSBhZHZhbmNlZC5Ib25lX2Zld2VyX2RlY2lkaW5nBAEUdHJhY2vRAwE8VHJhY2tJZE9mPFQsIEk+AAYkCQFBZHZhbmNlIGEgdHJhY2sgb250byBpdHMgbmV4dCBsb2dpY2FsIHN0YXRlLiBPbmx5IHVzZWQgaW50ZXJuYWxseS4AbC0gYG9yaWdpbmA6IG11c3QgYmUgYFJvb3RgLpAtIGB0cmFja2A6IHRoZSB0cmFjayB0byBiZSBhZHZhbmNlZC4AUQFBY3Rpb24gaXRlbSBmb3Igd2hlbiB0aGVyZSBpcyBub3cgb25lIGZld2VyIHJlZmVyZW5kdW0gaW4gdGhlIGRlY2lkaW5nIHBoYXNlIGFuZCB0aGUVAWBEZWNpZGluZ0NvdW50YCBpcyBub3QgeWV0IHVwZGF0ZWQuIFRoaXMgbWVhbnMgdGhhdCB3ZSBzaG91bGQgZWl0aGVyOiUBLSBiZWdpbiBkZWNpZGluZyBhbm90aGVyIHJlZmVyZW5kdW0gKGFuZCBsZWF2ZSBgRGVjaWRpbmdDb3VudGAgYWxvbmUpOyBvcnAtIGRlY3JlbWVudCBgRGVjaWRpbmdDb3VudGAuZHJlZnVuZF9zdWJtaXNzaW9uX2RlcG9zaXQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAAHHDEBUmVmdW5kIHRoZSBTdWJtaXNzaW9uIERlcG9zaXQgZm9yIGEgY2xvc2VkIHJlZmVyZW5kdW0gYmFjayB0byB0aGUgZGVwb3NpdG9yLgCcLSBgb3JpZ2luYDogbXVzdCBiZSBgU2lnbmVkYCBvciBgUm9vdGAuVQEtIGBpbmRleGA6IFRoZSBpbmRleCBvZiBhIGNsb3NlZCByZWZlcmVuZHVtIHdob3NlIFN1Ym1pc3Npb24gRGVwb3NpdCBoYXMgbm90IHlldCBiZWVuLCAgcmVmdW5kZWQuAIhFbWl0cyBgU3VibWlzc2lvbkRlcG9zaXRSZWZ1bmRlZGAuMHNldF9tZXRhZGF0YQgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAEobWF5YmVfaGFzaPkEATxPcHRpb248VDo6SGFzaD4ACByYU2V0IG9yIGNsZWFyIG1ldGFkYXRhIG9mIGEgcmVmZXJlbmR1bS4ALFBhcmFtZXRlcnM6RQEtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgIGJ5IGEgY3JlYXRvciBvZiBhIHJlZmVyZW5kdW0gb3IgYnkgYW55b25lIHRvIGNsZWFyIGGQICBtZXRhZGF0YSBvZiBhIGZpbmlzaGVkIHJlZmVyZW5kdW0uDQEtIGBpbmRleGA6ICBUaGUgaW5kZXggb2YgYSByZWZlcmVuZHVtIHRvIHNldCBvciBjbGVhciBtZXRhZGF0YSBmb3IuUQEtIGBtYXliZV9oYXNoYDogVGhlIGhhc2ggb2YgYW4gb24tY2hhaW4gc3RvcmVkIHByZWltYWdlLiBgTm9uZWAgdG8gY2xlYXIgYSBtZXRhZGF0YS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu7QQQNGZyYW1lX3N1cHBvcnQYdHJhaXRzJHByZWltYWdlcxxCb3VuZGVkCARUASAESAHxBAEMGExlZ2FjeQQBEGhhc2g8ASRIOjpPdXRwdXQAAAAYSW5saW5lBABFBAE0Qm91bmRlZElubGluZQABABhMb29rdXAIARBoYXNoPAEkSDo6T3V0cHV0AAEMbGVuOAEMdTMyAAIAAPEEDChzcF9ydW50aW1lGHRyYWl0cyxCbGFrZVR3bzI1NgAAAAD1BBA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMgc2NoZWR1bGUwRGlzcGF0Y2hUaW1lBCxCbG9ja051bWJlcgE4AQgIQXQEADgBLEJsb2NrTnVtYmVyAAAAFEFmdGVyBAA4ASxCbG9ja051bWJlcgABAAD5BAQYT3B0aW9uBARUATwBCBBOb25lAAAAEFNvbWUEADwAAAEAAP0EDEBwYWxsZXRfd2hpdGVsaXN0GHBhbGxldBBDYWxsBARUAAEQOHdoaXRlbGlzdF9jYWxsBAEkY2FsbF9oYXNoPAEcVDo6SGFzaAAAAFxyZW1vdmVfd2hpdGVsaXN0ZWRfY2FsbAQBJGNhbGxfaGFzaDwBHFQ6Okhhc2gAAQBkZGlzcGF0Y2hfd2hpdGVsaXN0ZWRfY2FsbAwBJGNhbGxfaGFzaDwBHFQ6Okhhc2gAAUBjYWxsX2VuY29kZWRfbGVuOAEMdTMyAAFMY2FsbF93ZWlnaHRfd2l0bmVzcxEBARhXZWlnaHQAAgCcZGlzcGF0Y2hfd2hpdGVsaXN0ZWRfY2FsbF93aXRoX3ByZWltYWdlBAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAwAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuAQUMPHBhbGxldF9ib3VudGllcxhwYWxsZXQQQ2FsbAgEVAAESQABLDhwcm9wb3NlX2JvdW50eQgBFHZhbHVlUQEBPEJhbGFuY2VPZjxULCBJPgABLGRlc2NyaXB0aW9uGAEcVmVjPHU4PgAAMFRQcm9wb3NlIGEgbmV3IGJvdW50eS4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBRAVBheW1lbnQ6IGBUaXBSZXBvcnREZXBvc2l0QmFzZWAgd2lsbCBiZSByZXNlcnZlZCBmcm9tIHRoZSBvcmlnaW4gYWNjb3VudCwgYXMgd2VsbCBhc1EBYERhdGFEZXBvc2l0UGVyQnl0ZWAgZm9yIGVhY2ggYnl0ZSBpbiBgcmVhc29uYC4gSXQgd2lsbCBiZSB1bnJlc2VydmVkIHVwb24gYXBwcm92YWwsZG9yIHNsYXNoZWQgd2hlbiByZWplY3RlZC4A+C0gYGN1cmF0b3JgOiBUaGUgY3VyYXRvciBhY2NvdW50IHdob20gd2lsbCBtYW5hZ2UgdGhpcyBib3VudHkuZC0gYGZlZWA6IFRoZSBjdXJhdG9yIGZlZS4lAS0gYHZhbHVlYDogVGhlIHRvdGFsIHBheW1lbnQgYW1vdW50IG9mIHRoaXMgYm91bnR5LCBjdXJhdG9yIGZlZSBpbmNsdWRlZC7ALSBgZGVzY3JpcHRpb25gOiBUaGUgZGVzY3JpcHRpb24gb2YgdGhpcyBib3VudHkuOGFwcHJvdmVfYm91bnR5BAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARxdAUFwcHJvdmUgYSBib3VudHkgcHJvcG9zYWwuIEF0IGEgbGF0ZXIgdGltZSwgdGhlIGJvdW50eSB3aWxsIGJlIGZ1bmRlZCBhbmQgYmVjb21lIGFjdGl2ZahhbmQgdGhlIG9yaWdpbmFsIGRlcG9zaXQgd2lsbCBiZSByZXR1cm5lZC4ApE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIGBUOjpTcGVuZE9yaWdpbmAuADQjIyBDb21wbGV4aXR5HC0gTygxKS48cHJvcG9zZV9jdXJhdG9yDAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWVRAQE8QmFsYW5jZU9mPFQsIEk+AAIYlFByb3Bvc2UgYSBjdXJhdG9yIHRvIGEgZnVuZGVkIGJvdW50eS4ApE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIGBUOjpTcGVuZE9yaWdpbmAuADQjIyBDb21wbGV4aXR5HC0gTygxKS5AdW5hc3NpZ25fY3VyYXRvcgQBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AANEfFVuYXNzaWduIGN1cmF0b3IgZnJvbSBhIGJvdW50eS4AHQFUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgYSBzaWduZWQgb3JpZ2luLgA9AUlmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBgUmVqZWN0T3JpZ2luYCwgd2UgYXNzdW1lIHRoYXQgdGhlIGN1cmF0b3IgaXMxAW1hbGljaW91cyBvciBpbmFjdGl2ZS4gQXMgYSByZXN1bHQsIHdlIHdpbGwgc2xhc2ggdGhlIGN1cmF0b3Igd2hlbiBwb3NzaWJsZS4AYQFJZiB0aGUgb3JpZ2luIGlzIHRoZSBjdXJhdG9yLCB3ZSB0YWtlIHRoaXMgYXMgYSBzaWduIHRoZXkgYXJlIHVuYWJsZSB0byBkbyB0aGVpciBqb2IgYW5kXQF0aGV5IHdpbGxpbmdseSBnaXZlIHVwLiBXZSBjb3VsZCBzbGFzaCB0aGVtLCBidXQgZm9yIG5vdyB3ZSBhbGxvdyB0aGVtIHRvIHJlY292ZXIgdGhlaXI1AWRlcG9zaXQgYW5kIGV4aXQgd2l0aG91dCBpc3N1ZS4gKFdlIG1heSB3YW50IHRvIGNoYW5nZSB0aGlzIGlmIGl0IGlzIGFidXNlZC4pAF0BRmluYWxseSwgdGhlIG9yaWdpbiBjYW4gYmUgYW55b25lIGlmIGFuZCBvbmx5IGlmIHRoZSBjdXJhdG9yIGlzICJpbmFjdGl2ZSIuIFRoaXMgYWxsb3dzYQFhbnlvbmUgaW4gdGhlIGNvbW11bml0eSB0byBjYWxsIG91dCB0aGF0IGEgY3VyYXRvciBpcyBub3QgZG9pbmcgdGhlaXIgZHVlIGRpbGlnZW5jZSwgYW5kOQF3ZSBzaG91bGQgcGljayBhIG5ldyBjdXJhdG9yLiBJbiB0aGlzIGNhc2UgdGhlIGN1cmF0b3Igc2hvdWxkIGFsc28gYmUgc2xhc2hlZC4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjhhY2NlcHRfY3VyYXRvcgQBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AAQclEFjY2VwdCB0aGUgY3VyYXRvciByb2xlIGZvciBhIGJvdW50eS4pAUEgZGVwb3NpdCB3aWxsIGJlIHJlc2VydmVkIGZyb20gY3VyYXRvciBhbmQgcmVmdW5kIHVwb24gc3VjY2Vzc2Z1bCBwYXlvdXQuAJBNYXkgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgY3VyYXRvci4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjBhd2FyZF9ib3VudHkIASRib3VudHlfaWRgASxCb3VudHlJbmRleAABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABShZAUF3YXJkIGJvdW50eSB0byBhIGJlbmVmaWNpYXJ5IGFjY291bnQuIFRoZSBiZW5lZmljaWFyeSB3aWxsIGJlIGFibGUgdG8gY2xhaW0gdGhlIGZ1bmRzOGFmdGVyIGEgZGVsYXkuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGN1cmF0b3Igb2YgdGhpcyBib3VudHkuAIgtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gYXdhcmQuGQEtIGBiZW5lZmljaWFyeWA6IFRoZSBiZW5lZmljaWFyeSBhY2NvdW50IHdob20gd2lsbCByZWNlaXZlIHRoZSBwYXlvdXQuADQjIyBDb21wbGV4aXR5HC0gTygxKS4wY2xhaW1fYm91bnR5BAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgABiDsQ2xhaW0gdGhlIHBheW91dCBmcm9tIGFuIGF3YXJkZWQgYm91bnR5IGFmdGVyIHBheW91dCBkZWxheS4AJQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYmVuZWZpY2lhcnkgb2YgdGhpcyBib3VudHkuAIgtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gY2xhaW0uADQjIyBDb21wbGV4aXR5HC0gTygxKS4wY2xvc2VfYm91bnR5BAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAByQ5AUNhbmNlbCBhIHByb3Bvc2VkIG9yIGFjdGl2ZSBib3VudHkuIEFsbCB0aGUgZnVuZHMgd2lsbCBiZSBzZW50IHRvIHRyZWFzdXJ5IGFuZMx0aGUgY3VyYXRvciBkZXBvc2l0IHdpbGwgYmUgdW5yZXNlcnZlZCBpZiBwb3NzaWJsZS4AyE9ubHkgYFQ6OlJlamVjdE9yaWdpbmAgaXMgYWJsZSB0byBjYW5jZWwgYSBib3VudHkuAIwtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gY2FuY2VsLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuUGV4dGVuZF9ib3VudHlfZXhwaXJ5CAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARhyZW1hcmsYARxWZWM8dTg+AAgkrEV4dGVuZCB0aGUgZXhwaXJ5IHRpbWUgb2YgYW4gYWN0aXZlIGJvdW50eS4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgY3VyYXRvciBvZiB0aGlzIGJvdW50eS4AjC0gYGJvdW50eV9pZGA6IEJvdW50eSBJRCB0byBleHRlbmQujC0gYHJlbWFya2A6IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uADQjIyBDb21wbGV4aXR5HC0gTygxKS5sYXBwcm92ZV9ib3VudHlfd2l0aF9jdXJhdG9yDAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWVRAQE8QmFsYW5jZU9mPFQsIEk+AAks1EFwcHJvdmUgYm91bnRyeSBhbmQgcHJvcG9zZSBhIGN1cmF0b3Igc2ltdWx0YW5lb3VzbHkuVQFUaGlzIGNhbGwgaXMgYSBzaG9ydGN1dCB0byBjYWxsaW5nIGBhcHByb3ZlX2JvdW50eWAgYW5kIGBwcm9wb3NlX2N1cmF0b3JgIHNlcGFyYXRlbHkuAKRNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgVDo6U3BlbmRPcmlnaW5gLgCQLSBgYm91bnR5X2lkYDogQm91bnR5IElEIHRvIGFwcHJvdmUu+C0gYGN1cmF0b3JgOiBUaGUgY3VyYXRvciBhY2NvdW50IHdob20gd2lsbCBtYW5hZ2UgdGhpcyBib3VudHkuZC0gYGZlZWA6IFRoZSBjdXJhdG9yIGZlZS4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjBwb2tlX2RlcG9zaXQEASRib3VudHlfaWRgASxCb3VudHlJbmRleAAKPORQb2tlIHRoZSBkZXBvc2l0IHJlc2VydmVkIGZvciBjcmVhdGluZyBhIGJvdW50eSBwcm9wb3NhbC4A9FRoaXMgY2FuIGJlIHVzZWQgYnkgYWNjb3VudHMgdG8gdXBkYXRlIHRoZWlyIHJlc2VydmVkIGFtb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczr0LSBgYm91bnR5X2lkYDogVGhlIGJvdW50eSBpZCBmb3Igd2hpY2ggdG8gYWRqdXN0IHRoZSBkZXBvc2l0LgA5AUlmIHRoZSBkZXBvc2l0IGlzIHVwZGF0ZWQsIHRoZSBkaWZmZXJlbmNlIHdpbGwgYmUgcmVzZXJ2ZWQvdW5yZXNlcnZlZCBmcm9tIHRoZUxwcm9wb3NlcidzIGFjY291bnQuACkBVGhlIHRyYW5zYWN0aW9uIGlzIG1hZGUgZnJlZSBpZiB0aGUgZGVwb3NpdCBpcyB1cGRhdGVkIGFuZCBwYWlkIG90aGVyd2lzZS4AvEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHRoZSBkZXBvc2l0IGlzIHVwZGF0ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLgUFDFRwYWxsZXRfY2hpbGRfYm91bnRpZXMYcGFsbGV0EENhbGwEBFQAARxAYWRkX2NoaWxkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABFHZhbHVlUQEBMEJhbGFuY2VPZjxUPgABLGRlc2NyaXB0aW9uGAEcVmVjPHU4PgAATFxBZGQgYSBuZXcgY2hpbGQtYm91bnR5LgD8VGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGN1cmF0b3Igb2YgcGFyZW503GJvdW50eSBhbmQgdGhlIHBhcmVudCBib3VudHkgbXVzdCBiZSBpbiAiYWN0aXZlIiBzdGF0ZS4ABQFDaGlsZC1ib3VudHkgZ2V0cyBhZGRlZCBzdWNjZXNzZnVsbHkgJiBmdW5kIGdldHMgdHJhbnNmZXJyZWQgZnJvbQkBcGFyZW50IGJvdW50eSB0byBjaGlsZC1ib3VudHkgYWNjb3VudCwgaWYgcGFyZW50IGJvdW50eSBoYXMgZW5vdWdobGZ1bmRzLCBlbHNlIHRoZSBjYWxsIGZhaWxzLgANAVVwcGVyIGJvdW5kIHRvIG1heGltdW0gbnVtYmVyIG9mIGFjdGl2ZSAgY2hpbGQgYm91bnRpZXMgdGhhdCBjYW4gYmWoYWRkZWQgYXJlIG1hbmFnZWQgdmlhIHJ1bnRpbWUgdHJhaXQgY29uZmlnmFtgQ29uZmlnOjpNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50YF0uAAEBSWYgdGhlIGNhbGwgaXMgc3VjY2VzcywgdGhlIHN0YXR1cyBvZiBjaGlsZC1ib3VudHkgaXMgdXBkYXRlZCB0byAiQWRkZWQiLgBNAS0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5IGZvciB3aGljaCBjaGlsZC1ib3VudHkgaXMgYmVpbmcgYWRkZWQusC0gYHZhbHVlYDogVmFsdWUgZm9yIGV4ZWN1dGluZyB0aGUgcHJvcG9zYWwu3C0gYGRlc2NyaXB0aW9uYDogVGV4dCBkZXNjcmlwdGlvbiBmb3IgdGhlIGNoaWxkLWJvdW50eS48cHJvcG9zZV9jdXJhdG9yEAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWVRAQEwQmFsYW5jZU9mPFQ+AAE8oFByb3Bvc2UgY3VyYXRvciBmb3IgZnVuZGVkIGNoaWxkLWJvdW50eS4ADQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBjdXJhdG9yIG9mIHBhcmVudCBib3VudHkuABEBUGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2hpbGQtYm91bnR5IGNhbGwgdG8Ud29yay4ADQFDaGlsZC1ib3VudHkgbXVzdCBiZSBpbiAiQWRkZWQiIHN0YXRlLCBmb3IgcHJvY2Vzc2luZyB0aGUgY2FsbC4gQW5kBQFzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gIkN1cmF0b3JQcm9wb3NlZCIgb24gc3VjY2Vzc2Z1bEBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LrQtIGBjdXJhdG9yYDogQWRkcmVzcyBvZiBjaGlsZC1ib3VudHkgY3VyYXRvci7sLSBgZmVlYDogcGF5bWVudCBmZWUgdG8gY2hpbGQtYm91bnR5IGN1cmF0b3IgZm9yIGV4ZWN1dGlvbi44YWNjZXB0X2N1cmF0b3IIAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWRgASxCb3VudHlJbmRleAACTLRBY2NlcHQgdGhlIGN1cmF0b3Igcm9sZSBmb3IgdGhlIGNoaWxkLWJvdW50eS4A9FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBjdXJhdG9yIG9mIHRoaXM0Y2hpbGQtYm91bnR5LgDsQSBkZXBvc2l0IHdpbGwgYmUgcmVzZXJ2ZWQgZnJvbSB0aGUgY3VyYXRvciBhbmQgcmVmdW5kIHVwb26Ic3VjY2Vzc2Z1bCBwYXlvdXQgb3IgY2FuY2VsbGF0aW9uLgD4RmVlIGZvciBjdXJhdG9yIGlzIGRlZHVjdGVkIGZyb20gY3VyYXRvciBmZWUgb2YgcGFyZW50IGJvdW50eS4AEQFQYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0bxR3b3JrLgANAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluICJDdXJhdG9yUHJvcG9zZWQiIHN0YXRlLCBmb3IgcHJvY2Vzc2luZyB0aGUJAWNhbGwuIEFuZCBzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gIkFjdGl2ZSIgb24gc3VjY2Vzc2Z1bEBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LkB1bmFzc2lnbl9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAA4iUVW5hc3NpZ24gY3VyYXRvciBmcm9tIGEgY2hpbGQtYm91bnR5LgAJAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBjYW4gYmUgZWl0aGVyIGBSZWplY3RPcmlnaW5gLCBvctx0aGUgY3VyYXRvciBvZiB0aGUgcGFyZW50IGJvdW50eSwgb3IgYW55IHNpZ25lZCBvcmlnaW4uAPhGb3IgdGhlIG9yaWdpbiBvdGhlciB0aGFuIFQ6OlJlamVjdE9yaWdpbiBhbmQgdGhlIGNoaWxkLWJvdW50eQEBY3VyYXRvciwgcGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2FsbCB0bwkBd29yay4gV2UgYWxsb3cgY2hpbGQtYm91bnR5IGN1cmF0b3IgYW5kIFQ6OlJlamVjdE9yaWdpbiB0byBleGVjdXRlyHRoaXMgY2FsbCBpcnJlc3BlY3RpdmUgb2YgdGhlIHBhcmVudCBib3VudHkgc3RhdGUuANxJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgb3IgdGhlBQFwYXJlbnQgYm91bnR5IGN1cmF0b3IsIHdlIGFzc3VtZSB0aGF0IHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciBpcw0BbWFsaWNpb3VzIG9yIGluYWN0aXZlLiBBcyBhIHJlc3VsdCwgY2hpbGQtYm91bnR5IGN1cmF0b3IgZGVwb3NpdCBpcyBzbGFzaGVkLgAFAUlmIHRoZSBvcmlnaW4gaXMgdGhlIGNoaWxkLWJvdW50eSBjdXJhdG9yLCB3ZSB0YWtlIHRoaXMgYXMgYSBzaWduCQF0aGF0IHRoZXkgYXJlIHVuYWJsZSB0byBkbyB0aGVpciBqb2IsIGFuZCBhcmUgd2lsbGluZ2x5IGdpdmluZyB1cC4JAVdlIGNvdWxkIHNsYXNoIHRoZSBkZXBvc2l0LCBidXQgZm9yIG5vdyB3ZSBhbGxvdyB0aGVtIHRvIHVucmVzZXJ2ZREBdGhlaXIgZGVwb3NpdCBhbmQgZXhpdCB3aXRob3V0IGlzc3VlLiAoV2UgbWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMgaWY4aXQgaXMgYWJ1c2VkLikABQFGaW5hbGx5LCB0aGUgb3JpZ2luIGNhbiBiZSBhbnlvbmUgaWZmIHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciBpcwkBImluYWN0aXZlIi4gRXhwaXJ5IHVwZGF0ZSBkdWUgb2YgcGFyZW50IGJvdW50eSBpcyB1c2VkIHRvIGVzdGltYXRlnGluYWN0aXZlIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBjdXJhdG9yLgANAVRoaXMgYWxsb3dzIGFueW9uZSBpbiB0aGUgY29tbXVuaXR5IHRvIGNhbGwgb3V0IHRoYXQgYSBjaGlsZC1ib3VudHkJAWN1cmF0b3IgaXMgbm90IGRvaW5nIHRoZWlyIGR1ZSBkaWxpZ2VuY2UsIGFuZCB3ZSBzaG91bGQgcGljayBhIG5ld/hvbmUuIEluIHRoaXMgY2FzZSB0aGUgY2hpbGQtYm91bnR5IGN1cmF0b3IgZGVwb3NpdCBpcyBzbGFzaGVkLgABAVN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBtb3ZlZCB0byBBZGRlZCBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNhbGwsY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuSGF3YXJkX2NoaWxkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGABLEJvdW50eUluZGV4AAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAERJBBd2FyZCBjaGlsZC1ib3VudHkgdG8gYSBiZW5lZmljaWFyeS4A+FRoZSBiZW5lZmljaWFyeSB3aWxsIGJlIGFibGUgdG8gY2xhaW0gdGhlIGZ1bmRzIGFmdGVyIGEgZGVsYXkuAPxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgcGFyZW50IGN1cmF0b3Igb3J0Y3VyYXRvciBvZiB0aGlzIGNoaWxkLWJvdW50eS4AEQFQYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0bxR3b3JrLgAJAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhlIGNhbGwuIEFuZBEBc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIG1vdmVkIHRvICJQZW5kaW5nUGF5b3V0IiBvbiBzdWNjZXNzZnVsIGNhbGwsY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkulC0gYGJlbmVmaWNpYXJ5YDogQmVuZWZpY2lhcnkgYWNjb3VudC5IY2xhaW1fY2hpbGRfYm91bnR5CAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgABUAFAUNsYWltIHRoZSBwYXlvdXQgZnJvbSBhbiBhd2FyZGVkIGNoaWxkLWJvdW50eSBhZnRlciBwYXlvdXQgZGVsYXkuAOxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbWF5IGJlIGFueSBzaWduZWQgb3JpZ2luLgAFAUNhbGwgd29ya3MgaW5kZXBlbmRlbnQgb2YgcGFyZW50IGJvdW50eSBzdGF0ZSwgTm8gbmVlZCBmb3IgcGFyZW50dGJvdW50eSB0byBiZSBpbiBhY3RpdmUgc3RhdGUuABEBVGhlIEJlbmVmaWNpYXJ5IGlzIHBhaWQgb3V0IHdpdGggYWdyZWVkIGJvdW50eSB2YWx1ZS4gQ3VyYXRvciBmZWUgaXOUcGFpZCAmIGN1cmF0b3IgZGVwb3NpdCBpcyB1bnJlc2VydmVkLgAFAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluICJQZW5kaW5nUGF5b3V0IiBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhl/GNhbGwuIEFuZCBpbnN0YW5jZSBvZiBjaGlsZC1ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGF0ZSBvbmxzdWNjZXNzZnVsIGNhbGwgY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuSGNsb3NlX2NoaWxkX2JvdW50eQgBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGABLEJvdW50eUluZGV4AAZYEQFDYW5jZWwgYSBwcm9wb3NlZCBvciBhY3RpdmUgY2hpbGQtYm91bnR5LiBDaGlsZC1ib3VudHkgYWNjb3VudCBmdW5kcwkBYXJlIHRyYW5zZmVycmVkIHRvIHBhcmVudCBib3VudHkgYWNjb3VudC4gVGhlIGNoaWxkLWJvdW50eSBjdXJhdG9ymGRlcG9zaXQgbWF5IGJlIHVucmVzZXJ2ZWQgaWYgcG9zc2libGUuAAkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgZWl0aGVyIHBhcmVudCBjdXJhdG9yIG9ySGBUOjpSZWplY3RPcmlnaW5gLgDwSWYgdGhlIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBgQWN0aXZlYCwgY3VyYXRvciBkZXBvc2l0IGlzLHVucmVzZXJ2ZWQuAPRJZiB0aGUgc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIGBQZW5kaW5nUGF5b3V0YCwgY2FsbCBmYWlscyAmeHJldHVybnMgYFBlbmRpbmdQYXlvdXRgIGVycm9yLgANAUZvciB0aGUgb3JpZ2luIG90aGVyIHRoYW4gVDo6UmVqZWN0T3JpZ2luLCBwYXJlbnQgYm91bnR5IG11c3QgYmUgaW7wYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0byB3b3JrLiBGb3Igb3JpZ2lukFQ6OlJlamVjdE9yaWdpbiBleGVjdXRpb24gaXMgZm9yY2VkLgABAUluc3RhbmNlIG9mIGNoaWxkLWJvdW50eSBpcyByZW1vdmVkIGZyb20gdGhlIHN0YXRlIG9uIHN1Y2Nlc3NmdWxAY2FsbCBjb21wbGV0aW9uLgC0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkIGJvdW50eS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuCQUMRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBBDYWxsBARUAAEMGGNyZWF0ZQgBKGFzc2V0X2tpbmTNBAFEQm94PFQ6OkFzc2V0S2luZD4AARByYXRlDQUBJEZpeGVkVTEyOAAAEA0BSW5pdGlhbGl6ZSBhIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYdXBkYXRlCAEoYXNzZXRfa2luZM0EAURCb3g8VDo6QXNzZXRLaW5kPgABEHJhdGUNBQEkRml4ZWRVMTI4AAEQBQFVcGRhdGUgdGhlIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYcmVtb3ZlBAEoYXNzZXRfa2luZM0EAURCb3g8VDo6QXNzZXRLaW5kPgACECUBUmVtb3ZlIGFuIGV4aXN0aW5nIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuDQUMNHNwX2FyaXRobWV0aWMsZml4ZWRfcG9pbnQkRml4ZWRVMTI4AAAEAFUBARB1MTI4AAARBQxscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGHBhbGxldBBDYWxsCARUAARJAAEkLGZ1bmRfYm91bnR5EAEoYXNzZXRfa2luZM0EAURCb3g8VDo6QXNzZXRLaW5kPgABFHZhbHVlUQEBKFQ6OkJhbGFuY2UAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBtZXRhZGF0YTwBHFQ6Okhhc2gAAGgpAUZ1bmQgYSBuZXcgYm91bnR5IHdpdGggYSBwcm9wb3NlZCBjdXJhdG9yLCBpbml0aWF0aW5nIHRoZSBwYXltZW50IGZyb20gdGhluGZ1bmRpbmcgc291cmNlIHRvIHRoZSBib3VudHkgYWNjb3VudC9sb2NhdGlvbi4ASCMjIERpc3BhdGNoIE9yaWdpbgAdAU11c3QgYmUgW2BDb25maWc6OlNwZW5kT3JpZ2luYF0gd2l0aCB0aGUgYFN1Y2Nlc3NgIHZhbHVlIGJlaW5nIGF0IGxlYXN0QQF0aGUgYm91bnR5IHZhbHVlIGNvbnZlcnRlZCB0byBuYXRpdmUgYmFsYW5jZSB1c2luZyBbYENvbmZpZzo6QmFsYW5jZUNvbnZlcnRlcmBdLjUBVGhlIGNvbnZlcnRlZCBuYXRpdmUgYW1vdW50IGlzIHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBtYXhpbXVtIHNwZW5kYWJsZSBhbW91bnSQcmV0dXJuZWQgYnkgW2BDb25maWc6OlNwZW5kT3JpZ2luYF0uACgjIyBEZXRhaWxzACEBLSBUaGUgYFNwZW5kT3JpZ2luYCBtdXN0IGhhdmUgc3VmZmljaWVudCBwZXJtaXNzaW9ucyB0byBmdW5kIHRoZSBib3VudHkuWQEtIFRoZSBib3VudHkgYHZhbHVlYCAoaW4gYXNzZXQgYmFsYW5jZSkgaXMgY29udmVydGVkIHRvIG5hdGl2ZSBiYWxhbmNlIGZvciB2YWxpZGF0aW9uLikBLSBJbiBjYXNlIG9mIGEgZnVuZGluZyBmYWlsdXJlLCB0aGUgYm91bnR5IHN0YXR1cyBtdXN0IGJlIHVwZGF0ZWQgd2l0aCB0aGUBASAgYGNoZWNrX3N0YXR1c2AgY2FsbCBiZWZvcmUgcmV0cnlpbmcgd2l0aCBgcmV0cnlfcGF5bWVudGAgY2FsbC4AOCMjIyBQYXJhbWV0ZXJzGQEtIGBhc3NldF9raW5kYDogQW4gaW5kaWNhdG9yIG9mIHRoZSBzcGVjaWZpYyBhc3NldCBjbGFzcyB0byBiZSBmdW5kZWQuzC0gYHZhbHVlYDogVGhlIHRvdGFsIHBheW1lbnQgYW1vdW50IG9mIHRoaXMgYm91bnR5LpwtIGBjdXJhdG9yYDogQWRkcmVzcyBvZiBib3VudHkgY3VyYXRvci4tAS0gYG1ldGFkYXRhYDogVGhlIGhhc2ggb2YgYW4gb24tY2hhaW4gc3RvcmVkIHByZWltYWdlIHdpdGggYm91bnR5IG1ldGFkYXRhLgAkIyMgRXZlbnRzAAUBRW1pdHMgW2BFdmVudDo6Qm91bnR5Q3JlYXRlZGBdIGFuZCBbYEV2ZW50OjpQYWlkYF0gaWYgc3VjY2Vzc2Z1bC5EZnVuZF9jaGlsZF9ib3VudHkQAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARR2YWx1ZVEBAShUOjpCYWxhbmNlAAEgbWV0YWRhdGE8ARxUOjpIYXNoAAEcY3VyYXRvcj0EAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AAFgXQFGdW5kIGEgbmV3IGNoaWxkLWJvdW50eSB3aXRoIGEgcHJvcG9zZWQgY3VyYXRvciwgaW5pdGlhdGluZyB0aGUgcGF5bWVudCBmcm9tIHRoZSBwYXJlbnSwYm91bnR5IHRvIHRoZSBjaGlsZC1ib3VudHkgYWNjb3VudC9sb2NhdGlvbi4ASCMjIERpc3BhdGNoIE9yaWdpbgCUTXVzdCBiZSBzaWduZWQgYnkgdGhlIHBhcmVudCBjdXJhdG9yLgAoIyMgRGV0YWlscwBFAS0gSWYgYGN1cmF0b3JgIGlzIG5vdCBwcm92aWRlZCwgdGhlIGNoaWxkLWJvdW50eSB3aWxsIGRlZmF1bHQgdG8gdXNpbmcgdGhlIHBhcmVudDUBICBjdXJhdG9yLCBhbGxvd2luZyB0aGUgcGFyZW50IGN1cmF0b3IgdG8gaW1tZWRpYXRlbHkgY2FsbCBgY2hlY2tfc3RhdHVzYCBhbmSwICBgYXdhcmRfYm91bnR5YCB0byBwYXlvdXQgdGhlIGNoaWxkLWJvdW50eS5FAS0gSW4gY2FzZSBvZiBhIGZ1bmRpbmcgZmFpbHVyZSwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZQEBICBgY2hlY2tfc3RhdHVzYCBjYWxsIGJlZm9yZSByZXRyeWluZyB3aXRoIGByZXRyeV9wYXltZW50YCBjYWxsLgA4IyMjIFBhcmFtZXRlcnNNAS0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5IGZvciB3aGljaCBjaGlsZC1ib3VudHkgaXMgYmVpbmcgYWRkZWQuzC0gYHZhbHVlYDogVGhlIHBheW1lbnQgYW1vdW50IG9mIHRoaXMgY2hpbGQtYm91bnR5LkUBLSBgbWV0YWRhdGFgOiBUaGUgaGFzaCBvZiBhbiBvbi1jaGFpbiBzdG9yZWQgcHJlaW1hZ2Ugd2l0aCBjaGlsZC1ib3VudHkgbWV0YWRhdGEutC0gYGN1cmF0b3JgOiBBZGRyZXNzIG9mIGNoaWxkLWJvdW50eSBjdXJhdG9yLgAkIyMgRXZlbnRzABkBRW1pdHMgW2BFdmVudDo6Q2hpbGRCb3VudHlDcmVhdGVkYF0gYW5kIFtgRXZlbnQ6OlBhaWRgXSBpZiBzdWNjZXNzZnVsLjxwcm9wb3NlX2N1cmF0b3IMAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTgAUxPcHRpb248Qm91bnR5SW5kZXg+AAEcY3VyYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAJUMQFQcm9wb3NlIGEgbmV3IGN1cmF0b3IgZm9yIGEgY2hpbGQtL2JvdW50eSBhZnRlciB0aGUgcHJldmlvdXMgd2FzIHVuYXNzaWduZWQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AQQFNdXN0IGJlIHNpZ25lZCBieSBgVDo6U3BlbmRPcmlnaW5gIGZvciBhIGJvdW50eSwgb3IgYnkgdGhlIHBhcmVudCBib3VudHkgY3VyYXRvckxmb3IgYSBjaGlsZC1ib3VudHkuACgjIyBEZXRhaWxzAPQtIFRoZSBjaGlsZC0vYm91bnR5IG11c3QgYmUgaW4gdGhlIGBDdXJhdG9yVW5hc3NpZ25lZGAgc3RhdGUuRQEtIEZvciBhIGJvdW50eSwgdGhlIGBTcGVuZE9yaWdpbmAgbXVzdCBoYXZlIHN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gcHJvcG9zZSB0aGUoICBjdXJhdG9yLgA4IyMjIFBhcmFtZXRlcnOYLSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LswtIGBjdXJhdG9yYDogQWNjb3VudCB0byBiZSBwcm9wb3NlZCBhcyB0aGUgY3VyYXRvci4AJCMjIEV2ZW50cwC8RW1pdHMgW2BFdmVudDo6Q3VyYXRvclByb3Bvc2VkYF0gaWYgc3VjY2Vzc2Z1bC44YWNjZXB0X2N1cmF0b3IIAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTgAUxPcHRpb248Qm91bnR5SW5kZXg+AANMsEFjY2VwdCB0aGUgY3VyYXRvciByb2xlIGZvciBhIGNoaWxkLS9ib3VudHkuAEgjIyBEaXNwYXRjaCBPcmlnaW4AnE11c3QgYmUgc2lnbmVkIGJ5IHRoZSBwcm9wb3NlZCBjdXJhdG9yLgAoIyMgRGV0YWlscwDILSBUaGUgY2hpbGQtL2JvdW50eSBtdXN0IGJlIGluIHRoZSBgRnVuZGVkYCBzdGF0ZS7wLSBUaGUgY3VyYXRvciBtdXN0IGFjY2VwdCB0aGUgcm9sZSBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uSQEtIEEgZGVwb3NpdCB3aWxsIGJlIHJlc2VydmVkIGZyb20gdGhlIGN1cmF0b3IgYW5kIHJlZnVuZGVkIHVwb24gc3VjY2Vzc2Z1bCBwYXlvdXQuADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzAMhFbWl0cyBbYEV2ZW50OjpCb3VudHlCZWNhbWVBY3RpdmVgXSBpZiBzdWNjZXNzZnVsLkB1bmFzc2lnbl9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lk4AFMT3B0aW9uPEJvdW50eUluZGV4PgAEZJhVbmFzc2lnbiBjdXJhdG9yIGZyb20gYSBjaGlsZC0vYm91bnR5LgBIIyMgRGlzcGF0Y2ggT3JpZ2luAFEBVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIG9yIHRoZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IuACgjIyBEZXRhaWxzAGEBLSBJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAsIG9yIGJ5IHRoZSBwYXJlbnQgY3VyYXRvciBpbiB0aGUgY2FzZVkBICBvZiBhIGNoaWxkIGJvdW50eSwgd2UgYXNzdW1lIHRoYXQgdGhlIGN1cmF0b3IgaXMgbWFsaWNpb3VzIG9yIGluYWN0aXZlLiBBcyBhIHJlc3VsdCyoICB3ZSB3aWxsIHNsYXNoIHRoZSBjdXJhdG9yIHdoZW4gcG9zc2libGUuXQEtIElmIHRoZSBvcmlnaW4gaXMgdGhlIGNoaWxkLS9ib3VudHkgY3VyYXRvciwgd2UgdGFrZSB0aGlzIGFzIGEgc2lnbiB0aGV5IGFyZSB1bmFibGUgdG9RASAgZG8gdGhlaXIgam9iIGFuZCB0aGV5IHdpbGxpbmdseSBnaXZlIHVwLiBXZSBjb3VsZCBzbGFzaCB0aGVtLCBidXQgZm9yIG5vdyB3ZSBhbGxvd1kBICB0aGVtIHRvIHJlY292ZXIgdGhlaXIgZGVwb3NpdCBhbmQgZXhpdCB3aXRob3V0IGlzc3VlLiAoV2UgbWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMgaWZAICBpdCBpcyBhYnVzZWQpLj0BLSBJZiBzdWNjZXNzZnVsLCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgdXBkYXRlZCB0byBgQ3VyYXRvclVuYXNzaWduZWRgLiBUb0UBICByZWFjdGl2YXRlIHRoZSBib3VudHksIGEgbmV3IGN1cmF0b3IgbXVzdCBiZSBwcm9wb3NlZCBhbmQgbXVzdCBhY2NlcHQgdGhlIHJvbGUuADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzAMRFbWl0cyBbYEV2ZW50OjpDdXJhdG9yVW5hc3NpZ25lZGBdIGlmIHN1Y2Nlc3NmdWwuMGF3YXJkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOABTE9wdGlvbjxCb3VudHlJbmRleD4AASxiZW5lZmljaWFyedEEAWRCZW5lZmljaWFyeUxvb2t1cE9mPFQsIEk+AAVg7EF3YXJkcyB0aGUgY2hpbGQtL2JvdW50eSB0byBhIGJlbmVmaWNpYXJ5IGFjY291bnQvbG9jYXRpb24sHQFpbml0aWF0aW5nIHRoZSBwYXlvdXQgcGF5bWVudHMgdG8gYm90aCB0aGUgYmVuZWZpY2lhcnkgYW5kIHRoZSBjdXJhdG9yLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAFEBVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIG9yIHRoZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IuACgjIyBEZXRhaWxzAMgtIFRoZSBjaGlsZC0vYm91bnR5IG11c3QgYmUgaW4gdGhlIGBBY3RpdmVgIHN0YXRlLj0BLSBpZiBhd2FyZGluZyBhIHBhcmVudCBib3VudHkgaXQgbXVzdCBub3QgaGF2ZSBhY3RpdmUgb3IgZnVuZGVkIGNoaWxkIGJvdW50aWVzLlkBLSBJbml0aWF0ZXMgcGF5b3V0IHBheW1lbnQgZnJvbSB0aGUgY2hpbGQtL2JvdW50eSB0byB0aGUgYmVuZWZpY2lhcnkgYWNjb3VudC9sb2NhdGlvbi4lAS0gSWYgc3VjY2Vzc2Z1bCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgdXBkYXRlZCB0byBgUGF5b3V0QXR0ZW1wdGVkYC4xAS0gSW4gY2FzZSBvZiBhIHBheW91dCBmYWlsdXJlLCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgbXVzdCBiZSB1cGRhdGVkIHdpdGj4YGNoZWNrX3N0YXR1c2AgY2FsbCBiZWZvcmUgcmV0cnlpbmcgd2l0aCBgcmV0cnlfcGF5bWVudGAgY2FsbC4AOCMjIyBQYXJhbWV0ZXJztC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZC1ib3VudHkuCQEtIGBiZW5lZmljaWFyeWA6IEFjY291bnQvbG9jYXRpb24gdG8gYmUgYXdhcmRlZCB0aGUgY2hpbGQtL2JvdW50eS4AJCMjIEV2ZW50cwAFAUVtaXRzIFtgRXZlbnQ6OkJvdW50eUF3YXJkZWRgXSBhbmQgW2BFdmVudDo6UGFpZGBdIGlmIHN1Y2Nlc3NmdWwuMGNsb3NlX2JvdW50eQgBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOABTE9wdGlvbjxCb3VudHlJbmRleD4ABlxhAUNhbmNlbCBhbiBhY3RpdmUgY2hpbGQtL2JvdW50eS4gQSBwYXltZW50IHRvIHNlbmQgYWxsIHRoZSBmdW5kcyB0byB0aGUgZnVuZGluZyBzb3VyY2UgaXMwaW5pdGlhbGl6ZWQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AUQFUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgb3IgdGhlIHBhcmVudCBib3VudHkgY3VyYXRvci4AKCMjIERldGFpbHMAPQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IGlzIGluIHRoZSBgRnVuZGVkYCBzdGF0ZSwgYSByZWZ1bmQgcGF5bWVudCBpcyBpbml0aWF0ZWQuWQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IGlzIGluIHRoZSBgQWN0aXZlYCBzdGF0ZSwgYSByZWZ1bmQgcGF5bWVudCBpcyBpbml0aWF0ZWQgYW5kIHRoZREBICBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyB1cGRhdGVkIHdpdGggdGhlIGN1cmF0b3IgYWNjb3VudC9sb2NhdGlvbi5BAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgaXMgaW4gdGhlIGZ1bmRpbmcgb3IgcGF5b3V0IHBoYXNlLCBpdCBjYW5ub3QgYmUgY2FuY2VsZWQuQQEtIEluIGNhc2Ugb2YgYSByZWZ1bmQgZmFpbHVyZSwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZfhgY2hlY2tfc3RhdHVzYCBjYWxsIGJlZm9yZSByZXRyeWluZyB3aXRoIGByZXRyeV9wYXltZW50YCBjYWxsLgA4IyMjIFBhcmFtZXRlcnO0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkLWJvdW50eS4AJCMjIEV2ZW50cwAJAUVtaXRzIFtgRXZlbnQ6OkJvdW50eUNhbmNlbGVkYF0gYW5kIFtgRXZlbnQ6OlBhaWRgXSBpZiBzdWNjZXNzZnVsLjBjaGVja19zdGF0dXMIAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTgAUxPcHRpb248Qm91bnR5SW5kZXg+AAdk3ENoZWNrIGFuZCB1cGRhdGUgdGhlIHBheW1lbnQgc3RhdHVzIG9mIGEgY2hpbGQtL2JvdW50eS4ASCMjIERpc3BhdGNoIE9yaWdpbgA8TXVzdCBiZSBzaWduZWQuACgjIyBEZXRhaWxzAFUBLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYEZ1bmRpbmdBdHRlbXB0ZWRgLCBpdCBjaGVja3MgaWYgdGhlIGZ1bmRpbmcgcGF5bWVudA0BICBoYXMgc3VjY2VlZGVkLiBJZiBzdWNjZXNzZnVsLCB0aGUgYm91bnR5IHN0YXR1cyBiZWNvbWVzIGBGdW5kZWRgLl0BLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYFJlZnVuZEF0dGVtcHRlZGAsIGl0IGNoZWNrcyBpZiB0aGUgcmVmdW5kIHBheW1lbnQgaGFzGQEgIHN1Y2NlZWRlZC4gSWYgc3VjY2Vzc2Z1bCwgdGhlIGNoaWxkLS9ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHN0b3JhZ2UuXQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyBgUGF5b3V0QXR0ZW1wdGVkYCwgaXQgY2hlY2tzIGlmIHRoZSBwYXlvdXQgcGF5bWVudCBoYXMZASAgc3VjY2VlZGVkLiBJZiBzdWNjZXNzZnVsLCB0aGUgY2hpbGQtL2JvdW50eSBpcyByZW1vdmVkIGZyb20gc3RvcmFnZS4AOCMjIyBQYXJhbWV0ZXJztC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZC1ib3VudHkuACQjIyBFdmVudHMAXQFFbWl0cyBbYEV2ZW50OjpCb3VudHlCZWNhbWVBY3RpdmVgXSBpZiB0aGUgY2hpbGQvYm91bnR5IHN0YXR1cyB0cmFuc2l0aW9ucyB0byBgQWN0aXZlYC4lAUVtaXRzIFtgRXZlbnQ6OkJvdW50eVJlZnVuZFByb2Nlc3NlZGBdIGlmIHRoZSByZWZ1bmQgcGF5bWVudCBoYXMgc3VjY2VlZC4lAUVtaXRzIFtgRXZlbnQ6OkJvdW50eVBheW91dFByb2Nlc3NlZGBdIGlmIHRoZSBwYXlvdXQgcGF5bWVudCBoYXMgc3VjY2VlZC5VAUVtaXRzIFtgRXZlbnQ6OlBheW1lbnRGYWlsZWRgXSBpZiB0aGUgZnVuZGluZywgcmVmdW5kIG91ciBwYXltZW50IHBheW1lbnQgaGFzIGZhaWxlZC40cmV0cnlfcGF5bWVudAgBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOABTE9wdGlvbjxCb3VudHlJbmRleD4ACFi0UmV0cnkgdGhlIGZ1bmRpbmcsIHJlZnVuZCBvciBwYXlvdXQgcGF5bWVudHMuAEgjIyBEaXNwYXRjaCBPcmlnaW4APE11c3QgYmUgc2lnbmVkLgAoIyMgRGV0YWlscwBhAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBGdW5kaW5nQXR0ZW1wdGVkYCwgaXQgcmV0cmllcyB0aGUgZnVuZGluZyBwYXltZW50IGZyb23QICBmdW5kaW5nIHNvdXJjZSB0aGUgY2hpbGQtL2JvdW50eSBhY2NvdW50L2xvY2F0aW9uLlkBLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYFJlZnVuZEF0dGVtcHRlZGAsIGl0IHJldHJpZXMgdGhlIHJlZnVuZCBwYXltZW50IGZyb23sICB0aGUgY2hpbGQtL2JvdW50eSBhY2NvdW50L2xvY2F0aW9uIHRvIHRoZSBmdW5kaW5nIHNvdXJjZS5ZAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBQYXlvdXRBdHRlbXB0ZWRgLCBpdCByZXRyaWVzIHRoZSBwYXlvdXQgcGF5bWVudCBmcm9tJQEgIHRoZSBjaGlsZC0vYm91bnR5IGFjY291bnQvbG9jYXRpb24gdG8gdGhlIGJlbmVmaWNpYXJ5IGFjY291bnQvbG9jYXRpb24uADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzADUBRW1pdHMgW2BFdmVudDo6UGFpZGBdIGlmIHRoZSBmdW5kaW5nLCByZWZ1bmQgb3IgcGF5b3V0IHBheW1lbnQgaGFzIGluaXRpYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuFQUMKHBhbGxldF9kYXAYcGFsbGV0EENhbGwEBFQAAQRUc2V0X2J1ZGdldF9hbGxvY2F0aW9uBAE8bmV3X2FsbG9jYXRpb25zGQUBTEJ1ZGdldEFsbG9jYXRpb25NYXAAABB4U2V0IHRoZSBidWRnZXQgYWxsb2NhdGlvbiBtYXAuADkBRWFjaCBrZXkgbXVzdCBtYXRjaCBhIHJlZ2lzdGVyZWQgYEJ1ZGdldFJlY2lwaWVudGAuIFRoZSBzdW0gb2YgYWxsIHBlcmNlbnRhZ2VzJQFtdXN0IGJlIGV4YWN0bHkgMTAwJS4gUmVjaXBpZW50cyBub3QgaW5jbHVkZWQgaW4gdGhlIG1hcCByZWNlaXZlIG5vdGhpbmcuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLhkFDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfbWFwPEJvdW5kZWRCVHJlZU1hcAwESwHBAwRWAR0FBFMAAAQAIQUBOEJUcmVlTWFwPEssIFY+AAAdBQw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcmJpbGwAAAQAOAEMdTMyAAAhBQQgQlRyZWVNYXAIBEsBwQMEVgEdBQAEACUFAAAAJQUAAAIpBQApBQAABAjBAx0FAC0FDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0EENhbGwEBFQAARhYY29udHJvbF9hdXRvX21pZ3JhdGlvbgQBMG1heWJlX2NvbmZpZzEFAVxPcHRpb248TWlncmF0aW9uTGltaXRzPgAADIBDb250cm9sIHRoZSBhdXRvbWF0aWMgbWlncmF0aW9uLgANAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgW2BDb25maWc6OkNvbnRyb2xPcmlnaW5gXS5AY29udGludWVfbWlncmF0ZQwBGGxpbWl0czUFATxNaWdyYXRpb25MaW1pdHMAATxyZWFsX3NpemVfdXBwZXI4AQx1MzIAATB3aXRuZXNzX3Rhc2s5BQFATWlncmF0aW9uVGFzazxUPgABVLhDb250aW51ZSB0aGUgbWlncmF0aW9uIGZvciB0aGUgZ2l2ZW4gYGxpbWl0c2AuAOxUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBjYW4gYmUgYW55IHNpZ25lZCBhY2NvdW50LgBdAVRoaXMgdHJhbnNhY3Rpb24gaGFzIE5PIE1PTkVUQVJZIElOQ0VOVElWRVMuIGNhbGxpbmcgaXQgd2lsbCBub3QgcmV3YXJkIGFueW9uZS4gQWxiZWl0LOxVcG9uIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uLCB0aGUgdHJhbnNhY3Rpb24gZmVlIGlzIHJldHVybmVkLgBBAVRoZSAocG90ZW50aWFsbHkgb3Zlci1lc3RpbWF0ZWQpIG9mIHRoZSBieXRlIGxlbmd0aCBvZiBhbGwgdGhlIGRhdGEgcmVhZCBtdXN0IGJlWQFwcm92aWRlZCBmb3IgdXAtZnJvbnQgZmVlLXBheW1lbnQgYW5kIHdlaWdoaW5nLiBJbiBlc3NlbmNlLCB0aGUgY2FsbGVyIGlzIGd1YXJhbnRlZWluZ0kBdGhhdCBleGVjdXRpbmcgdGhlIGN1cnJlbnQgYE1pZ3JhdGlvblRhc2tgIHdpdGggdGhlIGdpdmVuIGBsaW1pdHNgIHdpbGwgbm90IGV4Y2VlZJRgcmVhbF9zaXplX3VwcGVyYCBieXRlcyBvZiByZWFkIGRhdGEuAEUBVGhlIGB3aXRuZXNzX3Rhc2tgIGlzIG1lcmVseSBhIGhlbHBlciB0byBwcmV2ZW50IHRoZSBjYWxsZXIgZnJvbSBiZWluZyBzbGFzaGVkIG9yXQFnZW5lcmFsbHkgdHJpZ2dlciBhIG1pZ3JhdGlvbiB0aGF0IHRoZXkgZG8gbm90IGludGVuZC4gVGhpcyBwYXJhbWV0ZXIgaXMganVzdCBhIG1lc3NhZ2U9AWZyb20gY2FsbGVyLCBzYXlpbmcgdGhhdCB0aGV5IGJlbGlldmVkIGB3aXRuZXNzX3Rhc2tgIHdhcyB0aGUgbGFzdCBzdGF0ZSBvZiB0aGVZAW1pZ3JhdGlvbiwgYW5kIHRoZXkgb25seSB3aXNoIGZvciB0aGVpciB0cmFuc2FjdGlvbiB0byBkbyBhbnl0aGluZywgaWYgdGhpcyBhc3N1bXB0aW9uEQFob2xkcy4gSW4gY2FzZSBgd2l0bmVzc190YXNrYCBkb2VzIG5vdCBtYXRjaCwgdGhlIHRyYW5zYWN0aW9uIGZhaWxzLgA5AUJhc2VkIG9uIHRoZSBkb2N1bWVudGF0aW9uIG9mIFtgTWlncmF0aW9uVGFzazo6bWlncmF0ZV91bnRpbF9leGhhdXN0aW9uYF0sIHRoZU0BcmVjb21tZW5kZWQgd2F5IG9mIGRvaW5nIHRoaXMgaXMgdG8gcGFzcyBhIGBsaW1pdGAgdGhhdCBvbmx5IGJvdW5kcyBgY291bnRgLCBhcyB0aGWcYHNpemVgIGxpbWl0IGNhbiBhbHdheXMgYmUgb3ZlcndyaXR0ZW4uSG1pZ3JhdGVfY3VzdG9tX3RvcAgBEGtleXM0ATBWZWM8VmVjPHU4Pj4AATB3aXRuZXNzX3NpemU4AQx1MzIAAhAJAU1pZ3JhdGUgdGhlIGxpc3Qgb2YgdG9wIGtleXMgYnkgaXRlcmF0aW5nIGVhY2ggb2YgdGhlbSBvbmUgYnkgb25lLgBVAVRoaXMgZG9lcyBub3QgYWZmZWN0IHRoZSBnbG9iYWwgbWlncmF0aW9uIHByb2Nlc3MgdHJhY2tlciAoW2BNaWdyYXRpb25Qcm9jZXNzYF0pLCBhbmT8c2hvdWxkIG9ubHkgYmUgdXNlZCBpbiBjYXNlIGFueSBrZXlzIGFyZSBsZWZ0b3ZlciBkdWUgdG8gYSBidWcuUG1pZ3JhdGVfY3VzdG9tX2NoaWxkDAEQcm9vdBgBHFZlYzx1OD4AAShjaGlsZF9rZXlzNAEwVmVjPFZlYzx1OD4+AAEodG90YWxfc2l6ZTgBDHUzMgADGBEBTWlncmF0ZSB0aGUgbGlzdCBvZiBjaGlsZCBrZXlzIGJ5IGl0ZXJhdGluZyBlYWNoIG9mIHRoZW0gb25lIGJ5IG9uZS4ADQFBbGwgb2YgdGhlIGdpdmVuIGNoaWxkIGtleXMgbXVzdCBiZSBwcmVzZW50IHVuZGVyIG9uZSBgY2hpbGRfcm9vdGAuAFUBVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGdsb2JhbCBtaWdyYXRpb24gcHJvY2VzcyB0cmFja2VyIChbYE1pZ3JhdGlvblByb2Nlc3NgXSksIGFuZPxzaG91bGQgb25seSBiZSB1c2VkIGluIGNhc2UgYW55IGtleXMgYXJlIGxlZnRvdmVyIGR1ZSB0byBhIGJ1Zy5Uc2V0X3NpZ25lZF9tYXhfbGltaXRzBAEYbGltaXRzNQUBPE1pZ3JhdGlvbkxpbWl0cwAEBLhTZXQgdGhlIG1heGltdW0gbGltaXQgb2YgdGhlIHNpZ25lZCBtaWdyYXRpb24uSGZvcmNlX3NldF9wcm9ncmVzcwgBMHByb2dyZXNzX3RvcD0FATRQcm9ncmVzc09mPFQ+AAE4cHJvZ3Jlc3NfY2hpbGQ9BQE0UHJvZ3Jlc3NPZjxUPgAFJMhGb3JjZWZ1bGx5IHNldCB0aGUgcHJvZ3Jlc3MgdGhlIHJ1bm5pbmcgbWlncmF0aW9uLgBdAVRoaXMgaXMgb25seSB1c2VmdWwgaW4gb25lIGNhc2U6IHRoZSBuZXh0IGtleSB0byBtaWdyYXRlIGlzIHRvbyBiaWcgdG8gYmUgbWlncmF0ZWQgd2l0aFUBYSBzaWduZWQgYWNjb3VudCwgaW4gYSBwYXJhY2hhaW4gY29udGV4dCwgYW5kIHdlIHNpbXBseSB3YW50IHRvIHNraXAgaXQuIEEgcmVhc29uYWJsZWEBZXhhbXBsZSBvZiB0aGlzIHdvdWxkIGJlIGA6Y29kZTpgLCB3aGljaCBpcyBib3RoIHZlcnkgZXhwZW5zaXZlIHRvIG1pZ3JhdGUsIGFuZCBjb21tb25seaR1c2VkLCBzbyBwcm9iYWJseSBpdCBpcyBhbHJlYWR5IG1pZ3JhdGVkLgBdAUluIGNhc2UgeW91IG1lc3MgdGhpbmdzIHVwLCB5b3UgY2FuIGFsc28sIGluIHByaW5jaXBsZSwgdXNlIHRoaXMgdG8gcmVzZXQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4xBQQYT3B0aW9uBARUATUFAQgQTm9uZQAAABBTb21lBAA1BQAAAQAANQUMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQ8TWlncmF0aW9uTGltaXRzAAAIARBzaXplOAEMdTMyAAEQaXRlbTgBDHUzMgAAOQUMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQ0TWlncmF0aW9uVGFzawQEVAAAFAEwcHJvZ3Jlc3NfdG9wPQUBNFByb2dyZXNzT2Y8VD4AAThwcm9ncmVzc19jaGlsZD0FATRQcm9ncmVzc09mPFQ+AAEQc2l6ZTgBDHUzMgABJHRvcF9pdGVtczgBDHUzMgABLGNoaWxkX2l0ZW1zOAEMdTMyAAA9BQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldCBQcm9ncmVzcwQkTWF4S2V5TGVuAAEMHFRvU3RhcnQAAAAcTGFzdEtleQQAQQUBZEJvdW5kZWRWZWM8dTgsIE1heEtleUxlbj4AAQAgQ29tcGxldGUAAgAAQQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABFBQxccGFsbGV0X25vbWluYXRpb25fcG9vbHMYcGFsbGV0EENhbGwEBFQAAWgQam9pbggBGGFtb3VudFEBATBCYWxhbmNlT2Y8VD4AARxwb29sX2lkOAEYUG9vbElkAABARQFTdGFrZSBmdW5kcyB3aXRoIGEgcG9vbC4gVGhlIGFtb3VudCB0byBib25kIGlzIGRlbGVnYXRlZCAob3IgdHJhbnNmZXJyZWQgYmFzZWQgb25NAVtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGVgXSkgZnJvbSB0aGUgbWVtYmVyIHRvIHRoZSBwb29sIGFjY291bnQgYW5kIGltbWVkaWF0ZWx5aGluY3JlYXNlcyB0aGUgcG9vbCdzIGJvbmQuACkBVGhlIG1ldGhvZCBvZiB0cmFuc2ZlcnJpbmcgdGhlIGFtb3VudCB0byB0aGUgcG9vbCBhY2NvdW50IGlzIGRldGVybWluZWQgYnkBAVtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGVgXS4gSWYgdGhlIHBvb2wgaXMgY29uZmlndXJlZCB0byB1c2UxAVtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OkRlbGVnYXRlYF0sIHRoZSBmdW5kcyByZW1haW4gaW4gdGhlIGFjY291bnQgb2YxAXRoZSBgb3JpZ2luYCwgd2hpbGUgdGhlIHBvb2wgZ2FpbnMgdGhlIHJpZ2h0IHRvIHVzZSB0aGVzZSBmdW5kcyBmb3Igc3Rha2luZy4AGCMgTm90ZQDMKiBBbiBhY2NvdW50IGNhbiBvbmx5IGJlIGEgbWVtYmVyIG9mIGEgc2luZ2xlIHBvb2wu2CogQW4gYWNjb3VudCBjYW5ub3Qgam9pbiB0aGUgc2FtZSBwb29sIG11bHRpcGxlIHRpbWVzLkEBKiBUaGlzIGNhbGwgd2lsbCAqbm90KiBkdXN0IHRoZSBtZW1iZXIgYWNjb3VudCwgc28gdGhlIG1lbWJlciBtdXN0IGhhdmUgYXQgbGVhc3TIICBgZXhpc3RlbnRpYWwgZGVwb3NpdCArIGFtb3VudGAgaW4gdGhlaXIgYWNjb3VudC7QKiBPbmx5IGEgcG9vbCB3aXRoIFtgUG9vbFN0YXRlOjpPcGVuYF0gY2FuIGJlIGpvaW5lZChib25kX2V4dHJhBAEUZXh0cmFJBQFcQm9uZEV4dHJhPEJhbGFuY2VPZjxUPj4AARxFAUJvbmQgYGV4dHJhYCBtb3JlIGZ1bmRzIGZyb20gYG9yaWdpbmAgaW50byB0aGUgcG9vbCB0byB3aGljaCB0aGV5IGFscmVhZHkgYmVsb25nLgBJAUFkZGl0aW9uYWwgZnVuZHMgY2FuIGNvbWUgZnJvbSBlaXRoZXIgdGhlIGZyZWUgYmFsYW5jZSBvZiB0aGUgYWNjb3VudCwgb2YgZnJvbSB0aGWcYWNjdW11bGF0ZWQgcmV3YXJkcywgc2VlIFtgQm9uZEV4dHJhYF0uAD0BQm9uZGluZyBleHRyYSBmdW5kcyBpbXBsaWVzIGFuIGF1dG9tYXRpYyBwYXlvdXQgb2YgYWxsIHBlbmRpbmcgcmV3YXJkcyBhcyB3ZWxsLgkBU2VlIGBib25kX2V4dHJhX290aGVyYCB0byBib25kIHBlbmRpbmcgcmV3YXJkcyBvZiBgb3RoZXJgIG1lbWJlcnMuMGNsYWltX3BheW91dAACIFUBQSBib25kZWQgbWVtYmVyIGNhbiB1c2UgdGhpcyB0byBjbGFpbSB0aGVpciBwYXlvdXQgYmFzZWQgb24gdGhlIHJld2FyZHMgdGhhdCB0aGUgcG9vbGEBaGFzIGFjY3VtdWxhdGVkIHNpbmNlIHRoZWlyIGxhc3QgY2xhaW1lZCBwYXlvdXQgKE9SIHNpbmNlIGpvaW5pbmcgaWYgdGhpcyBpcyB0aGVpciBmaXJzdD0BdGltZSBjbGFpbWluZyByZXdhcmRzKS4gVGhlIHBheW91dCB3aWxsIGJlIHRyYW5zZmVycmVkIHRvIHRoZSBtZW1iZXIncyBhY2NvdW50LgBJAVRoZSBtZW1iZXIgd2lsbCBlYXJuIHJld2FyZHMgcHJvIHJhdGEgYmFzZWQgb24gdGhlIG1lbWJlcnMgc3Rha2UgdnMgdGhlIHN1bSBvZiB0aGXQbWVtYmVycyBpbiB0aGUgcG9vbHMgc3Rha2UuIFJld2FyZHMgZG8gbm90ICJleHBpcmUiLgBBAVNlZSBgY2xhaW1fcGF5b3V0X290aGVyYCB0byBjbGFpbSByZXdhcmRzIG9uIGJlaGFsZiBvZiBzb21lIGBvdGhlcmAgcG9vbCBtZW1iZXIuGHVuYm9uZAgBOG1lbWJlcl9hY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUB1bmJvbmRpbmdfcG9pbnRzUQEBMEJhbGFuY2VPZjxUPgADfEUBVW5ib25kIHVwIHRvIGB1bmJvbmRpbmdfcG9pbnRzYCBvZiB0aGUgYG1lbWJlcl9hY2NvdW50YCdzIGZ1bmRzIGZyb20gdGhlIHBvb2wuIEl0RQFpbXBsaWNpdGx5IGNvbGxlY3RzIHRoZSByZXdhcmRzIG9uZSBsYXN0IHRpbWUsIHNpbmNlIG5vdCBkb2luZyBzbyB3b3VsZCBtZWFuIHNvbWVscmV3YXJkcyB3b3VsZCBiZSBmb3JmZWl0ZWQuAE0BVW5kZXIgY2VydGFpbiBjb25kaXRpb25zLCB0aGlzIGNhbGwgY2FuIGJlIGRpc3BhdGNoZWQgcGVybWlzc2lvbmxlc3NseSAoaS5lLiBieSBhbnkkYWNjb3VudCkuAKwjIENvbmRpdGlvbnMgZm9yIGEgcGVybWlzc2lvbmxlc3MgZGlzcGF0Y2guAF0BKiBUaGUgcG9vbCBpcyBibG9ja2VkIGFuZCB0aGUgY2FsbGVyIGlzIGVpdGhlciB0aGUgcm9vdCBvciBib3VuY2VyLiBUaGlzIGlzIHJlZmVyZWVkIHRvMCAgYXMgYSBraWNrLvQqIFRoZSBwb29sIGlzIGRlc3Ryb3lpbmcgYW5kIHRoZSBtZW1iZXIgaXMgbm90IHRoZSBkZXBvc2l0b3IuVQEqIFRoZSBwb29sIGlzIGRlc3Ryb3lpbmcsIHRoZSBtZW1iZXIgaXMgdGhlIGRlcG9zaXRvciBhbmQgbm8gb3RoZXIgbWVtYmVycyBhcmUgaW4gdGhlHCAgcG9vbC4AEQEjIyBDb25kaXRpb25zIGZvciBwZXJtaXNzaW9uZWQgZGlzcGF0Y2ggKGkuZS4gdGhlIGNhbGxlciBpcyBhbHNvIHRoZUhgbWVtYmVyX2FjY291bnRgKToAiCogVGhlIGNhbGxlciBpcyBub3QgdGhlIGRlcG9zaXRvci5VASogVGhlIGNhbGxlciBpcyB0aGUgZGVwb3NpdG9yLCB0aGUgcG9vbCBpcyBkZXN0cm95aW5nIGFuZCBubyBvdGhlciBtZW1iZXJzIGFyZSBpbiB0aGUcICBwb29sLgAYIyBOb3RlAB0BSWYgdGhlcmUgYXJlIHRvbyBtYW55IHVubG9ja2luZyBjaHVua3MgdG8gdW5ib25kIHdpdGggdGhlIHBvb2wgYWNjb3VudCxRAVtgQ2FsbDo6cG9vbF93aXRoZHJhd191bmJvbmRlZGBdIGNhbiBiZSBjYWxsZWQgdG8gdHJ5IGFuZCBtaW5pbWl6ZSB1bmxvY2tpbmcgY2h1bmtzLlkBVGhlIFtgU3Rha2luZ0ludGVyZmFjZTo6dW5ib25kYF0gd2lsbCBpbXBsaWNpdGx5IGNhbGwgW2BDYWxsOjpwb29sX3dpdGhkcmF3X3VuYm9uZGVkYF1VAXRvIHRyeSB0byBmcmVlIGNodW5rcyBpZiBuZWNlc3NhcnkgKGllLiBpZiB1bmJvdW5kIHdhcyBjYWxsZWQgYW5kIG5vIHVubG9ja2luZyBjaHVua3NhAWFyZSBhdmFpbGFibGUpLiBIb3dldmVyLCBpdCBtYXkgbm90IGJlIHBvc3NpYmxlIHRvIHJlbGVhc2UgdGhlIGN1cnJlbnQgdW5sb2NraW5nIGNodW5rcyxdAWluIHdoaWNoIGNhc2UsIHRoZSByZXN1bHQgb2YgdGhpcyBjYWxsIHdpbGwgbGlrZWx5IGJlIHRoZSBgTm9Nb3JlQ2h1bmtzYCBlcnJvciBmcm9tIHRoZTxzdGFraW5nIHN5c3RlbS5YcG9vbF93aXRoZHJhd191bmJvbmRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAAUhudW1fc2xhc2hpbmdfc3BhbnM4AQx1MzIABBhVAUNhbGwgYHdpdGhkcmF3X3VuYm9uZGVkYCBmb3IgdGhlIHBvb2xzIGFjY291bnQuIFRoaXMgY2FsbCBjYW4gYmUgbWFkZSBieSBhbnkgYWNjb3VudC4AQQFUaGlzIGlzIHVzZWZ1bCBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgdW5sb2NraW5nIGNodW5rcyB0byBjYWxsIGB1bmJvbmRgLCBhbmQgc29tZWEBY2FuIGJlIGNsZWFyZWQgYnkgd2l0aGRyYXdpbmcuIEluIHRoZSBjYXNlIHRoZXJlIGFyZSB0b28gbWFueSB1bmxvY2tpbmcgY2h1bmtzLCB0aGUgdXNlclEBd291bGQgcHJvYmFibHkgc2VlIGFuIGVycm9yIGxpa2UgYE5vTW9yZUNodW5rc2AgZW1pdHRlZCBmcm9tIHRoZSBzdGFraW5nIHN5c3RlbSB3aGVuXHRoZXkgYXR0ZW1wdCB0byB1bmJvbmQuRHdpdGhkcmF3X3VuYm9uZGVkCAE4bWVtYmVyX2FjY291bnQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABSG51bV9zbGFzaGluZ19zcGFuczgBDHUzMgAFWFUBV2l0aGRyYXcgdW5ib25kZWQgZnVuZHMgZnJvbSBgbWVtYmVyX2FjY291bnRgLiBJZiBubyBib25kZWQgZnVuZHMgY2FuIGJlIHVuYm9uZGVkLCBhbkhlcnJvciBpcyByZXR1cm5lZC4ATQFVbmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSRhY2NvdW50KS4AqCMgQ29uZGl0aW9ucyBmb3IgYSBwZXJtaXNzaW9ubGVzcyBkaXNwYXRjaAAJASogVGhlIHBvb2wgaXMgaW4gZGVzdHJveSBtb2RlIGFuZCB0aGUgdGFyZ2V0IGlzIG5vdCB0aGUgZGVwb3NpdG9yLjEBKiBUaGUgdGFyZ2V0IGlzIHRoZSBkZXBvc2l0b3IgYW5kIHRoZXkgYXJlIHRoZSBvbmx5IG1lbWJlciBpbiB0aGUgc3ViIHBvb2xzLg0BKiBUaGUgcG9vbCBpcyBibG9ja2VkIGFuZCB0aGUgY2FsbGVyIGlzIGVpdGhlciB0aGUgcm9vdCBvciBib3VuY2VyLgCYIyBDb25kaXRpb25zIGZvciBwZXJtaXNzaW9uZWQgZGlzcGF0Y2gA6CogVGhlIGNhbGxlciBpcyB0aGUgdGFyZ2V0IGFuZCB0aGV5IGFyZSBub3QgdGhlIGRlcG9zaXRvci4AGCMgTm90ZQD0LSBJZiB0aGUgdGFyZ2V0IGlzIHRoZSBkZXBvc2l0b3IsIHRoZSBwb29sIHdpbGwgYmUgZGVzdHJveWVkLmEBLSBJZiB0aGUgcG9vbCBoYXMgYW55IHBlbmRpbmcgc2xhc2gsIHdlIGFsc28gdHJ5IHRvIHNsYXNoIHRoZSBtZW1iZXIgYmVmb3JlIGxldHRpbmcgdGhlbV0Bd2l0aGRyYXcuIFRoaXMgY2FsY3VsYXRpb24gYWRkcyBzb21lIHdlaWdodCBvdmVyaGVhZCBhbmQgaXMgb25seSBkZWZlbnNpdmUuIEluIHJlYWxpdHksVQFwb29sIHNsYXNoZXMgbXVzdCBoYXZlIGJlZW4gYWxyZWFkeSBhcHBsaWVkIHZpYSBwZXJtaXNzaW9ubGVzcyBbYENhbGw6OmFwcGx5X3NsYXNoYF0uGGNyZWF0ZRABGGFtb3VudFEBATBCYWxhbmNlT2Y8VD4AARByb290AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRub21pbmF0b3IAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGJvdW5jZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAGRHRDcmVhdGUgYSBuZXcgZGVsZWdhdGlvbiBwb29sLgAsIyBBcmd1bWVudHMAVQEqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiBmdW5kcyB0byBkZWxlZ2F0ZSB0byB0aGUgcG9vbC4gVGhpcyBhbHNvIGFjdHMgb2YgYSBzb3J0IG9mTQEgIGRlcG9zaXQgc2luY2UgdGhlIHBvb2xzIGNyZWF0b3IgY2Fubm90IGZ1bGx5IHVuYm9uZCBmdW5kcyB1bnRpbCB0aGUgcG9vbCBpcyBiZWluZzAgIGRlc3Ryb3llZC5RASogYGluZGV4YCAtIEEgZGlzYW1iaWd1YXRpb24gaW5kZXggZm9yIGNyZWF0aW5nIHRoZSBhY2NvdW50LiBMaWtlbHkgb25seSB1c2VmdWwgd2hlbsAgIGNyZWF0aW5nIG11bHRpcGxlIHBvb2xzIGluIHRoZSBzYW1lIGV4dHJpbnNpYy7UKiBgcm9vdGAgLSBUaGUgYWNjb3VudCB0byBzZXQgYXMgW2BQb29sUm9sZXM6OnJvb3RgXS4NASogYG5vbWluYXRvcmAgLSBUaGUgYWNjb3VudCB0byBzZXQgYXMgdGhlIFtgUG9vbFJvbGVzOjpub21pbmF0b3JgXS78KiBgYm91bmNlcmAgLSBUaGUgYWNjb3VudCB0byBzZXQgYXMgdGhlIFtgUG9vbFJvbGVzOjpib3VuY2VyYF0uABgjIE5vdGUAYQFJbiBhZGRpdGlvbiB0byBgYW1vdW50YCwgdGhlIGNhbGxlciB3aWxsIHRyYW5zZmVyIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0OyBzbyB0aGUgY2FsbGVyDQFuZWVkcyBhdCBoYXZlIGF0IGxlYXN0IGBhbW91bnQgKyBleGlzdGVudGlhbF9kZXBvc2l0YCB0cmFuc2ZlcmFibGUuTGNyZWF0ZV93aXRoX3Bvb2xfaWQUARhhbW91bnRRAQEwQmFsYW5jZU9mPFQ+AAEQcm9vdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkbm9taW5hdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxib3VuY2VyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxwb29sX2lkOAEYUG9vbElkAAcY7ENyZWF0ZSBhIG5ldyBkZWxlZ2F0aW9uIHBvb2wgd2l0aCBhIHByZXZpb3VzbHkgdXNlZCBwb29sIGlkACwjIEFyZ3VtZW50cwCYc2FtZSBhcyBgY3JlYXRlYCB3aXRoIHRoZSBpbmNsdXNpb24gb2Z4KiBgcG9vbF9pZGAgLSBgQSB2YWxpZCBQb29sSWQuIG5vbWluYXRlCAEccG9vbF9pZDgBGFBvb2xJZAABKHZhbGlkYXRvcnNdAQFEVmVjPFQ6OkFjY291bnRJZD4ACDB8Tm9taW5hdGUgb24gYmVoYWxmIG9mIHRoZSBwb29sLgBFAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgc2lnbmVkIGJ5IHRoZSBwb29sIG5vbWluYXRvciBvciB0aGUgcG9vbChyb290IHJvbGUuAEUBVGhpcyBkaXJlY3RseSBmb3J3YXJkcyB0aGUgY2FsbCB0byBhbiBpbXBsZW1lbnRhdGlvbiBvZiBgU3Rha2luZ0ludGVyZmFjZWAgKGUuZy4sRQFgcGFsbGV0LXN0YWtpbmdgKSB0aHJvdWdoIFtgQ29uZmlnOjpTdGFrZUFkYXB0ZXJgXSwgb24gYmVoYWxmIG9mIHRoZSBib25kZWQgcG9vbC4AGCMgTm90ZQBZAUluIGFkZGl0aW9uIHRvIGEgYHJvb3RgIG9yIGBub21pbmF0b3JgIHJvbGUgb2YgYG9yaWdpbmAsIHRoZSBwb29sJ3MgZGVwb3NpdG9yIG5lZWRzIHRvDQFoYXZlIGF0IGxlYXN0IGBkZXBvc2l0b3JfbWluX2JvbmRgIGluIHRoZSBwb29sIHRvIHN0YXJ0IG5vbWluYXRpbmcuJHNldF9zdGF0ZQgBHHBvb2xfaWQ4ARhQb29sSWQAARRzdGF0ZU0FASRQb29sU3RhdGUACSh0U2V0IGEgbmV3IHN0YXRlIGZvciB0aGUgcG9vbC4AVQFJZiBhIHBvb2wgaXMgYWxyZWFkeSBpbiB0aGUgYERlc3Ryb3lpbmdgIHN0YXRlLCB0aGVuIHVuZGVyIG5vIGNvbmRpdGlvbiBjYW4gaXRzIHN0YXRlNGNoYW5nZSBhZ2Fpbi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgZWl0aGVyOgDcMS4gc2lnbmVkIGJ5IHRoZSBib3VuY2VyLCBvciB0aGUgcm9vdCByb2xlIG9mIHRoZSBwb29sLF0BMi4gaWYgdGhlIHBvb2wgY29uZGl0aW9ucyB0byBiZSBvcGVuIGFyZSBOT1QgbWV0IChhcyBkZXNjcmliZWQgYnkgYG9rX3RvX2JlX29wZW5gKSwgYW5kOQEgICB0aGVuIHRoZSBzdGF0ZSBvZiB0aGUgcG9vbCBjYW4gYmUgcGVybWlzc2lvbmxlc3NseSBjaGFuZ2VkIHRvIGBEZXN0cm95aW5nYC4wc2V0X21ldGFkYXRhCAEccG9vbF9pZDgBGFBvb2xJZAABIG1ldGFkYXRhGAEcVmVjPHU4PgAKEIBTZXQgYSBuZXcgbWV0YWRhdGEgZm9yIHRoZSBwb29sLgBdAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgc2lnbmVkIGJ5IHRoZSBib3VuY2VyLCBvciB0aGUgcm9vdCByb2xlIG9mIHRoZRRwb29sLixzZXRfY29uZmlncxgBNG1pbl9qb2luX2JvbmRRBQFYQ29uZmlnT3A8QmFsYW5jZU9mPFQ+PgABPG1pbl9jcmVhdGVfYm9uZFEFAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAEkbWF4X3Bvb2xzVQUBNENvbmZpZ09wPHUzMj4AASxtYXhfbWVtYmVyc1UFATRDb25maWdPcDx1MzI+AAFQbWF4X21lbWJlcnNfcGVyX3Bvb2xVBQE0Q29uZmlnT3A8dTMyPgABVGdsb2JhbF9tYXhfY29tbWlzc2lvblkFAURDb25maWdPcDxQZXJiaWxsPgALLEEBVXBkYXRlIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgbm9taW5hdGlvbiBwb29scy4gVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmVgW2BDb25maWc6OkFkbWluT3JpZ2luYF0uACwjIEFyZ3VtZW50cwCgKiBgbWluX2pvaW5fYm9uZGAgLSBTZXQgW2BNaW5Kb2luQm9uZGBdLrAqIGBtaW5fY3JlYXRlX2JvbmRgIC0gU2V0IFtgTWluQ3JlYXRlQm9uZGBdLoQqIGBtYXhfcG9vbHNgIC0gU2V0IFtgTWF4UG9vbHNgXS6kKiBgbWF4X21lbWJlcnNgIC0gU2V0IFtgTWF4UG9vbE1lbWJlcnNgXS7kKiBgbWF4X21lbWJlcnNfcGVyX3Bvb2xgIC0gU2V0IFtgTWF4UG9vbE1lbWJlcnNQZXJQb29sYF0u4CogYGdsb2JhbF9tYXhfY29tbWlzc2lvbmAgLSBTZXQgW2BHbG9iYWxNYXhDb21taXNzaW9uYF0uMHVwZGF0ZV9yb2xlcxABHHBvb2xfaWQ4ARhQb29sSWQAASBuZXdfcm9vdF0FAVhDb25maWdPcDxUOjpBY2NvdW50SWQ+AAE0bmV3X25vbWluYXRvcl0FAVhDb25maWdPcDxUOjpBY2NvdW50SWQ+AAEsbmV3X2JvdW5jZXJdBQFYQ29uZmlnT3A8VDo6QWNjb3VudElkPgAMHHRVcGRhdGUgdGhlIHJvbGVzIG9mIHRoZSBwb29sLgA9AVRoZSByb290IGlzIHRoZSBvbmx5IGVudGl0eSB0aGF0IGNhbiBjaGFuZ2UgYW55IG9mIHRoZSByb2xlcywgaW5jbHVkaW5nIGl0c2VsZiy4ZXhjbHVkaW5nIHRoZSBkZXBvc2l0b3IsIHdobyBjYW4gbmV2ZXIgY2hhbmdlLgBRAUl0IGVtaXRzIGFuIGV2ZW50LCBub3RpZnlpbmcgVUlzIG9mIHRoZSByb2xlIGNoYW5nZS4gVGhpcyBldmVudCBpcyBxdWl0ZSByZWxldmFudCB0bx0BbW9zdCBwb29sIG1lbWJlcnMgYW5kIHRoZXkgc2hvdWxkIGJlIGluZm9ybWVkIG9mIGNoYW5nZXMgdG8gcG9vbCByb2xlcy4UY2hpbGwEARxwb29sX2lkOAEYUG9vbElkAA1EcENoaWxsIG9uIGJlaGFsZiBvZiB0aGUgcG9vbC4AQQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBjYW4gYmUgc2lnbmVkIGJ5IHRoZSBwb29sIG5vbWluYXRvciBvciB0aGUgcG9vbKByb290IHJvbGUsIHNhbWUgYXMgW2BQYWxsZXQ6Om5vbWluYXRlYF0uAEUBVGhpcyBkaXJlY3RseSBmb3J3YXJkcyB0aGUgY2FsbCB0byBhbiBpbXBsZW1lbnRhdGlvbiBvZiBgU3Rha2luZ0ludGVyZmFjZWAgKGUuZy4sRQFgcGFsbGV0LXN0YWtpbmdgKSB0aHJvdWdoIFtgQ29uZmlnOjpTdGFrZUFkYXB0ZXJgXSwgb24gYmVoYWxmIG9mIHRoZSBib25kZWQgcG9vbC4ATQFVbmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSRhY2NvdW50KS4ArCMgQ29uZGl0aW9ucyBmb3IgYSBwZXJtaXNzaW9ubGVzcyBkaXNwYXRjaDpVASogV2hlbiBwb29sIGRlcG9zaXRvciBoYXMgbGVzcyB0aGFuIGBNaW5Ob21pbmF0b3JCb25kYCBzdGFrZWQsIG90aGVyd2lzZSBwb29sIG1lbWJlcnNcICBhcmUgdW5hYmxlIHRvIHVuYm9uZC4AnCMgQ29uZGl0aW9ucyBmb3IgcGVybWlzc2lvbmVkIGRpc3BhdGNoOrQqIFRoZSBjYWxsZXIgaXMgdGhlIHBvb2wncyBub21pbmF0b3Igb3Igcm9vdC5AYm9uZF9leHRyYV9vdGhlcggBGG1lbWJlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUZXh0cmFJBQFcQm9uZEV4dHJhPEJhbGFuY2VPZjxUPj4ADiRVAWBvcmlnaW5gIGJvbmRzIGZ1bmRzIGZyb20gYGV4dHJhYCBmb3Igc29tZSBwb29sIG1lbWJlciBgbWVtYmVyYCBpbnRvIHRoZWlyIHJlc3BlY3RpdmUYcG9vbHMuAEkBYG9yaWdpbmAgY2FuIGJvbmQgZXh0cmEgZnVuZHMgZnJvbSBmcmVlIGJhbGFuY2Ugb3IgcGVuZGluZyByZXdhcmRzIHdoZW4gYG9yaWdpbiA9PRxvdGhlcmAuAEUBSW4gdGhlIGNhc2Ugb2YgYG9yaWdpbiAhPSBvdGhlcmAsIGBvcmlnaW5gIGNhbiBvbmx5IGJvbmQgZXh0cmEgcGVuZGluZyByZXdhcmRzIG9mFQFgb3RoZXJgIG1lbWJlcnMgYXNzdW1pbmcgc2V0X2NsYWltX3Blcm1pc3Npb24gZm9yIHRoZSBnaXZlbiBtZW1iZXIgaXPAYFBlcm1pc3Npb25sZXNzQ29tcG91bmRgIG9yIGBQZXJtaXNzaW9ubGVzc0FsbGAuUHNldF9jbGFpbV9wZXJtaXNzaW9uBAEocGVybWlzc2lvbmEFATxDbGFpbVBlcm1pc3Npb24ADxxJAUFsbG93cyBhIHBvb2wgbWVtYmVyIHRvIHNldCBhIGNsYWltIHBlcm1pc3Npb24gdG8gYWxsb3cgb3IgZGlzYWxsb3cgcGVybWlzc2lvbmxlc3NgYm9uZGluZyBhbmQgd2l0aGRyYXdpbmcuACwjIEFyZ3VtZW50cwB4KiBgb3JpZ2luYCAtIE1lbWJlciBvZiBhIHBvb2wuuCogYHBlcm1pc3Npb25gIC0gVGhlIHBlcm1pc3Npb24gdG8gYmUgYXBwbGllZC5IY2xhaW1fcGF5b3V0X290aGVyBAEUb3RoZXIEATBUOjpBY2NvdW50SWQAEBABAWBvcmlnaW5gIGNhbiBjbGFpbSBwYXlvdXRzIG9uIHNvbWUgcG9vbCBtZW1iZXIgYG90aGVyYCdzIGJlaGFsZi4AVQFQb29sIG1lbWJlciBgb3RoZXJgIG11c3QgaGF2ZSBhIGBQZXJtaXNzaW9ubGVzc1dpdGhkcmF3YCBvciBgUGVybWlzc2lvbmxlc3NBbGxgIGNsYWltqHBlcm1pc3Npb24gZm9yIHRoaXMgY2FsbCB0byBiZSBzdWNjZXNzZnVsLjhzZXRfY29tbWlzc2lvbggBHHBvb2xfaWQ4ARhQb29sSWQAAThuZXdfY29tbWlzc2lvbmUFAXxPcHRpb248KFBlcmJpbGwsIFQ6OkFjY291bnRJZCk+ABEUdFNldCB0aGUgY29tbWlzc2lvbiBvZiBhIHBvb2wuVQFCb3RoIGEgY29tbWlzc2lvbiBwZXJjZW50YWdlIGFuZCBhIGNvbW1pc3Npb24gcGF5ZWUgbXVzdCBiZSBwcm92aWRlZCBpbiB0aGUgYGN1cnJlbnRgXQF0dXBsZS4gV2hlcmUgYSBgY3VycmVudGAgb2YgYE5vbmVgIGlzIHByb3ZpZGVkLCBhbnkgY3VycmVudCBjb21taXNzaW9uIHdpbGwgYmUgcmVtb3ZlZC4ATQEtIElmIGEgYE5vbmVgIGlzIHN1cHBsaWVkIHRvIGBuZXdfY29tbWlzc2lvbmAsIGV4aXN0aW5nIGNvbW1pc3Npb24gd2lsbCBiZSByZW1vdmVkLkhzZXRfY29tbWlzc2lvbl9tYXgIARxwb29sX2lkOAEYUG9vbElkAAE4bWF4X2NvbW1pc3Npb24dBQEcUGVyYmlsbAASFJRTZXQgdGhlIG1heGltdW0gY29tbWlzc2lvbiBvZiBhIHBvb2wuADkBLSBJbml0aWFsIG1heCBjYW4gYmUgc2V0IHRvIGFueSBgUGVyYmlsbGAsIGFuZCBvbmx5IHNtYWxsZXIgdmFsdWVzIHRoZXJlYWZ0ZXIuNQEtIEN1cnJlbnQgY29tbWlzc2lvbiB3aWxsIGJlIGxvd2VyZWQgaW4gdGhlIGV2ZW50IGl0IGlzIGhpZ2hlciB0aGFuIGEgbmV3IG1heDQgIGNvbW1pc3Npb24uaHNldF9jb21taXNzaW9uX2NoYW5nZV9yYXRlCAEccG9vbF9pZDgBGFBvb2xJZAABLGNoYW5nZV9yYXRlbQUBnENvbW1pc3Npb25DaGFuZ2VSYXRlPEJsb2NrTnVtYmVyRm9yPFQ+PgATEKhTZXQgdGhlIGNvbW1pc3Npb24gY2hhbmdlIHJhdGUgZm9yIGEgcG9vbC4APQFJbml0aWFsIGNoYW5nZSByYXRlIGlzIG5vdCBib3VuZGVkLCB3aGVyZWFzIHN1YnNlcXVlbnQgdXBkYXRlcyBjYW4gb25seSBiZSBtb3JldHJlc3RyaWN0aXZlIHRoYW4gdGhlIGN1cnJlbnQuQGNsYWltX2NvbW1pc3Npb24EARxwb29sX2lkOAEYUG9vbElkABRAZENsYWltIHBlbmRpbmcgY29tbWlzc2lvbi4APQFUaGUgYHJvb3RgIHJvbGUgb2YgdGhlIHBvb2wgaXMgX2Fsd2F5c18gYWxsb3dlZCB0byBjbGFpbSB0aGUgcG9vbCdzIGNvbW1pc3Npb24uAFUBSWYgdGhlIHBvb2wgaGFzIHNldCBgQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvbjo6UGVybWlzc2lvbmxlc3NgLCB0aGVuIGFueSBhY2NvdW50IGNhbth0cmlnZ2VyIHRoZSBwcm9jZXNzIG9mIGNsYWltaW5nIHRoZSBwb29sJ3MgY29tbWlzc2lvbi4AQQFJZiB0aGUgcG9vbCBoYXMgc2V0IGl0cyBgQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvbmAgdG8gYEFjY291bnQoYWNjKWAsIHRoZW4gb25seSBhY2NvdW50czAqIGBhY2NgLCBhbmRkKiB0aGUgcG9vbCdzIHJvb3QgYWNjb3VudAC4bWF5IGNhbGwgdGhpcyBleHRyaW5zaWMgb24gYmVoYWxmIG9mIHRoZSBwb29sLgAtAVBlbmRpbmcgY29tbWlzc2lvbnMgYXJlIHBhaWQgb3V0IGFuZCBhZGRlZCB0byB0aGUgdG90YWwgY2xhaW1lZCBjb21taXNzaW9uLrhUaGUgdG90YWwgcGVuZGluZyBjb21taXNzaW9uIGlzIHJlc2V0IHRvIHplcm8uTGFkanVzdF9wb29sX2RlcG9zaXQEARxwb29sX2lkOAEYUG9vbElkABUc7FRvcCB1cCB0aGUgZGVmaWNpdCBvciB3aXRoZHJhdyB0aGUgZXhjZXNzIEVEIGZyb20gdGhlIHBvb2wuAFEBV2hlbiBhIHBvb2wgaXMgY3JlYXRlZCwgdGhlIHBvb2wgZGVwb3NpdG9yIHRyYW5zZmVycyBFRCB0byB0aGUgcmV3YXJkIGFjY291bnQgb2YgdGhlVQFwb29sLiBFRCBpcyBzdWJqZWN0IHRvIGNoYW5nZSBhbmQgb3ZlciB0aW1lLCB0aGUgZGVwb3NpdCBpbiB0aGUgcmV3YXJkIGFjY291bnQgbWF5IGJlUQFpbnN1ZmZpY2llbnQgdG8gY292ZXIgdGhlIEVEIGRlZmljaXQgb2YgdGhlIHBvb2wgb3IgdmljZS12ZXJzYSB3aGVyZSB0aGVyZSBpcyBleGNlc3MxAWRlcG9zaXQgdG8gdGhlIHBvb2wuIFRoaXMgY2FsbCBhbGxvd3MgYW55b25lIHRvIGFkanVzdCB0aGUgRUQgZGVwb3NpdCBvZiB0aGX0cG9vbCBieSBlaXRoZXIgdG9wcGluZyB1cCB0aGUgZGVmaWNpdCBvciBjbGFpbWluZyB0aGUgZXhjZXNzLnxzZXRfY29tbWlzc2lvbl9jbGFpbV9wZXJtaXNzaW9uCAEccG9vbF9pZDgBGFBvb2xJZAABKHBlcm1pc3Npb25xBQG8T3B0aW9uPENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb248VDo6QWNjb3VudElkPj4AFhDMU2V0IG9yIHJlbW92ZSBhIHBvb2wncyBjb21taXNzaW9uIGNsYWltIHBlcm1pc3Npb24uAGEBRGV0ZXJtaW5lcyB3aG8gY2FuIGNsYWltIHRoZSBwb29sJ3MgcGVuZGluZyBjb21taXNzaW9uLiBPbmx5IHRoZSBgUm9vdGAgcm9sZSBvZiB0aGUgcG9vbMhpcyBhYmxlIHRvIGNvbmZpZ3VyZSBjb21taXNzaW9uIGNsYWltIHBlcm1pc3Npb25zLixhcHBseV9zbGFzaAQBOG1lbWJlcl9hY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFySIQXBwbHkgYSBwZW5kaW5nIHNsYXNoIG9uIGEgbWVtYmVyLgAlAUZhaWxzIHVubGVzcyBbYGNyYXRlOjpwYWxsZXQ6OkNvbmZpZzo6U3Rha2VBZGFwdGVyYF0gaXMgb2Ygc3RyYXRlZ3kgdHlwZTqkW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXS4AXQFUaGUgcGVuZGluZyBzbGFzaCBhbW91bnQgb2YgdGhlIG1lbWJlciBtdXN0IGJlIGVxdWFsIG9yIG1vcmUgdGhhbiBgRXhpc3RlbnRpYWxEZXBvc2l0YC5RAVRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSBhY2NvdW50KS4gSWYgdGhlIGV4ZWN1dGlvbkkBaXMgc3VjY2Vzc2Z1bCwgZmVlIGlzIHJlZnVuZGVkIGFuZCBjYWxsZXIgbWF5IGJlIHJld2FyZGVkIHdpdGggYSBwYXJ0IG9mIHRoZSBzbGFzaA0BYmFzZWQgb24gdGhlIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBjb25maWd1cmF0aW9uLkhtaWdyYXRlX2RlbGVnYXRpb24EAThtZW1iZXJfYWNjb3VudAABUEFjY291bnRJZExvb2t1cE9mPFQ+ABgkHQFNaWdyYXRlcyBkZWxlZ2F0ZWQgZnVuZHMgZnJvbSB0aGUgcG9vbCBhY2NvdW50IHRvIHRoZSBgbWVtYmVyX2FjY291bnRgLgAlAUZhaWxzIHVubGVzcyBbYGNyYXRlOjpwYWxsZXQ6OkNvbmZpZzo6U3Rha2VBZGFwdGVyYF0gaXMgb2Ygc3RyYXRlZ3kgdHlwZTqkW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXS4AKQFUaGlzIGlzIGEgcGVybWlzc2lvbi1sZXNzIGNhbGwgYW5kIHJlZnVuZHMgYW55IGZlZSBpZiBjbGFpbSBpcyBzdWNjZXNzZnVsLgBdAUlmIHRoZSBwb29sIGhhcyBtaWdyYXRlZCB0byBkZWxlZ2F0aW9uIGJhc2VkIHN0YWtpbmcsIHRoZSBzdGFrZWQgdG9rZW5zIG9mIHBvb2wgbWVtYmVycykBY2FuIGJlIG1vdmVkIGFuZCBoZWxkIGluIHRoZWlyIG93biBhY2NvdW50LiBTZWUgW2BhZGFwdGVyOjpEZWxlZ2F0ZVN0YWtlYF14bWlncmF0ZV9wb29sX3RvX2RlbGVnYXRlX3N0YWtlBAEccG9vbF9pZDgBGFBvb2xJZAAZJPRNaWdyYXRlIHBvb2wgZnJvbSBbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpUcmFuc2ZlcmBdIHRvpFtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OkRlbGVnYXRlYF0uACUBRmFpbHMgdW5sZXNzIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBpcyBvZiBzdHJhdGVneSB0eXBlOqRbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpEZWxlZ2F0ZWBdLgBBAVRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5LCBhbmQgcmVmdW5kcyBhbnkgZmVlIGlmIHN1Y2Nlc3NmdWwuAEkBSWYgdGhlIHBvb2wgaGFzIGFscmVhZHkgbWlncmF0ZWQgdG8gZGVsZWdhdGlvbiBiYXNlZCBzdGFraW5nLCB0aGlzIGNhbGwgd2lsbCBmYWlsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5JBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMkQm9uZEV4dHJhBBxCYWxhbmNlAVUBAQgsRnJlZUJhbGFuY2UEAFUBARxCYWxhbmNlAAAAHFJld2FyZHMAAQAATQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzJFBvb2xTdGF0ZQABDBBPcGVuAAAAHEJsb2NrZWQAAQAoRGVzdHJveWluZwACAABRBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMgQ29uZmlnT3AEBFQBVQEBDBBOb29wAAAADFNldAQAVQEBBFQAAQAYUmVtb3ZlAAIAAFUFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBDb25maWdPcAQEVAE4AQwQTm9vcAAAAAxTZXQEADgBBFQAAQAYUmVtb3ZlAAIAAFkFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBDb25maWdPcAQEVAEdBQEMEE5vb3AAAAAMU2V0BAAdBQEEVAABABhSZW1vdmUAAgAAXQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIENvbmZpZ09wBARUAQQBDBBOb29wAAAADFNldAQABAEEVAABABhSZW1vdmUAAgAAYQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzPENsYWltUGVybWlzc2lvbgABEDBQZXJtaXNzaW9uZWQAAABYUGVybWlzc2lvbmxlc3NDb21wb3VuZAABAFhQZXJtaXNzaW9ubGVzc1dpdGhkcmF3AAIARFBlcm1pc3Npb25sZXNzQWxsAAMAAGUFBBhPcHRpb24EBFQBaQUBCBBOb25lAAAAEFNvbWUEAGkFAAABAABpBQAABAgdBQQAbQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzUENvbW1pc3Npb25DaGFuZ2VSYXRlBCxCbG9ja051bWJlcgE4AAgBMG1heF9pbmNyZWFzZR0FARxQZXJiaWxsAAEkbWluX2RlbGF5OAEsQmxvY2tOdW1iZXIAAHEFBBhPcHRpb24EBFQBdQUBCBBOb25lAAAAEFNvbWUEAHUFAAABAAB1BQhccGFsbGV0X25vbWluYXRpb25fcG9vbHNkQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvbgQkQWNjb3VudElkAQQBCDhQZXJtaXNzaW9ubGVzcwAAABxBY2NvdW50BAAEASRBY2NvdW50SWQAAQAAeQUMQHBhbGxldF9iYWdzX2xpc3QYcGFsbGV0EENhbGwIBFQABEkAAQwUcmViYWcEAShkaXNsb2NhdGVkAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAChZAURlY2xhcmUgdGhhdCBzb21lIGBkaXNsb2NhdGVkYCBhY2NvdW50IGhhcywgdGhyb3VnaCByZXdhcmRzIG9yIHBlbmFsdGllcywgc3VmZmljaWVudGx5UQFjaGFuZ2VkIGl0cyBzY29yZSB0aGF0IGl0IHNob3VsZCBwcm9wZXJseSBmYWxsIGludG8gYSBkaWZmZXJlbnQgYmFnIHRoYW4gaXRzIGN1cnJlbnQQb25lLgAdAUFueW9uZSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uIGFib3V0IGFueSBwb3RlbnRpYWxseSBkaXNsb2NhdGVkIGFjY291bnQuAEkBV2lsbCBhbHdheXMgdXBkYXRlIHRoZSBzdG9yZWQgc2NvcmUgb2YgYGRpc2xvY2F0ZWRgIHRvIHRoZSBjb3JyZWN0IHNjb3JlLCBiYXNlZCBvbkBgU2NvcmVQcm92aWRlcmAuANRJZiBgZGlzbG9jYXRlZGAgZG9lcyBub3QgZXhpc3RzLCBpdCByZXR1cm5zIGFuIGVycm9yLjxwdXRfaW5fZnJvbnRfb2YEARxsaWdodGVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASjQTW92ZSB0aGUgY2FsbGVyJ3MgSWQgZGlyZWN0bHkgaW4gZnJvbnQgb2YgYGxpZ2h0ZXJgLgBZAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIElkIG9mNQF0aGUgYWNjb3VudCBnb2luZyBpbiBmcm9udCBvZiBgbGlnaHRlcmAuIEZlZSBpcyBwYXllZCBieSB0aGUgb3JpZ2luIHVuZGVyIGFsbDhjaXJjdW1zdGFuY2VzLgA4T25seSB3b3JrcyBpZjoAlC0gYm90aCBub2RlcyBhcmUgd2l0aGluIHRoZSBzYW1lIGJhZyzQLSBhbmQgYG9yaWdpbmAgaGFzIGEgZ3JlYXRlciBgU2NvcmVgIHRoYW4gYGxpZ2h0ZXJgLlRwdXRfaW5fZnJvbnRfb2Zfb3RoZXIIARxoZWF2aWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxsaWdodGVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAgwRAVNhbWUgYXMgW2BQYWxsZXQ6OnB1dF9pbl9mcm9udF9vZmBdLCBidXQgaXQgY2FuIGJlIGNhbGxlZCBieSBhbnlvbmUuAMhGZWUgaXMgcGFpZCBieSB0aGUgb3JpZ2luIHVuZGVyIGFsbCBjaXJjdW1zdGFuY2VzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy59BQx4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50GHBhbGxldBBDYWxsBARUAAEQUHJlbGF5X3Nlc3Npb25fcmVwb3J0BAEYcmVwb3J0gQUBbFNlc3Npb25SZXBvcnQ8VDo6QWNjb3VudElkPgAABAUBQ2FsbGVkIHRvIGluZGljYXRlIHRoZSBzdGFydCBvZiBhIG5ldyBzZXNzaW9uIG9uIHRoZSByZWxheSBjaGFpbi5ccmVsYXlfbmV3X29mZmVuY2VfcGFnZWQEASBvZmZlbmNlc5UFAahWZWM8KFNlc3Npb25JbmRleCwgT2ZmZW5jZTxUOjpBY2NvdW50SWQ+KT4AAQAgc2V0X2tleXMMARBrZXlzGAEcVmVjPHU4PgABFHByb29mGAEcVmVjPHU4PgABlG1heF9kZWxpdmVyeV9hbmRfcmVtb3RlX2V4ZWN1dGlvbl9mZWVJBAFQT3B0aW9uPEJhbGFuY2VPZjxUPj4ACnxVAVNldCBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yLiBLZXlzIGFyZSB2YWxpZGF0ZWQgb24gQXNzZXRIdWIgYW5kIGZvcndhcmRlZCB0byBSQy4AVQFPbiB0aGUgZmlyc3QgY2FsbCwgYSBkZXBvc2l0IG9mIGBLZXlEZXBvc2l0YCBpcyBoZWxkIGZyb20gdGhlIHN0YXNoLiBTdWJzZXF1ZW50IGNhbGxz9GRvIG5vdCBjaGFyZ2UgYWdhaW4uIFRoZSBkZXBvc2l0IGlzIHJlbGVhc2VkIG9uIGBwdXJnZV9rZXlzYC4AbCoqVmFsaWRhdGlvbiBvbiBBc3NldEh1YjoqKk0BLSBLZXlzIGFyZSBkZWNvZGVkIGFzIGBUOjpSZWxheUNoYWluU2Vzc2lvbktleXNgIHRvIGVuc3VyZSB0aGV5IG1hdGNoIFJDJ3MgZXhwZWN0ZWQkICBmb3JtYXQuMQEtIE93bmVyc2hpcCBwcm9vZiBpcyB2YWxpZGF0ZWQgdXNpbmcgYE9wYXF1ZUtleXM6Om93bmVyc2hpcF9wcm9vZl9pc192YWxpZGAuAEEBSWYgdmFsaWRhdGlvbiBwYXNzZXMsIG9ubHkgdGhlIHZhbGlkYXRlZCBrZXlzIGFyZSBzZW50IHRvIFJDICh3aXRoIGVtcHR5IHByb29mKSyAc2luY2UgUkMgdHJ1c3RzIEFIJ3MgdmFsaWRhdGlvbi4AJCoqRmVlczoqKlUBVGhlIGFjdHVhbCBjb3N0IG9mIHRoaXMgY2FsbCBpcyBoaWdoZXIgdGhhbiB3aGF0IHRoZSB3ZWlnaHQtYmFzZWQgZmVlIGVzdGltYXRlIHNob3dzLlEBSW4gYWRkaXRpb24gdG8gdGhlIGxvY2FsIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUsIHRoZSBzdGFzaCBhY2NvdW50IGlzIGNoYXJnZWQgYW4gWENNSQFmZWUgKGRlbGl2ZXJ5ICsgUkMgZXhlY3V0aW9uIGNvc3QpIHZpYSBgWGNtRXhlY3V0b3I6OmNoYXJnZV9mZWVzYC4gVGhlIHJlbGF5IGNoYWluPQF1c2VzIGBVbnBhaWRFeGVjdXRpb25gLCBzbyB0aGUgZnVsbCByZW1vdGUgY29zdCBpcyBjaGFyZ2VkIHVwZnJvbnQgb24gQXNzZXRIdWIuAC0BV2hlbiBjYWxsZWQgdmlhIGEgc3Rha2luZyBwcm94eSwgdGhlIHByb3h5IHBheXMgdGhlIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUs2HdoaWxlIHRoZSBzdGFzaCAoZGVsZWdhdGluZyBhY2NvdW50KSBwYXlzIHRoZSBYQ00gZmVlLgBIKipNYXggRmVlIExpbWl0OioqRQFVc2VycyBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGBtYXhfZGVsaXZlcnlfYW5kX3JlbW90ZV9leGVjdXRpb25fZmVlYCB0byBsaW1pdCB0aGVdAWRlbGl2ZXJ5ICsgUkMgZXhlY3V0aW9uIGZlZS4gVGhpcyBkb2VzIG5vdCBpbmNsdWRlIHRoZSBsb2NhbCB0cmFuc2FjdGlvbiB3ZWlnaHQgZmVlLiBJZl0BdGhlIGZlZSBleGNlZWRzIHRoaXMgbGltaXQsIHRoZSBvcGVyYXRpb24gZmFpbHMgd2l0aCBgRmVlc0V4Y2VlZGVkTWF4YC4gUGFzcyBgTm9uZWAgZm9yTHVubGltaXRlZCAobm8gY2FwKS4AWQFOT1RFOiB1bmxpa2UgdGhlIGN1cnJlbnQgZmxvdyBmb3IgbmV3IHZhbGlkYXRvcnMgb24gUkMgKGJvbmQgLT4gc2V0X2tleXMgLT4gdmFsaWRhdGUpLFUBdXNlcnMgb24gQXNzZXQgSHViIE1VU1QgY2FsbCBib25kIGFuZCB2YWxpZGF0ZSBCRUZPUkUgY2FsbGluZyBzZXRfa2V5cy4gQXR0ZW1wdGluZyB0byUBc2V0IGtleXMgYmVmb3JlIGRlY2xhcmluZyBpbnRlbnQgdG8gdmFsaWRhdGUgd2lsbCBmYWlsIHdpdGggTm90VmFsaWRhdG9yLihwdXJnZV9rZXlzBAGUbWF4X2RlbGl2ZXJ5X2FuZF9yZW1vdGVfZXhlY3V0aW9uX2ZlZUkEAVBPcHRpb248QmFsYW5jZU9mPFQ+PgALaAEBUmVtb3ZlIHNlc3Npb24ga2V5cyBmb3IgYSB2YWxpZGF0b3IgYW5kIHJlbGVhc2UgdGhlIGtleSBkZXBvc2l0LgCoVGhpcyBwdXJnZXMgdGhlIGtleXMgZnJvbSB0aGUgUmVsYXkgQ2hhaW4uAEUBVW5saWtlIGBzZXRfa2V5c2AsIHRoaXMgZG9lcyBub3QgcmVxdWlyZSB0aGUgY2FsbGVyIHRvIGJlIGEgcmVnaXN0ZXJlZCB2YWxpZGF0b3IuSQFUaGlzIGlzIGludGVudGlvbmFsOiBhIHZhbGlkYXRvciB3aG8gaGFzIGNoaWxsZWQgKHN0b3BwZWQgdmFsaWRhdGluZykgc2hvdWxkIHN0aWxsOQFiZSBhYmxlIHRvIHB1cmdlIHRoZWlyIHNlc3Npb24ga2V5cy4gVGhpcyBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgb3JpZ2luYWzwYHBhbGxldC1zZXNzaW9uOjpwdXJnZV9rZXlzYCB3aGljaCBhbGxvd3MgYW55b25lIHRvIGNhbGwgaXQuADkBVGhlIFJlbGF5IENoYWluIHdpbGwgcmVqZWN0IHRoZSBjYWxsIHdpdGggYE5vS2V5c2AgZXJyb3IgaWYgdGhlIGFjY291bnQgaGFzIG5vJGtleXMgc2V0LgAkKipGZWVzOioqVQFUaGUgYWN0dWFsIGNvc3Qgb2YgdGhpcyBjYWxsIGlzIGhpZ2hlciB0aGFuIHdoYXQgdGhlIHdlaWdodC1iYXNlZCBmZWUgZXN0aW1hdGUgc2hvd3MuRQFJbiBhZGRpdGlvbiB0byB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gd2VpZ2h0IGZlZSwgdGhlIGNhbGxlciBpcyBjaGFyZ2VkIGFuIFhDTSBmZWVNAShkZWxpdmVyeSArIFJDIGV4ZWN1dGlvbiBjb3N0KSB2aWEgYFhjbUV4ZWN1dG9yOjpjaGFyZ2VfZmVlc2AuIFRoZSByZWxheSBjaGFpbiB1c2VzKQFgVW5wYWlkRXhlY3V0aW9uYCwgc28gdGhlIGZ1bGwgcmVtb3RlIGNvc3QgaXMgY2hhcmdlZCB1cGZyb250IG9uIEFzc2V0SHViLgAtAVdoZW4gY2FsbGVkIHZpYSBhIHN0YWtpbmcgcHJveHksIHRoZSBwcm94eSBwYXlzIHRoZSB0cmFuc2FjdGlvbiB3ZWlnaHQgZmVlLLh3aGlsZSB0aGUgZGVsZWdhdGluZyBhY2NvdW50IHBheXMgdGhlIFhDTSBmZWUuAEgqKk1heCBGZWUgTGltaXQ6KipFAVVzZXJzIGNhbiBvcHRpb25hbGx5IHNwZWNpZnkgYG1heF9kZWxpdmVyeV9hbmRfcmVtb3RlX2V4ZWN1dGlvbl9mZWVgIHRvIGxpbWl0IHRoZV0BZGVsaXZlcnkgKyBSQyBleGVjdXRpb24gZmVlLiBUaGlzIGRvZXMgbm90IGluY2x1ZGUgdGhlIGxvY2FsIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUuIElmXQF0aGUgZmVlIGV4Y2VlZHMgdGhpcyBsaW1pdCwgdGhlIG9wZXJhdGlvbiBmYWlscyB3aXRoIGBGZWVzRXhjZWVkZWRNYXhgLiBQYXNzIGBOb25lYCBmb3JMdW5saW1pdGVkIChubyBjYXApLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6BBQh4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50NFNlc3Npb25SZXBvcnQEJEFjY291bnRJZAEEABABJGVuZF9pbmRleDgBMFNlc3Npb25JbmRleAABQHZhbGlkYXRvcl9wb2ludHOFBQFUVmVjPChBY2NvdW50SWQsIHUzMik+AAFQYWN0aXZhdGlvbl90aW1lc3RhbXCNBQFIT3B0aW9uPCh1NjQsIHUzMik+AAEgbGVmdG92ZXJZAQEQYm9vbAAAhQUAAAKJBQCJBQAABAgEOACNBQQYT3B0aW9uBARUAZEFAQgQTm9uZQAAABBTb21lBACRBQAAAQAAkQUAAAQIKDgAlQUAAAKZBQCZBQAABAg4nQUAnQUIeHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudBxPZmZlbmNlBCRBY2NvdW50SWQBBAAMASBvZmZlbmRlcgQBJEFjY291bnRJZAABJHJlcG9ydGVyc10BAThWZWM8QWNjb3VudElkPgABOHNsYXNoX2ZyYWN0aW9uHQUBHFBlcmJpbGwAAKEFDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYcGFsbGV0EENhbGwEBFQAAQgYbWFuYWdlBAEIb3ClBQFMTWFuYWdlck9wZXJhdGlvbjxUPgAAFExNYW5hZ2UgdGhpcyBwYWxsZXQuAOhUaGUgb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFtgQ29uZmlnOjpNYW5hZ2VyT3JpZ2luYF0uAAkBU2VlIFtgTWFuYWdlck9wZXJhdGlvbmBdIGZvciB2YXJpb3VzIG9wZXJhdGlvbnMgdGhhdCBhcmUgcG9zc2libGUuFGFkbWluBAEIb3CtBQFEQWRtaW5PcGVyYXRpb248VD4AAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMupQUIkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9ja0BNYW5hZ2VyT3BlcmF0aW9uBARUAAEMQEZvcmNlUm90YXRlUm91bmQAAAA0Rm9yY2VTZXRQaGFzZQQAqQUBIFBoYXNlPFQ+AAEAREVtZXJnZW5jeUZhbGxiYWNrAAIAAKkFDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sUdHlwZXMUUGhhc2UEBFQAASAMT2ZmAAAAGFNpZ25lZAQAOAFEQmxvY2tOdW1iZXJGb3I8VD4AAQBAU2lnbmVkVmFsaWRhdGlvbgQAOAFEQmxvY2tOdW1iZXJGb3I8VD4AAgAgVW5zaWduZWQEADgBREJsb2NrTnVtYmVyRm9yPFQ+AAMAIFNuYXBzaG90BAA4ASRQYWdlSW5kZXgABAAQRG9uZQAFABhFeHBvcnQEADgBJFBhZ2VJbmRleAAGACRFbWVyZ2VuY3kABwAArQUIkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jazhBZG1pbk9wZXJhdGlvbgQEVAABCFBFbWVyZ2VuY3lTZXRTb2x1dGlvbggAsQUBhEJveDxCb3VuZGVkU3VwcG9ydHNPZjxQYWxsZXQ8VD4+PgAA0QUBNEVsZWN0aW9uU2NvcmUAAABQU2V0TWluVW50cnVzdGVkU2NvcmUEANEFATRFbGVjdGlvblNjb3JlAAEAALEFCHxmcmFtZV9lbGVjdGlvbl9wcm92aWRlcl9zdXBwb3J0PEJvdW5kZWRTdXBwb3J0cwwkQWNjb3VudElkAQQYQk91dGVyABhCSW5uZXIAAAQAtQUBCQFCb3VuZGVkVmVjPChBY2NvdW50SWQsIEJvdW5kZWRTdXBwb3J0PEFjY291bnRJZCwgQklubmVyPiksIEJPdXRlcj4AALUFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBuQUEUwAABADNBQEYVmVjPFQ+AAC5BQAABAgEvQUAvQUIfGZyYW1lX2VsZWN0aW9uX3Byb3ZpZGVyX3N1cHBvcnQ4Qm91bmRlZFN1cHBvcnQIJEFjY291bnRJZAEEFEJvdW5kAAAIARR0b3RhbFUBATxFeHRlbmRlZEJhbGFuY2UAARh2b3RlcnPBBQG8Qm91bmRlZFZlYzwoQWNjb3VudElkLCBFeHRlbmRlZEJhbGFuY2UpLCBCb3VuZD4AAMEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBxQUEUwAABADJBQEYVmVjPFQ+AADFBQAABAgEVQEAyQUAAALFBQDNBQAAArkFANEFCERzcF9ucG9zX2VsZWN0aW9uczRFbGVjdGlvblNjb3JlAAAMATRtaW5pbWFsX3N0YWtlVQEBPEV4dGVuZGVkQmFsYW5jZQABJHN1bV9zdGFrZVUBATxFeHRlbmRlZEJhbGFuY2UAAURzdW1fc3Rha2Vfc3F1YXJlZFUBATxFeHRlbmRlZEJhbGFuY2UAANUFFJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sgdmVyaWZpZXIUaW1wbHMYcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu2QUQkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB1bnNpZ25lZBhwYWxsZXQQQ2FsbAQEVAABBDxzdWJtaXRfdW5zaWduZWQEAThwYWdlZF9zb2x1dGlvbt0FAZRCb3g8UGFnZWRSYXdTb2x1dGlvbjxUOjpNaW5lckNvbmZpZz4+AAA8cFN1Ym1pdCBhbiB1bnNpZ25lZCBzb2x1dGlvbi4AVQFUaGlzIHdvcmtzIHZlcnkgbXVjaCBsaWtlIGFuIGluaGVyZW50LCBhcyBvbmx5IHRoZSB2YWxpZGF0b3JzIGFyZSBwZXJtaXR0ZWQgdG8gc3VibWl0WQFhbnl0aGluZy4gQnkgZGVmYXVsdCB2YWxpZGF0b3JzIHdpbGwgY29tcHV0ZSB0aGlzIGNhbGwgaW4gdGhlaXIgYG9mZmNoYWluX3dvcmtlcmAgaG9va2xhbmQgdHJ5IGFuZCBzdWJtaXQgaXQgYmFjay4ARQFUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHNpZ25lZCBwYWdlIHN1Ym1pc3Npb24gbWFpbmx5IGluIHRoYXQgdGhlIHNvbHV0aW9uIHBhZ2UgaXNQdmVyaWZpZWQgb24gdGhlIGZseS4APQFUaGUgYHBhZ2VkX3NvbHV0aW9uYCBtYXkgY29udGFpbiBhdCBtb3N0IFtgQ29uZmlnOjpNaW5lclBhZ2VzYF0gcGFnZXMuIFRoZXkgYXJlDQFpbnRlcnByZXRlZCBhcyBtc3AgLT4gbHNwLCBhcyBwZXIgW2BjcmF0ZTo6UGFsbGV0Ojptc3BfcmFuZ2VfZm9yYF0uAF0BRm9yIGV4YW1wbGUsIGlmIGBQYWdlcyA9IDRgLCBhbmQgYE1pbmVyUGFnZXMgPSAyYCwgb3VyIGZ1bGwgc25hcHNob3QgcmFuZ2Ugd291bGQgYmUgWzAsVQExLCAyLCAzXSwgd2l0aCAzIGJlaW5nIG1zcC4gQnV0LCBpbiB0aGlzIGNhc2UsIHRoZW4gdGhlIGBwYWdlZF9yYXdfc29sdXRpb24ucGFnZXNgIGlz3GV4cGVjdGVkIHRvIGNvcnJlc3BvbmQgdG8gYFtzbmFwc2hvdCgyKSwgc25hcHNob3QoMyldYC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu3QUMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxR0eXBlc0BQYWdlZFJhd1NvbHV0aW9uBARUAAAMAThzb2x1dGlvbl9wYWdlc+EFAUhWZWM8U29sdXRpb25PZjxUPj4AARRzY29yZdEFATRFbGVjdGlvblNjb3JlAAEUcm91bmQ4AQx1MzIAAOEFAAAC5QUA5QUMcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUcc3Rha2luZ1ROcG9zQ29tcGFjdFNvbHV0aW9uMTYAAEABGHZvdGVzMekFAAABGHZvdGVzMvUFAAABGHZvdGVzMwkGAAABGHZvdGVzNBUGAAABGHZvdGVzNSEGAAABGHZvdGVzNi0GAAABGHZvdGVzNzkGAAABGHZvdGVzOEUGAAABGHZvdGVzOVEGAAABHHZvdGVzMTBdBgAAARx2b3RlczExaQYAAAEcdm90ZXMxMnUGAAABHHZvdGVzMTOBBgAAARx2b3RlczE0jQYAAAEcdm90ZXMxNZkGAAABHHZvdGVzMTalBgAAAOkFAAAC7QUA7QUAAAQIYPEFAPEFAAAG0QMA9QUAAAL5BQD5BQAABAxg/QXxBQD9BQAABAjxBQEGAAEGAAAGBQYABQYMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxhQZXJVMTYAAAQA0QMBDHUxNgAACQYAAAINBgANBgAABAxgEQbxBQARBgAAAwIAAAD9BQAVBgAAAhkGABkGAAAEDGAdBvEFAB0GAAADAwAAAP0FACEGAAACJQYAJQYAAAQMYCkG8QUAKQYAAAMEAAAA/QUALQYAAAIxBgAxBgAABAxgNQbxBQA1BgAAAwUAAAD9BQA5BgAAAj0GAD0GAAAEDGBBBvEFAEEGAAADBgAAAP0FAEUGAAACSQYASQYAAAQMYE0G8QUATQYAAAMHAAAA/QUAUQYAAAJVBgBVBgAABAxgWQbxBQBZBgAAAwgAAAD9BQBdBgAAAmEGAGEGAAAEDGBlBvEFAGUGAAADCQAAAP0FAGkGAAACbQYAbQYAAAQMYHEG8QUAcQYAAAMKAAAA/QUAdQYAAAJ5BgB5BgAABAxgfQbxBQB9BgAAAwsAAAD9BQCBBgAAAoUGAIUGAAAEDGCJBvEFAIkGAAADDAAAAP0FAI0GAAACkQYAkQYAAAQMYJUG8QUAlQYAAAMNAAAA/QUAmQYAAAKdBgCdBgAABAxgoQbxBQChBgAAAw4AAAD9BQClBgAAAqkGAKkGAAAEDGCtBvEFAK0GAAADDwAAAP0FALEGEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkGHBhbGxldBBDYWxsBARUAAEUIHJlZ2lzdGVyBAE0Y2xhaW1lZF9zY29yZdEFATRFbGVjdGlvblNjb3JlAAAExFJlZ2lzdGVyIG9uZXNlbGYgZm9yIGFuIHVwY29taW5nIHNpZ25lZCBlbGVjdGlvbi4sc3VibWl0X3BhZ2UIARBwYWdlOAEkUGFnZUluZGV4AAE4bWF5YmVfc29sdXRpb261BgGcT3B0aW9uPEJveDxTb2x1dGlvbk9mPFQ6Ok1pbmVyQ29uZmlnPj4+AAEgjFN1Ym1pdCBhIHNpbmdsZSBwYWdlIG9mIGEgc29sdXRpb24uALBNdXN0IGFsd2F5cyBjb21lIGFmdGVyIFtgUGFsbGV0OjpyZWdpc3RlcmBdLgDgYG1heWJlX3NvbHV0aW9uYCBjYW4gYmUgc2V0IHRvIGBOb25lYCB0byBlcmFzZSB0aGUgcGFnZS4ANQFDb2xsZWN0cyBkZXBvc2l0cyBmcm9tIHRoZSBzaWduZWQgb3JpZ2luIGJhc2VkIG9uIFtgQ29uZmlnOjpEZXBvc2l0QmFzZWBdIGFuZGxbYENvbmZpZzo6RGVwb3NpdFBlclBhZ2VgXS4QYmFpbAACFFRSZXRyYWN0IGEgc3VibWlzc2lvbi4ATQFBIHBvcnRpb24gb2YgdGhlIGRlcG9zaXQgbWF5IGJlIHJldHVybmVkLCBiYXNlZCBvbiB0aGUgW2BDb25maWc6OkVqZWN0R3JhY2VSYXRpb2BdLgDEVGhpcyB3aWxsIGZ1bGx5IHJlbW92ZSB0aGUgc29sdXRpb24gZnJvbSBzdG9yYWdlLlBjbGVhcl9vbGRfcm91bmRfZGF0YQgBFHJvdW5kOAEMdTMyAAE0d2l0bmVzc19wYWdlczgBDHUzMgADGMBDbGVhciB0aGUgZGF0YSBvZiBhIHN1Ym1pdHRlciBmb3JtIGFuIG9sZCByb3VuZC4AMQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIHNpZ25lZCwgYW5kIHRoZSBvcmlnaW5hbCBzdWJtaXR0ZXIuAF0BVGhpcyBjYW4gb25seSBiZSBjYWxsZWQgZm9yIHN1Ym1pc3Npb25zIHRoYXQgZW5kIHVwIGJlaW5nIGRpc2NhcmRlZCwgYXMgaW4gdGhleSBhcmUgbm90xHByb2Nlc3NlZCBhbmQgdGhleSBlbmQgdXAgbGluZ2VyaW5nIGluIHRoZSBxdWV1ZS5Ec2V0X2ludnVsbmVyYWJsZXMEAQxpbnZdAQFEVmVjPFQ6OkFjY291bnRJZD4ABAxoU2V0IHRoZSBpbnZ1bG5lcmFibGUgbGlzdC4AEQFEaXNwYXRjaCBvcmlnaW4gbXVzdCB0aGUgdGhlIHNhbWUgYXMgW2BjcmF0ZTo6Q29uZmlnOjpBZG1pbk9yaWdpbmBdLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy61BgQYT3B0aW9uBARUAeUFAQgQTm9uZQAAABBTb21lBADlBQAAAQAAuQYQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQQQ2FsbAQEVAABiBBib25kCAEUdmFsdWVRAQEwQmFsYW5jZU9mPFQ+AAEUcGF5ZWW9BgF8UmV3YXJkRGVzdGluYXRpb248VDo6QWNjb3VudElkPgAAMGEBVGFrZSB0aGUgb3JpZ2luIGFjY291bnQgYXMgYSBzdGFzaCBhbmQgbG9jayB1cCBgdmFsdWVgIG9mIGl0cyBiYWxhbmNlLiBgY29udHJvbGxlcmAgd2lsbIBiZSB0aGUgYWNjb3VudCB0aGF0IGNvbnRyb2xzIGl0LgAtAWB2YWx1ZWAgbXVzdCBiZSBtb3JlIHRoYW4gdGhlIGBtaW5pbXVtX2JhbGFuY2VgIHNwZWNpZmllZCBieSBgVDo6Q3VycmVuY3lgLgAhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBzdGFzaCBhY2NvdW50LgA8RW1pdHMgYEJvbmRlZGAuAE0BTk9URTogVHdvIG9mIHRoZSBzdG9yYWdlIHdyaXRlcyAoYFNlbGY6OmJvbmRlZGAsIGBTZWxmOjpwYXllZWApIGFyZSBfbmV2ZXJfIGNsZWFuZWRZAXVubGVzcyB0aGUgYG9yaWdpbmAgZmFsbHMgYmVsb3cgX2V4aXN0ZW50aWFsIGRlcG9zaXRfIChvciBlcXVhbCB0byAwKSBhbmQgZ2V0cyByZW1vdmVkIGFzIGR1c3QuKGJvbmRfZXh0cmEEAThtYXhfYWRkaXRpb25hbFEBATBCYWxhbmNlT2Y8VD4AAShhAUFkZCBzb21lIGV4dHJhIGFtb3VudCB0aGF0IGhhdmUgYXBwZWFyZWQgaW4gdGhlIHN0YXNoIGBmcmVlX2JhbGFuY2VgIGludG8gdGhlIGJhbGFuY2UgdXAwZm9yIHN0YWtpbmcuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIHN0YXNoLCBub3QgdGhlIGNvbnRyb2xsZXIuAE0BVXNlIHRoaXMgaWYgdGhlcmUgYXJlIGFkZGl0aW9uYWwgZnVuZHMgaW4geW91ciBzdGFzaCBhY2NvdW50IHRoYXQgeW91IHdpc2ggdG8gYm9uZC5VAVVubGlrZSBbYGJvbmRgXShTZWxmOjpib25kKSBvciBbYHVuYm9uZGBdKFNlbGY6OnVuYm9uZCkgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBpbXBvc2W8YW55IGxpbWl0YXRpb24gb24gdGhlIGFtb3VudCB0aGF0IGNhbiBiZSBhZGRlZC4APEVtaXRzIGBCb25kZWRgLhh1bmJvbmQEARR2YWx1ZVEBATBCYWxhbmNlT2Y8VD4AAkxRAVNjaGVkdWxlIGEgcG9ydGlvbiBvZiB0aGUgc3Rhc2ggdG8gYmUgdW5sb2NrZWQgcmVhZHkgZm9yIHRyYW5zZmVyIG91dCBhZnRlciB0aGUgYm9uZPxwZXJpb2QgZW5kcy4gSWYgdGhpcyBsZWF2ZXMgYW4gYW1vdW50IGFjdGl2ZWx5IGJvbmRlZCBsZXNzIHRoYW4hAVtgYXNzZXQ6OmV4aXN0ZW50aWFsX2RlcG9zaXRgXSwgdGhlbiBpdCBpcyBpbmNyZWFzZWQgdG8gdGhlIGZ1bGwgYW1vdW50LgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgBFAU9uY2UgdGhlIHVubG9jayBwZXJpb2QgaXMgZG9uZSwgeW91IGNhbiBjYWxsIGB3aXRoZHJhd191bmJvbmRlZGAgdG8gYWN0dWFsbHkgbW92Zbx0aGUgZnVuZHMgb3V0IG9mIG1hbmFnZW1lbnQgcmVhZHkgZm9yIHRyYW5zZmVyLgAxAU5vIG1vcmUgdGhhbiBhIGxpbWl0ZWQgbnVtYmVyIG9mIHVubG9ja2luZyBjaHVua3MgKHNlZSBgTWF4VW5sb2NraW5nQ2h1bmtzYClBAWNhbiBjby1leGlzdHMgYXQgdGhlIHNhbWUgdGltZS4gSWYgdGhlcmUgYXJlIG5vIHVubG9ja2luZyBjaHVua3Mgc2xvdHMgYXZhaWxhYmxlRQFbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0gaXMgY2FsbGVkIHRvIHJlbW92ZSBzb21lIG9mIHRoZSBjaHVua3MgKGlmIHBvc3NpYmxlKS4AOQFJZiBhIHVzZXIgZW5jb3VudGVycyB0aGUgYEluc3VmZmljaWVudEJvbmRgIGVycm9yIHdoZW4gY2FsbGluZyB0aGlzIGV4dHJpbnNpYywZAXRoZXkgc2hvdWxkIGNhbGwgYGNoaWxsYCBmaXJzdCBpbiBvcmRlciB0byBmcmVlIHVwIHRoZWlyIGJvbmRlZCBmdW5kcy4AREVtaXRzIGBVbmJvbmRlZGAuAJRTZWUgYWxzbyBbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0uRHdpdGhkcmF3X3VuYm9uZGVkBAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyAANMKQFSZW1vdmUgYW55IHN0YWtlIHRoYXQgaGFzIGJlZW4gZnVsbHkgdW5ib25kZWQgYW5kIGlzIHJlYWR5IGZvciB3aXRoZHJhd2FsLgBVAVN0YWtlIGlzIGNvbnNpZGVyZWQgZnVsbHkgdW5ib25kZWQgb25jZSBbYENvbmZpZzo6Qm9uZGluZ0R1cmF0aW9uYF0gaGFzIGVsYXBzZWQgc2luY2VdAXRoZSB1bmJvbmRpbmcgd2FzIGluaXRpYXRlZC4gSW4gcmFyZSBjYXNlc+KAlHN1Y2ggYXMgd2hlbiBvZmZlbmNlcyBmb3IgdGhlIHVuYm9uZGVkIGVyYVUBaGF2ZSBiZWVuIHJlcG9ydGVkIGJ1dCBub3QgeWV0IHByb2Nlc3NlZOKAlHdpdGhkcmF3YWwgaXMgcmVzdHJpY3RlZCB0byBlcmFzIGZvciB3aGljaIRhbGwgb2ZmZW5jZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZC4AJQFUaGUgdW5sb2NrZWQgc3Rha2Ugd2lsbCBiZSByZXR1cm5lZCBhcyBmcmVlIGJhbGFuY2UgaW4gdGhlIHN0YXNoIGFjY291bnQuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIuAEhFbWl0cyBgV2l0aGRyYXduYC4AaFNlZSBhbHNvIFtgQ2FsbDo6dW5ib25kYF0uADQjIyBQYXJhbWV0ZXJzAFkBLSBgbnVtX3NsYXNoaW5nX3NwYW5zYDogKipEZXByZWNhdGVkKiouIFJldGFpbmVkIG9ubHkgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHk7IHRoaXNoICBwYXJhbWV0ZXIgaGFzIG5vIGVmZmVjdC4gdmFsaWRhdGUEARRwcmVmc8EGAThWYWxpZGF0b3JQcmVmcwAEFOREZWNsYXJlIHRoZSBkZXNpcmUgdG8gdmFsaWRhdGUgZm9yIHRoZSBvcmlnaW4gY29udHJvbGxlci4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLiBub21pbmF0ZQQBHHRhcmdldHPJBgFkVmVjPEFjY291bnRJZExvb2t1cE9mPFQ+PgAFFA0BRGVjbGFyZSB0aGUgZGVzaXJlIHRvIG5vbWluYXRlIGB0YXJnZXRzYCBmb3IgdGhlIG9yaWdpbiBjb250cm9sbGVyLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guFGNoaWxsAAYoxERlY2xhcmUgbm8gZGVzaXJlIHRvIGVpdGhlciB2YWxpZGF0ZSBvciBub21pbmF0ZS4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgA0IyMgQ29tcGxleGl0eeQtIEluZGVwZW5kZW50IG9mIHRoZSBhcmd1bWVudHMuIEluc2lnbmlmaWNhbnQgY29tcGxleGl0eS5QLSBDb250YWlucyBvbmUgcmVhZC7ELSBXcml0ZXMgYXJlIGxpbWl0ZWQgdG8gdGhlIGBvcmlnaW5gIGFjY291bnQga2V5LiRzZXRfcGF5ZWUEARRwYXllZb0GAXxSZXdhcmREZXN0aW5hdGlvbjxUOjpBY2NvdW50SWQ+AAcUtChSZS0pc2V0IHRoZSBwYXltZW50IHRhcmdldCBmb3IgYSBjb250cm9sbGVyLgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLjhzZXRfY29udHJvbGxlcgAIIEUBKFJlLSlzZXRzIHRoZSBjb250cm9sbGVyIG9mIGEgc3Rhc2ggdG8gdGhlIHN0YXNoIGl0c2VsZi4gVGhpcyBmdW5jdGlvbiBwcmV2aW91c2x5TQFhY2NlcHRlZCBhIGBjb250cm9sbGVyYCBhcmd1bWVudCB0byBzZXQgdGhlIGNvbnRyb2xsZXIgdG8gYW4gYWNjb3VudCBvdGhlciB0aGFuIHRoZVkBc3Rhc2ggaXRzZWxmLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIG5vdyBiZWVuIHJlbW92ZWQsIG5vdyBvbmx5IHNldHRpbmcgdGhlIGNvbnRyb2xsZXKMdG8gdGhlIHN0YXNoLCBpZiBpdCBpcyBub3QgYWxyZWFkeS4AUQFFZmZlY3RzIHdpbGwgYmUgZmVsdCBpbnN0YW50bHkgKGFzIHNvb24gYXMgdGhpcyBmdW5jdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5KS4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgc3Rhc2gsIG5vdCB0aGUgY29udHJvbGxlci5Mc2V0X3ZhbGlkYXRvcl9jb3VudAQBDG5ld2ABDHUzMgAJDJBTZXRzIHRoZSBpZGVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycy4AhFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBSb290LmBpbmNyZWFzZV92YWxpZGF0b3JfY291bnQEAShhZGRpdGlvbmFsYAEMdTMyAAoQ6EluY3JlbWVudHMgdGhlIGlkZWFsIG51bWJlciBvZiB2YWxpZGF0b3JzIHVwIHRvIG1heGltdW0gb2ZUYFQ6Ok1heFZhbGlkYXRvclNldGAuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC5Uc2NhbGVfdmFsaWRhdG9yX2NvdW50BAEYZmFjdG9yzQYBHFBlcmNlbnQACxARAVNjYWxlIHVwIHRoZSBpZGVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycyBieSBhIGZhY3RvciB1cCB0byBtYXhpbXVtIG9mVGBUOjpNYXhWYWxpZGF0b3JTZXRgLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuNGZvcmNlX25vX2VyYXMADCSsRm9yY2UgdGhlcmUgdG8gYmUgbm8gbmV3IGVyYXMgaW5kZWZpbml0ZWx5LgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuOQFUaHVzIHRoZSBlbGVjdGlvbiBwcm9jZXNzIG1heSBiZSBvbmdvaW5nIHdoZW4gdGhpcyBpcyBjYWxsZWQuIEluIHRoaXMgY2FzZSB0aGXcZWxlY3Rpb24gd2lsbCBjb250aW51ZSB1bnRpbCB0aGUgbmV4dCBlcmEgaXMgdHJpZ2dlcmVkLjRmb3JjZV9uZXdfZXJhAA0oSQFGb3JjZSB0aGVyZSB0byBiZSBhIG5ldyBlcmEgYXQgdGhlIGVuZCBvZiB0aGUgbmV4dCBzZXNzaW9uLiBBZnRlciB0aGlzLCBpdCB3aWxsIGJlnHJlc2V0IHRvIG5vcm1hbCAobm9uLWZvcmNlZCkgYmVoYXZpb3VyLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuSQFJZiB0aGlzIGlzIGNhbGxlZCBqdXN0IGJlZm9yZSBhIG5ldyBlcmEgaXMgdHJpZ2dlcmVkLCB0aGUgZWxlY3Rpb24gcHJvY2VzcyBtYXkgbm90jGhhdmUgZW5vdWdoIGJsb2NrcyB0byBnZXQgYSByZXN1bHQuNGZvcmNlX3Vuc3Rha2UIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABSG51bV9zbGFzaGluZ19zcGFuczgBDHUzMgAPIAkBRm9yY2UgYSBjdXJyZW50IHN0YWtlciB0byBiZWNvbWUgY29tcGxldGVseSB1bnN0YWtlZCwgaW1tZWRpYXRlbHkuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC40IyMgUGFyYW1ldGVycwCwLSBgc3Rhc2hgOiBUaGUgc3Rhc2ggYWNjb3VudCB0byBiZSB1bnN0YWtlZC49AS0gYG51bV9zbGFzaGluZ19zcGFuc2A6ICoqRGVwcmVjYXRlZCoqLiBUaGlzIHBhcmFtZXRlciBpcyByZXRhaW5lZCBmb3IgYmFja3dhcmSsY29tcGF0aWJpbGl0eS4gSXQgbm8gbG9uZ2VyIGhhcyBhbnkgZWZmZWN0LlBmb3JjZV9uZXdfZXJhX2Fsd2F5cwAQJAEBRm9yY2UgdGhlcmUgdG8gYmUgYSBuZXcgZXJhIGF0IHRoZSBlbmQgb2Ygc2Vzc2lvbnMgaW5kZWZpbml0ZWx5LgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuSQFJZiB0aGlzIGlzIGNhbGxlZCBqdXN0IGJlZm9yZSBhIG5ldyBlcmEgaXMgdHJpZ2dlcmVkLCB0aGUgZWxlY3Rpb24gcHJvY2VzcyBtYXkgbm90jGhhdmUgZW5vdWdoIGJsb2NrcyB0byBnZXQgYSByZXN1bHQuVGNhbmNlbF9kZWZlcnJlZF9zbGFzaAgBDGVyYTgBIEVyYUluZGV4AAFEdmFsaWRhdG9yX3NsYXNoZXPRBgFwVmVjPChUOjpBY2NvdW50SWQsIFBlcmJpbGwpPgARLAkBQ2FuY2VscyBzY2hlZHVsZWQgc2xhc2hlcyBmb3IgYSBnaXZlbiBlcmEgYmVmb3JlIHRoZXkgYXJlIGFwcGxpZWQuAGEBVGhpcyBmdW5jdGlvbiBhbGxvd3MgYFQ6OkFkbWluT3JpZ2luYCB0byBjYW5jZWwgcGVuZGluZyBzbGFzaGVzIGZvciBzcGVjaWZpZWQgdmFsaWRhdG9yc0kBaW4gYSBnaXZlbiBlcmEuIFRoZSBjYW5jZWxsZWQgc2xhc2hlcyBhcmUgc3RvcmVkIGFuZCB3aWxsIGJlIGNoZWNrZWQgd2hlbiBhcHBseWluZyBzbGFzaGVzLgA0IyMgUGFyYW1ldGVyc1UBLSBgZXJhYDogVGhlIHN0YWtpbmcgZXJhIGZvciB3aGljaCBzbGFzaGVzIHNob3VsZCBiZSBjYW5jZWxsZWQuIFRoaXMgaXMgdGhlIGVyYSB3aGVyZTUBICB0aGUgc2xhc2ggd291bGQgYmUgYXBwbGllZCwgbm90IHRoZSBlcmEgaW4gd2hpY2ggdGhlIG9mZmVuY2Ugd2FzIGNvbW1pdHRlZC5ZAS0gYHZhbGlkYXRvcl9zbGFzaGVzYDogQSBsaXN0IG9mIHZhbGlkYXRvciBzdGFzaCBhY2NvdW50cyBhbmQgdGhlaXIgc2xhc2ggZnJhY3Rpb25zIHRvPCAgYmUgY2FuY2VsbGVkLjhwYXlvdXRfc3Rha2VycwgBPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAABDGVyYTgBIEVyYUluZGV4ABI0GQFQYXkgb3V0IG5leHQgcGFnZSBvZiB0aGUgc3Rha2VycyBiZWhpbmQgYSB2YWxpZGF0b3IgZm9yIHRoZSBnaXZlbiBlcmEuAOgtIGB2YWxpZGF0b3Jfc3Rhc2hgIGlzIHRoZSBzdGFzaCBhY2NvdW50IG9mIHRoZSB2YWxpZGF0b3IuMQEtIGBlcmFgIG1heSBiZSBhbnkgZXJhIGJldHdlZW4gYFtjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGg7IGN1cnJlbnRfZXJhXWAuAFUBVGhlIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4gQW55IGFjY291bnQgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiwgZXZlbiBpZnRpdCBpcyBub3Qgb25lIG9mIHRoZSBzdGFrZXJzLgBJAVRoZSByZXdhcmQgcGF5b3V0IGNvdWxkIGJlIHBhZ2VkIGluIGNhc2UgdGhlcmUgYXJlIHRvbyBtYW55IG5vbWluYXRvcnMgYmFja2luZyB0aGVdAWB2YWxpZGF0b3Jfc3Rhc2hgLiBUaGlzIGNhbGwgd2lsbCBwYXlvdXQgdW5wYWlkIHBhZ2VzIGluIGFuIGFzY2VuZGluZyBvcmRlci4gVG8gY2xhaW0gYbRzcGVjaWZpYyBwYWdlLCB1c2UgYHBheW91dF9zdGFrZXJzX2J5X3BhZ2VgLmAA8ElmIGFsbCBwYWdlcyBhcmUgY2xhaW1lZCwgaXQgcmV0dXJucyBhbiBlcnJvciBgSW52YWxpZFBhZ2VgLhhyZWJvbmQEARR2YWx1ZVEBATBCYWxhbmNlT2Y8VD4AEwzcUmVib25kIGEgcG9ydGlvbiBvZiB0aGUgc3Rhc2ggc2NoZWR1bGVkIHRvIGJlIHVubG9ja2VkLgDUVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSB0aGUgY29udHJvbGxlci4ocmVhcF9zdGFzaAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyABRIXQFSZW1vdmUgYWxsIGRhdGEgc3RydWN0dXJlcyBjb25jZXJuaW5nIGEgc3Rha2VyL3N0YXNoIG9uY2UgaXQgaXMgYXQgYSBzdGF0ZSB3aGVyZSBpdCBjYW4FAWJlIGNvbnNpZGVyZWQgYGR1c3RgIGluIHRoZSBzdGFraW5nIHN5c3RlbS4gVGhlIHJlcXVpcmVtZW50cyBhcmU6AC0BMS4gdGhlIGB0b3RhbF9iYWxhbmNlYCBvZiB0aGUgc3Rhc2ggaXMgYmVsb3cgYG1pbl9jaGlsbGVkX2JvbmRgIG9yIGlzIHplcm8uOQEyLiBvciwgdGhlIGBsZWRnZXIudG90YWxgIG9mIHRoZSBzdGFzaCBpcyBiZWxvdyBgbWluX2NoaWxsZWRfYm9uZGAgb3IgaXMgemVyby4AVQFUaGUgZm9ybWVyIGNhbiBoYXBwZW4gaW4gY2FzZXMgbGlrZSBhIHNsYXNoOyB0aGUgbGF0dGVyIHdoZW4gYSBmdWxseSB1bmJvbmRlZCBhY2NvdW50CQFpcyBzdGlsbCByZWNlaXZpbmcgc3Rha2luZyByZXdhcmRzIGluIGBSZXdhcmREZXN0aW5hdGlvbjo6U3Rha2VkYC4AMQFJdCBjYW4gYmUgY2FsbGVkIGJ5IGFueW9uZSwgYXMgbG9uZyBhcyBgc3Rhc2hgIG1lZXRzIHRoZSBhYm92ZSByZXF1aXJlbWVudHMuANxSZWZ1bmRzIHRoZSB0cmFuc2FjdGlvbiBmZWVzIHVwb24gc3VjY2Vzc2Z1bCBleGVjdXRpb24uADQjIyBQYXJhbWV0ZXJzAKgtIGBzdGFzaGA6IFRoZSBzdGFzaCBhY2NvdW50IHRvIGJlIHJlYXBlZC49AS0gYG51bV9zbGFzaGluZ19zcGFuc2A6ICoqRGVwcmVjYXRlZCoqLiBUaGlzIHBhcmFtZXRlciBpcyByZXRhaW5lZCBmb3IgYmFja3dhcmSsY29tcGF0aWJpbGl0eS4gSXQgbm8gbG9uZ2VyIGhhcyBhbnkgZWZmZWN0LhBraWNrBAEMd2hvyQYBZFZlYzxBY2NvdW50SWRMb29rdXBPZjxUPj4AFSzgUmVtb3ZlIHRoZSBnaXZlbiBub21pbmF0aW9ucyBmcm9tIHRoZSBjYWxsaW5nIHZhbGlkYXRvci4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgBNAS0gYHdob2A6IEEgbGlzdCBvZiBub21pbmF0b3Igc3Rhc2ggYWNjb3VudHMgd2hvIGFyZSBub21pbmF0aW5nIHRoaXMgdmFsaWRhdG9yIHdoaWNowCAgc2hvdWxkIG5vIGxvbmdlciBiZSBub21pbmF0aW5nIHRoaXMgdmFsaWRhdG9yLgBVAU5vdGU6IE1ha2luZyB0aGlzIGNhbGwgb25seSBtYWtlcyBzZW5zZSBpZiB5b3UgZmlyc3Qgc2V0IHRoZSB2YWxpZGF0b3IgcHJlZmVyZW5jZXMgdG94YmxvY2sgYW55IGZ1cnRoZXIgbm9taW5hdGlvbnMuTHNldF9zdGFraW5nX2NvbmZpZ3MgAUhtaW5fbm9taW5hdG9yX2JvbmTZBgFYQ29uZmlnT3A8QmFsYW5jZU9mPFQ+PgABSG1pbl92YWxpZGF0b3JfYm9uZNkGAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFMbWF4X25vbWluYXRvcl9jb3VudN0GATRDb25maWdPcDx1MzI+AAFMbWF4X3ZhbGlkYXRvcl9jb3VudN0GATRDb25maWdPcDx1MzI+AAE8Y2hpbGxfdGhyZXNob2xk4QYBRENvbmZpZ09wPFBlcmNlbnQ+AAE4bWluX2NvbW1pc3Npb27lBgFEQ29uZmlnT3A8UGVyYmlsbD4AAUhtYXhfc3Rha2VkX3Jld2FyZHPhBgFEQ29uZmlnT3A8UGVyY2VudD4AAWBhcmVfbm9taW5hdG9yc19zbGFzaGFibGXpBgE4Q29uZmlnT3A8Ym9vbD4AFkSsVXBkYXRlIHRoZSB2YXJpb3VzIHN0YWtpbmcgY29uZmlndXJhdGlvbnMgLgAlASogYG1pbl9ub21pbmF0b3JfYm9uZGA6IFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIG5lZWRlZCB0byBiZSBhIG5vbWluYXRvci4lASogYG1pbl92YWxpZGF0b3JfYm9uZGA6IFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIG5lZWRlZCB0byBiZSBhIHZhbGlkYXRvci5VASogYG1heF9ub21pbmF0b3JfY291bnRgOiBUaGUgbWF4IG51bWJlciBvZiB1c2VycyB3aG8gY2FuIGJlIGEgbm9taW5hdG9yIGF0IG9uY2UuIFdoZW6YICBzZXQgdG8gYE5vbmVgLCBubyBsaW1pdCBpcyBlbmZvcmNlZC5VASogYG1heF92YWxpZGF0b3JfY291bnRgOiBUaGUgbWF4IG51bWJlciBvZiB1c2VycyB3aG8gY2FuIGJlIGEgdmFsaWRhdG9yIGF0IG9uY2UuIFdoZW6YICBzZXQgdG8gYE5vbmVgLCBubyBsaW1pdCBpcyBlbmZvcmNlZC5ZASogYGNoaWxsX3RocmVzaG9sZGA6IFRoZSByYXRpbyBvZiBgbWF4X25vbWluYXRvcl9jb3VudGAgb3IgYG1heF92YWxpZGF0b3JfY291bnRgIHdoaWNoGQEgIHNob3VsZCBiZSBmaWxsZWQgaW4gb3JkZXIgZm9yIHRoZSBgY2hpbGxfb3RoZXJgIHRyYW5zYWN0aW9uIHRvIHdvcmsuYQEqIGBtaW5fY29tbWlzc2lvbmA6IFRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgZWFjaCB2YWxpZGF0b3JzIG11c3QgbWFpbnRhaW4uVQEgIFRoaXMgaXMgY2hlY2tlZCBvbmx5IHVwb24gY2FsbGluZyBgdmFsaWRhdGVgLiBFeGlzdGluZyB2YWxpZGF0b3JzIGFyZSBub3QgYWZmZWN0ZWQuAMRSdW50aW1lT3JpZ2luIG11c3QgYmUgUm9vdCB0byBjYWxsIHRoaXMgZnVuY3Rpb24uADUBTk9URTogRXhpc3Rpbmcgbm9taW5hdG9ycyBhbmQgdmFsaWRhdG9ycyB3aWxsIG5vdCBiZSBhZmZlY3RlZCBieSB0aGlzIHVwZGF0ZS4RAXRvIGtpY2sgcGVvcGxlIHVuZGVyIHRoZSBuZXcgbGltaXRzLCBgY2hpbGxfb3RoZXJgIHNob3VsZCBiZSBjYWxsZWQuLGNoaWxsX290aGVyBAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAF2hBAURlY2xhcmUgYSBgY29udHJvbGxlcmAgdG8gc3RvcCBwYXJ0aWNpcGF0aW5nIGFzIGVpdGhlciBhIHZhbGlkYXRvciBvciBub21pbmF0b3IuANhFZmZlY3RzIHdpbGwgYmUgZmVsdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGVyYS4AQQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXywgYnV0IGNhbiBiZSBjYWxsZWQgYnkgYW55b25lLgBZAUlmIHRoZSBjYWxsZXIgaXMgdGhlIHNhbWUgYXMgdGhlIGNvbnRyb2xsZXIgYmVpbmcgdGFyZ2V0ZWQsIHRoZW4gbm8gZnVydGhlciBjaGVja3MgYXJl2GVuZm9yY2VkLCBhbmQgdGhpcyBmdW5jdGlvbiBiZWhhdmVzIGp1c3QgbGlrZSBgY2hpbGxgLgBdAUlmIHRoZSBjYWxsZXIgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGNvbnRyb2xsZXIgYmVpbmcgdGFyZ2V0ZWQsIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczBtdXN0IGJlIG1ldDoAHQEqIGBjb250cm9sbGVyYCBtdXN0IGJlbG9uZyB0byBhIG5vbWluYXRvciB3aG8gaGFzIGJlY29tZSBub24tZGVjb2RhYmxlLAAMT3I6AD0BKiBBIGBDaGlsbFRocmVzaG9sZGAgbXVzdCBiZSBzZXQgYW5kIGNoZWNrZWQgd2hpY2ggZGVmaW5lcyBob3cgY2xvc2UgdG8gdGhlIG1heFUBICBub21pbmF0b3JzIG9yIHZhbGlkYXRvcnMgd2UgbXVzdCByZWFjaCBiZWZvcmUgdXNlcnMgY2FuIHN0YXJ0IGNoaWxsaW5nIG9uZS1hbm90aGVyLlkBKiBBIGBNYXhOb21pbmF0b3JDb3VudGAgYW5kIGBNYXhWYWxpZGF0b3JDb3VudGAgbXVzdCBiZSBzZXQgd2hpY2ggaXMgdXNlZCB0byBkZXRlcm1pbmWQICBob3cgY2xvc2Ugd2UgYXJlIHRvIHRoZSB0aHJlc2hvbGQuXQEqIEEgYE1pbk5vbWluYXRvckJvbmRgIGFuZCBgTWluVmFsaWRhdG9yQm9uZGAgbXVzdCBiZSBzZXQgYW5kIGNoZWNrZWQsIHdoaWNoIGRldGVybWluZXNRASAgaWYgdGhpcyBpcyBhIHBlcnNvbiB0aGF0IHNob3VsZCBiZSBjaGlsbGVkIGJlY2F1c2UgdGhleSBoYXZlIG5vdCBtZXQgdGhlIHRocmVzaG9sZEAgIGJvbmQgcmVxdWlyZWQuAFUBVGhpcyBjYW4gYmUgaGVscGZ1bCBpZiBib25kIHJlcXVpcmVtZW50cyBhcmUgdXBkYXRlZCwgYW5kIHdlIG5lZWQgdG8gcmVtb3ZlIG9sZCB1c2Vyc5h3aG8gZG8gbm90IHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLmhmb3JjZV9hcHBseV9taW5fY29tbWlzc2lvbgQBPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAAYEDkBQ2xhbXBzIGEgdmFsaWRhdG9yJ3MgY29tbWlzc2lvbiB0byB0aGUgYFtNaW5Db21taXNzaW9uLCBNYXhDb21taXNzaW9uXWAgcmFuZ2UuADkBTmFtZWQgYGZvcmNlX2FwcGx5X21pbl9jb21taXNzaW9uYCBmb3IgbGVnYWN5IHJlYXNvbnMg4oCUIGl0IGFsc28gZW5mb3JjZXMgdGhljG1heGltdW0uIEFueSBhY2NvdW50IGNhbiBjYWxsIHRoaXMuSHNldF9taW5fY29tbWlzc2lvbgQBDG5ldx0FARxQZXJiaWxsABkQJQFTZXRzIHRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgZWFjaCB2YWxpZGF0b3JzIG11c3QgbWFpbnRhaW4uAFkBVGhpcyBjYWxsIGhhcyBsb3dlciBwcml2aWxlZ2UgcmVxdWlyZW1lbnRzIHRoYW4gYHNldF9zdGFraW5nX2NvbmZpZ2AgYW5kIGNhbiBiZSBjYWxsZWTMYnkgdGhlIGBUOjpBZG1pbk9yaWdpbmAuIFJvb3QgY2FuIGFsd2F5cyBjYWxsIHRoaXMuWHBheW91dF9zdGFrZXJzX2J5X3BhZ2UMATx2YWxpZGF0b3Jfc3Rhc2gEATBUOjpBY2NvdW50SWQAAQxlcmE4ASBFcmFJbmRleAABEHBhZ2U4ARBQYWdlABpUMQFQYXkgb3V0IGEgcGFnZSBvZiB0aGUgc3Rha2VycyBiZWhpbmQgYSB2YWxpZGF0b3IgZm9yIHRoZSBnaXZlbiBlcmEgYW5kIHBhZ2UuAOgtIGB2YWxpZGF0b3Jfc3Rhc2hgIGlzIHRoZSBzdGFzaCBhY2NvdW50IG9mIHRoZSB2YWxpZGF0b3IuMQEtIGBlcmFgIG1heSBiZSBhbnkgZXJhIGJldHdlZW4gYFtjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGg7IGN1cnJlbnRfZXJhXWAuMQEtIGBwYWdlYCBpcyB0aGUgcGFnZSBpbmRleCBvZiBub21pbmF0b3JzIHRvIHBheSBvdXQgd2l0aCB2YWx1ZSBiZXR3ZWVuIDAgYW5ksCAgYG51bV9ub21pbmF0b3JzIC8gVDo6TWF4RXhwb3N1cmVQYWdlU2l6ZWAuAFUBVGhlIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4gQW55IGFjY291bnQgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiwgZXZlbiBpZnRpdCBpcyBub3Qgb25lIG9mIHRoZSBzdGFrZXJzLgA9AUlmIGEgdmFsaWRhdG9yIGhhcyBtb3JlIHRoYW4gW2BDb25maWc6Ok1heEV4cG9zdXJlUGFnZVNpemVgXSBub21pbmF0b3JzIGJhY2tpbmcpAXRoZW0sIHRoZW4gdGhlIGxpc3Qgb2Ygbm9taW5hdG9ycyBpcyBwYWdlZCwgd2l0aCBlYWNoIHBhZ2UgYmVpbmcgY2FwcGVkIGF0VQFbYENvbmZpZzo6TWF4RXhwb3N1cmVQYWdlU2l6ZWBdLiBJZiBhIHZhbGlkYXRvciBoYXMgbW9yZSB0aGFuIG9uZSBwYWdlIG9mIG5vbWluYXRvcnMsSQF0aGUgY2FsbCBuZWVkcyB0byBiZSBtYWRlIGZvciBlYWNoIHBhZ2Ugc2VwYXJhdGVseSBpbiBvcmRlciBmb3IgYWxsIHRoZSBub21pbmF0b3JzVQFiYWNraW5nIGEgdmFsaWRhdG9yIHRvIHJlY2VpdmUgdGhlIHJld2FyZC4gVGhlIG5vbWluYXRvcnMgYXJlIG5vdCBzb3J0ZWQgYWNyb3NzIHBhZ2VzYQFhbmQgc28gaXQgc2hvdWxkIG5vdCBiZSBhc3N1bWVkIHRoZSBoaWdoZXN0IHN0YWtlciB3b3VsZCBiZSBvbiB0aGUgdG9wbW9zdCBwYWdlIGFuZCB2aWNlSQF2ZXJzYS4gSWYgcmV3YXJkcyBhcmUgbm90IGNsYWltZWQgaW4gW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMsIHRoZXkgYXJlIGxvc3QuAEkBVGhlIHZhbGlkYXRvcidzIG93biByZXdhcmQgKGNvbW1pc3Npb24gKyBvd24tc3Rha2Ugc2hhcmUpIGlzIHByb3JhdGVkIGFjcm9zcyBwYWdlc0kBcHJvcG9ydGlvbmFsIHRvIGVhY2ggcGFnZSdzIHN0YWtlLiBUaGUgZnVsbCB2YWxpZGF0b3IgcmV3YXJkIGlzIHRoZSBzdW0gYWNyb3NzIGFsbBhwYWdlcy4wdXBkYXRlX3BheWVlBAEoY29udHJvbGxlcgQBMFQ6OkFjY291bnRJZAAbGOBNaWdyYXRlcyBhbiBhY2NvdW50J3MgYFJld2FyZERlc3RpbmF0aW9uOjpDb250cm9sbGVyYCB0b6RgUmV3YXJkRGVzdGluYXRpb246OkFjY291bnQoY29udHJvbGxlcilgLgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgAxAVRoaXMgd2lsbCB3YWl2ZSB0aGUgdHJhbnNhY3Rpb24gZmVlIGlmIHRoZSBgcGF5ZWVgIGlzIHN1Y2Nlc3NmdWxseSBtaWdyYXRlZC5oZGVwcmVjYXRlX2NvbnRyb2xsZXJfYmF0Y2gEASxjb250cm9sbGVyc+0GAfRCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgVDo6TWF4Q29udHJvbGxlcnNJbkRlcHJlY2F0aW9uQmF0Y2g+ABwcXQFVcGRhdGVzIGEgYmF0Y2ggb2YgY29udHJvbGxlciBhY2NvdW50cyB0byB0aGVpciBjb3JyZXNwb25kaW5nIHN0YXNoIGFjY291bnQgaWYgdGhleSBhcmVhAW5vdCB0aGUgc2FtZS4gSWdub3JlcyBhbnkgY29udHJvbGxlciBhY2NvdW50cyB0aGF0IGRvIG5vdCBleGlzdCwgYW5kIGRvZXMgbm90IG9wZXJhdGUgaWa4dGhlIHN0YXNoIGFuZCBjb250cm9sbGVyIGFyZSBhbHJlYWR5IHRoZSBzYW1lLgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgC0VGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIGBUOjpBZG1pbk9yaWdpbmAuOHJlc3RvcmVfbGVkZ2VyEAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAAUBtYXliZV9jb250cm9sbGVyjQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEsbWF5YmVfdG90YWxJBAFQT3B0aW9uPEJhbGFuY2VPZjxUPj4AATxtYXliZV91bmxvY2tpbmfxBgEVAU9wdGlvbjxCb3VuZGVkVmVjPFVubG9ja0NodW5rPEJhbGFuY2VPZjxUPj4sIFQ6OgpNYXhVbmxvY2tpbmdDaHVua3M+PgAdLAUBUmVzdG9yZXMgdGhlIHN0YXRlIG9mIGEgbGVkZ2VyIHdoaWNoIGlzIGluIGFuIGluY29uc2lzdGVudCBzdGF0ZS4A3FRoZSByZXF1aXJlbWVudHMgdG8gcmVzdG9yZSBhIGxlZGdlciBhcmUgdGhlIGZvbGxvd2luZzpkKiBUaGUgc3Rhc2ggaXMgYm9uZGVkOyBvcg0BKiBUaGUgc3Rhc2ggaXMgbm90IGJvbmRlZCBidXQgaXQgaGFzIGEgc3Rha2luZyBsb2NrIGxlZnQgYmVoaW5kOyBvciUBKiBJZiB0aGUgc3Rhc2ggaGFzIGFuIGFzc29jaWF0ZWQgbGVkZ2VyIGFuZCBpdHMgc3RhdGUgaXMgaW5jb25zaXN0ZW50OyBvch0BKiBJZiB0aGUgbGVkZ2VyIGlzIG5vdCBjb3JydXB0ZWQgKmJ1dCogaXRzIHN0YWtpbmcgbG9jayBpcyBvdXQgb2Ygc3luYy4AYQFUaGUgYG1heWJlXypgIGlucHV0IHBhcmFtZXRlcnMgd2lsbCBvdmVyd3JpdGUgdGhlIGNvcnJlc3BvbmRpbmcgZGF0YSBhbmQgbWV0YWRhdGEgb2YgdGhlWQFsZWRnZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdGFzaC4gSWYgdGhlIGlucHV0IHBhcmFtZXRlcnMgYXJlIG5vdCBzZXQsIHRoZSBsZWRnZXIgd2lsbJBiZSByZXNldCB2YWx1ZXMgZnJvbSBvbi1jaGFpbiBzdGF0ZS5AbWlncmF0ZV9jdXJyZW5jeQQBFHN0YXNoBAEwVDo6QWNjb3VudElkAB4c2E1pZ3JhdGVzIHBlcm1pc3Npb25sZXNzbHkgYSBzdGFzaCBmcm9tIGxvY2tzIHRvIGhvbGRzLgBJAVRoaXMgcmVtb3ZlcyB0aGUgb2xkIGxvY2sgb24gdGhlIHN0YWtlIGFuZCBjcmVhdGVzIGEgaG9sZCBvbiBpdCBhdG9taWNhbGx5LiBJZiBhbGxhAXN0YWtlIGNhbm5vdCBiZSBoZWxkLCB0aGUgYmVzdCBlZmZvcnQgaXMgbWFkZSB0byBob2xkIGFzIG11Y2ggYXMgcG9zc2libGUuIFRoZSByZW1haW5pbmeEc3Rha2UgaXMgcmVtb3ZlZCBmcm9tIHRoZSBsZWRnZXIuAMRUaGUgZmVlIGlzIHdhaXZlZCBpZiB0aGUgbWlncmF0aW9uIGlzIHN1Y2Nlc3NmdWwuLGFwcGx5X3NsYXNoCAEkc2xhc2hfZXJhOAEgRXJhSW5kZXgAASRzbGFzaF9rZXkBBwFwKFQ6OkFjY291bnRJZCwgUGVyYmlsbCwgdTMyKQAfhB0BTWFudWFsbHkgYW5kIHBlcm1pc3Npb25sZXNzbHkgYXBwbGllcyBhIGRlZmVycmVkIHNsYXNoIGZvciBhIGdpdmVuIGVyYS4AXQFOb3JtYWxseSwgc2xhc2hlcyBhcmUgYXV0b21hdGljYWxseSBhcHBsaWVkIHNob3J0bHkgYWZ0ZXIgdGhlIHN0YXJ0IG9mIHRoZSBgc2xhc2hfZXJhYC5ZAVRoZSBhdXRvbWF0aWMgYXBwbGljYXRpb24gb2Ygc2xhc2hlcyBpcyBoYW5kbGVkIGJ5IHRoZSBwYWxsZXQncyBpbnRlcm5hbCBsb2dpYywgYW5kIGl0zHRyaWVzIHRvIGFwcGx5IG9uZSBzbGFzaCBwYWdlIHBlciBibG9jayBvZiB0aGUgZXJhLlUBSWYgZm9yIHNvbWUgcmVhc29uLCBvbmUgZXJhIGlzIG5vdCBlbm91Z2ggZm9yIGFwcGx5aW5nIGFsbCBzbGFzaCBwYWdlcywgdGhlIHJlbWFpbmluZ9xzbGFzaGVzIG5lZWQgdG8gYmUgbWFudWFsbHkgKHBlcm1pc3Npb25sZXNzbHkpIGFwcGxpZWQuAEkBRm9yIGEgZ2l2ZW4gZXJhIHgsIGlmIGF0IGVyYSB4KzEsIHNsYXNoZXMgYXJlIHN0aWxsIHVuYXBwbGllZCwgYWxsIHdpdGhkcmF3YWxzIGdldCEBYmxvY2tlZCwgYW5kIHRoZXNlIG5lZWQgdG8gYmUgbWFudWFsbHkgYXBwbGllZCBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uTQFUaGlzIGZ1bmN0aW9uIGV4aXN0cyBhcyBhICoqZmFsbGJhY2sgbWVjaGFuaXNtKiogZm9yIHRoaXMgZXh0cmVtZSBzaXR1YXRpb24sIGJ1dCB3ZcxuZXZlciBleHBlY3QgdG8gZW5jb3VudGVyIHRoaXMgaW4gbm9ybWFsIHNjZW5hcmlvcy4AYQFUaGUgcGFyYW1ldGVycyBmb3IgdGhpcyBjYWxsIGNhbiBiZSBxdWVyaWVkIGJ5IGxvb2tpbmcgYXQgdGhlIGBVbmFwcGxpZWRTbGFzaGVzYCBzdG9yYWdljGZvciBlcmFzIG9sZGVyIHRoYW4gdGhlIGFjdGl2ZSBlcmEuADQjIyBQYXJhbWV0ZXJzLQEtIGBzbGFzaF9lcmFgOiBUaGUgc3Rha2luZyBlcmEgaW4gd2hpY2ggdGhlIHNsYXNoIHdhcyBvcmlnaW5hbGx5IHNjaGVkdWxlZC4lAS0gYHNsYXNoX2tleWA6IEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzbGFzaCwgcmVwcmVzZW50ZWQgYXMgYSB0dXBsZTr4ICAtIGBzdGFzaGA6IFRoZSBzdGFzaCBhY2NvdW50IG9mIHRoZSB2YWxpZGF0b3IgYmVpbmcgc2xhc2hlZC4FASAgLSBgc2xhc2hfZnJhY3Rpb25gOiBUaGUgZnJhY3Rpb24gb2YgdGhlIHN0YWtlIHRoYXQgd2FzIHNsYXNoZWQuBQEgIC0gYHBhZ2VfaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIGV4cG9zdXJlIHBhZ2UgYmVpbmcgcHJvY2Vzc2VkLgAsIyMgQmVoYXZpb3LoLSBUaGUgZnVuY3Rpb24gaXMgKipwZXJtaXNzaW9ubGVzcyoq4oCUYW55b25lIGNhbiBjYWxsIGl0LvAtIFRoZSBgc2xhc2hfZXJhYCAqKm11c3QgYmUgdGhlIGN1cnJlbnQgZXJhIG9yIGEgcGFzdCBlcmEqKi5sSWYgaXQgaXMgaW4gdGhlIGZ1dHVyZSwgdGhliCAgY2FsbCBmYWlscyB3aXRoIGBFcmFOb3RTdGFydGVkYC7kLSBUaGUgZmVlIGlzIHdhaXZlZCBpZiB0aGUgc2xhc2ggaXMgc3VjY2Vzc2Z1bGx5IGFwcGxpZWQuAFQjIyBGdXR1cmUgSW1wcm92ZW1lbnRhAS0gSW1wbGVtZW50IGFuICoqb2ZmLWNoYWluIHdvcmtlciAoT0NXKSB0YXNrKiogdG8gYXV0b21hdGljYWxseSBhcHBseSBzbGFzaGVzIHdoZW4gdGhlcmW4ICBpcyB1bnVzZWQgYmxvY2sgc3BhY2UsIGltcHJvdmluZyBlZmZpY2llbmN5LjhwcnVuZV9lcmFfc3RlcAQBDGVyYTgBIEVyYUluZGV4ACAsYQFQZXJmb3JtIG9uZSBzdGVwIG9mIGVyYSBwcnVuaW5nIHRvIHByZXZlbnQgUG9WIHNpemUgZXhoYXVzdGlvbiBmcm9tIHVuYm91bmRlZCBkZWxldGlvbnMuADEBVGhpcyBleHRyaW5zaWMgZW5hYmxlcyBwZXJtaXNzaW9ubGVzcyBsYXp5IHBydW5pbmcgb2YgZXJhIGRhdGEgYnkgcGVyZm9ybWluZy0BaW5jcmVtZW50YWwgZGVsZXRpb24gb2Ygc3RvcmFnZSBpdGVtcy4gRWFjaCBjYWxsIHByb2Nlc3NlcyBhIGxpbWl0ZWQgbnVtYmVyJQFvZiBpdGVtcyBiYXNlZCBvbiBhdmFpbGFibGUgYmxvY2sgd2VpZ2h0IHRvIGF2b2lkIGV4Y2VlZGluZyBibG9jayBsaW1pdHMuADUBUmV0dXJucyBgUGF5czo6Tm9gIHdoZW4gd29yayBpcyBwZXJmb3JtZWQgdG8gaW5jZW50aXZpemUgcmVndWxhciBtYWludGVuYW5jZS4FAUFueW9uZSBjYW4gY2FsbCB0aGlzIHRvIGhlbHAgbWFpbnRhaW4gdGhlIGNoYWluJ3Mgc3RvcmFnZSBoZWFsdGguAA0BVGhlIGVyYSBtdXN0IGJlIGVsaWdpYmxlIGZvciBwcnVuaW5nIChvbGRlciB0aGFuIEhpc3RvcnlEZXB0aCArIDEpLjkBQ2hlY2sgYEVyYVBydW5pbmdTdGF0ZWAgc3RvcmFnZSB0byBzZWUgaWYgYW4gZXJhIG5lZWRzIHBydW5pbmcgYmVmb3JlIGNhbGxpbmcuSHNldF9tYXhfY29tbWlzc2lvbgQBDG5ldx0FARxQZXJiaWxsACEM0FNldHMgdGhlIG1heGltdW0gY29tbWlzc2lvbiB0aGF0IHZhbGlkYXRvcnMgY2FuIHNldC4AtFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBgVDo6QWRtaW5PcmlnaW5gLqRzZXRfdmFsaWRhdG9yX3NlbGZfc3Rha2VfaW5jZW50aXZlX2NvbmZpZwwBSG9wdGltdW1fc2VsZl9zdGFrZdkGAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFMaGFyZF9jYXBfc2VsZl9zdGFrZdkGAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFcc2VsZl9zdGFrZV9zbG9wZV9mYWN0b3LlBgFEQ29uZmlnT3A8UGVyYmlsbD4AIhTgQ29uZmlndXJlIHRoZSB2YWxpZGF0b3Igc2VsZi1zdGFrZSBpbmNlbnRpdmUgcGFyYW1ldGVycy4AtFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBgVDo6QWRtaW5PcmlnaW5gLgABAUNoYW5nZXMgdGFrZSBlZmZlY3QgaW4gdGhlIG5leHQgZXJhIHdoZW4gcmV3YXJkcyBhcmUgY2FsY3VsYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvQYIUHBhbGxldF9zdGFraW5nX2FzeW5jRFJld2FyZERlc3RpbmF0aW9uBCRBY2NvdW50SWQBBAEUGFN0YWtlZAAAABRTdGFzaAABAChDb250cm9sbGVyAAIAHEFjY291bnQEAAQBJEFjY291bnRJZAADABBOb25lAAQAAMEGCFBwYWxsZXRfc3Rha2luZ19hc3luYzhWYWxpZGF0b3JQcmVmcwAACAEoY29tbWlzc2lvbsUGARxQZXJiaWxsAAEcYmxvY2tlZFkBARBib29sAADFBgAABh0FAMkGAAACAADNBgw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcmNlbnQAAAQADAEIdTgAANEGAAAC1QYA1QYAAAQIBB0FANkGEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUAVUBAQwQTm9vcAAAAAxTZXQEAFUBAQRUAAEAGFJlbW92ZQACAADdBhBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldCBDb25maWdPcAQEVAE4AQwQTm9vcAAAAAxTZXQEADgBBFQAAQAYUmVtb3ZlAAIAAOEGEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUAc0GAQwQTm9vcAAAAAxTZXQEAM0GAQRUAAEAGFJlbW92ZQACAADlBhBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldCBDb25maWdPcAQEVAEdBQEMEE5vb3AAAAAMU2V0BAAdBQEEVAABABhSZW1vdmUAAgAA6QYQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQgQ29uZmlnT3AEBFQBWQEBDBBOb29wAAAADFNldAQAWQEBBFQAAQAYUmVtb3ZlAAIAAO0GDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAF0BARhWZWM8VD4AAPEGBBhPcHRpb24EBFQB9QYBCBBOb25lAAAAEFNvbWUEAPUGAAABAAD1BgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAfkGBFMAAAQA/QYBGFZlYzxUPgAA+QYMUHBhbGxldF9zdGFraW5nX2FzeW5jGGxlZGdlcixVbmxvY2tDaHVuawQcQmFsYW5jZQFVAQAIARR2YWx1ZVEBARxCYWxhbmNlAAEMZXJhYAEgRXJhSW5kZXgAAP0GAAAC+QYAAQcAAAQMBB0FOAAFBwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchhwYWxsZXQQQ2FsbAQEVAABEFRpbml0aWFsaXplX3Jpbmdfcm9vdHMIATRyaW5nX2V4cG9uZW50CQcBMFJpbmdFeHBvbmVudAABFHJvb3RzDQcBXFJpbmdSb290VXBkYXRlc0JhdGNoPFQ+AAAgRQFTdG9yZXMgdGhlIGluaXRpYWwgcmluZyByb290cyByZWNlaXZlZCBmcm9tIHRoZSBub3RpZmllciB1cG9uIHN1YnNjcmlwdGlvbiBzdGFydC5BAUFjY2VwdHMgbXVsdGktcGFydCBjb250aW51YXRpb25zIChzYW1lIHNlcXVlbmNlKS4gUmVqZWN0cyBjYWxscyB3aXRoIGEgZGlmZmVyZW50UQFzZXF1ZW5jZSB3aGlsZSBzdWJzY3JpcHRpb24gaXMgYEFjdGl2ZWAg4oCUIGEgc3Vic2NyaXB0aW9uIG11c3QgYmUgdGVybWluYXRlZCBmaXJzdC4dAUNhbiBvbmx5IGJlIGNhbGxlZCBieSBub3RpZmllciBYQ00gb3JpZ2luICh2aWEgYEVuc3VyZU5vdGlmaWVyT3JpZ2luYCkuADQjIyBQYXJhbWV0ZXJzgC0gYG9yaWdpbmA6IE5vdGlmaWVyIFhDTSBvcmlnaW4unC0gYHJvb3RzYDogSW5pdGlhbCBiYXRjaCBvZiByaW5nIHJvb3RzLlBwcm9jZXNzX3JpbmdfdXBkYXRlcwQBFGJhdGNoDQcBXFJpbmdSb290VXBkYXRlc0JhdGNoPFQ+AAEU2FByb2Nlc3MgcmluZyByb290cyB1cGRhdGVzIHJlY2VpdmVkIGZyb20gdGhlIG5vdGlmaWVyLgA0IyMgUGFyYW1ldGVyc9QtIGBvcmlnaW5gOiBNdXN0IGJlIHRoZSBYQ00gb3JpZ2luIGZyb20gdGhlIG5vdGlmaWVyLsQtIGBiYXRjaGA6IEJhdGNoIG9mIHJpbmcgcm9vdCB1cGRhdGVzIHRvIHByb2Nlc3MuWHRlcm1pbmF0ZV9zdWJzY3JpcHRpb24AAihwVGVybWluYXRlcyB0aGUgc3Vic2NyaXB0aW9uLgAtAUFjY2VwdHMgZWl0aGVyIG5vdGlmaWVyIG9yaWdpbiAoYEVuc3VyZU5vdGlmaWVyT3JpZ2luYCkgb3IgbG9jYWwgZ292ZXJuYW5jZRUBb3JpZ2luIChgRW5zdXJlVGVybWluYXRpb25PcmlnaW5gKS4gV2hlbiBjYWxsZWQgbG9jYWxseSwgc2VuZHMgYW4gWENNLQF1bnN1YnNjcmliZSBtZXNzYWdlIHRvIHRoZSBub3RpZmllci4gV2hlbiBjYWxsZWQgZnJvbSB0aGUgbm90aWZpZXIgKGUuZy4gb24NAWdvdmVybmFuY2UgdW5zdWJzY3JpYmUpLCBubyBYQ00gaXMgc2VudCBiYWNrLiBJZGVtcG90ZW50IGlmIGFscmVhZHksdGVybWluYXRlZC4ANCMjIFBhcmFtZXRlcnPoLSBgb3JpZ2luYDogTm90aWZpZXIgWENNIG9yaWdpbiBvciByb290L2dvdmVybmFuY2Ugb3JpZ2luLlByZXBsYXlfbWlzc2luZ19yb290cwgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEcaW5kaWNlcyUHAdhCb3VuZGVkVmVjPFJpbmdJbmRleCwgVDo6TWF4TWlzc2luZ1Jvb3RzUGVyQ29sbGVjdGlvbj4AAxT0U2VuZHMgcmVwbGF5IHJlcXVlc3RzIHRvIHRoZSBub3RpZmllciBmb3IgbWlzc2luZyByaW5nIHJvb3RzLgAhAVN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyIGFzIGFuIGF1dGhvcml6ZWQgdHJhbnNhY3Rpb24uIFZhbGlkYXRlcykBdGhhdCB0aGUgc3Vic2NyaXB0aW9uIGlzIGFjdGl2ZSBhbmQgdGhhdCB0aGUgcHJvdmlkZWQgaW5kaWNlcyBhcmUgYWN0dWFsbHmsbWlzc2luZyBiZWZvcmUgc2VuZGluZyBYQ00gcmVwbGF5IHJlcXVlc3RzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4JBxA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eTBSaW5nRXhwb25lbnQAAQwQUjJlOQAJABRSMmUxMAAKABRSMmUxNAAOAAANBww0aW5kaXZfc3VwcG9ydGxtZW1iZXJzX25vdGlmaWVyX3N1YnNjcmliZXJQUmluZ1Jvb3RVcGRhdGVzQmF0Y2gEBFQAABQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEgc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgABLHNvdXJjZV90aW1lKAEMdTY0AAEcdXBkYXRlcxEHAdBCb3VuZGVkVmVjPFJpbmdSb290VXBkYXRlPFQ+LCBUOjpNYXhVcGRhdGVzUGVyQmF0Y2g+AAE8bmV4dF9yaW5nX2luZGV4OAEMdTMyAAARBwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUARUHBFMAAAQAIQcBGFZlYzxUPgAAFQcMNGluZGl2X3N1cHBvcnRsbWVtYmVyc19ub3RpZmllcl9zdWJzY3JpYmVyOFJpbmdSb290VXBkYXRlBARUAAAIAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEIb3AZBwFgUmluZ1Jvb3RPcDxNZW1iZXJzT2Y8VD4+AAAZBww0aW5kaXZfc3VwcG9ydGxtZW1iZXJzX25vdGlmaWVyX3N1YnNjcmliZXIoUmluZ1Jvb3RPcAQEUgEdBwEIFEJ1aWx0CAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEQcm9vdB0HAQRSAAAAHERlbGV0ZWQAAQAAHQcMKHZlcmlmaWFibGUQcmluZ0RNZW1iZXJzQ29tbWl0bWVudAADAAMAAAwAIQcAAAIVBwAlBwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATgEUwAABABBBAEYVmVjPFQ+AAApBwxsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzGHBhbGxldBBDYWxsBARUAAEUTHVuc2V0X2FsaWFzX2FjY291bnQAARCgUmVtb3ZlIHRoZSBhbGlhcyBtYXBwaW5nIGZvciB0aGUgc2lnbmVyLgA1AVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYnkgdGhlIGFjY291bnQgY3VycmVudGx5IGJvdW5kIHRvIGEgcmluZyBhbGlhcy4gVGhlmG1hcHBpbmcgaXMgcmVtb3ZlZCBpbiBib3RoIGRpcmVjdGlvbnMuRHNldF9hbGlhc19hY2NvdW50GAEUcHJvb2YtBwEoUHJvb2ZPZjxUPgABKGNvbGxlY3Rpb24IAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABNHJpbmdfcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEcY29udGV4dAgBHENvbnRleHQAAThwcm9vZl92YWxpZF9hdCgBDHU2NAADMOhMaW5rIGFuIGFjY291bnQgdG8gYSByaW5nIGFsaWFzLCBvbiBwYXltZW50IG9mIGEgUEdBUyBmZWUuADUBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZDsgdGhlIHNpZ25lciBiZWNvbWVzIHRoZSBib3VuZCBhY2NvdW50LiBUaGUgUEdBUyBmZWU5AShbYEFsaWFzRmVlYF0pIGlzIGJ1cm5lZCBmcm9tIHRoZSBzaWduZXIncyBQR0FTIGJhbGFuY2UuIFRoZSBhbGlhcyBtdXN0IHZlcmlmeUEBYWdhaW5zdCB0aGUgc3VwcGxpZWQgYGNvbGxlY3Rpb25gL2ByaW5nX2luZGV4YC9gcmluZ19yZXZpc2lvbmAgaW4gYGNvbnRleHRgLiBUaGW8Y29sbGVjdGlvbiBtdXN0IHN0aWxsIGJlIFBlb3BsZSBvciBQZW9wbGUgTGl0ZS4ASQFJZiBhIGRpZmZlcmVudCBhY2NvdW50IGlzIGFscmVhZHkgYm91bmQgdG8gdGhlIHNhbWUgYWxpYXMgdW5kZXIgdGhpcyBjb250ZXh0LCB0aGF0+G1hcHBpbmcgaXMgZHJvcHBlZCBhbmQgdGhlIHN3YXAgaXMgcGFpZCBmb3IgYnkgdGhlIG5ldyBzaWduZXIuACkBUmUtcHJvdmluZyB0aGUgc2FtZSBhbGlhcyB1bmRlciBhIGZyZXNoZXIgcmluZyByZXZpc2lvbiBzaG91bGQgaW5zdGVhZCB1c2XEW2BQYWxsZXQ6OnJlcHJvdmVfYWxpYXNfYWNjb3VudGBdLCB3aGljaCBpcyBmcmVlLlRyZXByb3ZlX2FsaWFzX2FjY291bnQQARRwcm9vZi0HAShQcm9vZk9mPFQ+AAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABNHJpbmdfcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAE4cHJvb2ZfdmFsaWRfYXQoAQx1NjQABBxhAVJlLXByb3ZlIHRoZSBob2xkZXIncyBhbGlhcyBhZ2FpbnN0IGEgZnJlc2hlciByaW5nIHJldmlzaW9uLCBmcmVlIG9mIGNoYXJnZSBpbiBjYXNlIG9mIGFYc3VjY2Vzc2Z1bCBvcGVyYXRpb25zLgARAVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYW5kIG11c3QgYWxyZWFkeSBob2xkIGEgYWxpYXMgbWFwcGluZy4gVGhlGQFwcm9vZiBpcyB2ZXJpZmllZCBhZ2FpbnN0IHRoZSBzdG9yZWQgY29udGV4dDsgdGhlIHJlc3VsdGluZyBhbGlhcyBtdXN0EQFtYXRjaCB0aGUgc3RvcmVkIGFsaWFzLiBPbmx5IHRoZSBgcmV2aXNpb25gIGFuZCBgcmluZ2AgZmllbGRzIG9mIHRoZREBc3RvcmVkIG1hcHBpbmcgY2hhbmdlOyBjb2xsZWN0aW9uLCBjb250ZXh0LCBhbmQgYWxpYXMgYXJlIHByZXNlcnZlZC40c2V0X2FsaWFzX2ZlZQQBDGZlZVUBATBCYWxhbmNlT2Y8VD4ABRToU2V0IHRoZSBQR0FTIGZlZSBjaGFyZ2VkIGJ5IFtgUGFsbGV0OjpzZXRfYWxpYXNfYWNjb3VudGBdLgAVAU9yaWdpbiBtdXN0IGJlIFtgQ29uZmlnOjpGZWVNYW5hZ2VyT3JpZ2luYF0uIFRoZSBuZXcgZmVlIHJlcGxhY2VzIHRoZfxwcmV2aW91cyB2YWx1ZSAoaWYgYW55KS4gVGhlcmUgaXMgbm8gbWluaW11bSDigJQgc2V0IHRvIHplcm8gdG/kZWZmZWN0aXZlbHkgZGlzYWJsZSB0aGUgYnVybiB3aGlsZSBrZWVwaW5nIHRoZSBwYXRoIG9wZW4uUGNsZWFuX3VwX3N0YWxlX2FsaWFzCAEoY29sbGVjdGlvbggBKElkZW50aWZpZXIAAQhjYfEDATxDb250ZXh0dWFsQWxpYXMAAiSkUmVtb3ZlIGEgc3RhbGUgYWxpYXMgPC0+IGFjY291bnQgbWFwcGluZy4AuEFueW9uZSBjYW4gY2FsbCB0aGlzLiBBIG1hcHBpbmcgaXMgc3RhbGUgd2hlbjpJATEuIFRoZSByaW5nIHJldmlzaW9uIG5vIGxvbmdlciBtYXRjaGVzIHRoZSBhY2NvdW50IGFsaWFzIChpLmUuLCByaW5nIHdhcyByZWJ1aWx0KS64Mi4gVGhlIGFjY291bnQgYWxpYXMgcmVmZXJzIHRvIGEgZGVsZXRlZCByaW5nLgA9AUZvciAoMSksIHRoZSBtYXBwaW5nIGlzIG9ubHkgY29uc2lkZXJlZCBzdGFsZSBhZnRlciBhIGdyYWNlIHBlcmlvZCBoYXMgZWxhcHNlZC4ACQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHJlZnVuZGVkIG9uIHN1Y2Nlc3MgdG8gaW5jZW50aXZpemUgY2xlYW51cC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuLQcMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAAxBwxEaW5kaXZfcGFsbGV0X3BnYXMYcGFsbGV0EENhbGwEBFQAAQwoY2xhaW1fcGdhcwgBKHNsb3RfaW5kZXg4AQx1MzIAARh0YXJnZXQEATBUOjpBY2NvdW50SWQAACSQTWludCBQR0FTIGZvciBhIHZlcmlmaWVkIGNsYWltIHNsb3QuAFUBTXVzdCBiZSBzdWJtaXR0ZWQgd2l0aCB0aGUgW2BBc1BnYXNgXShleHRlbnNpb246OkFzUGdhcykgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uLCB3aGljaFEBdmVyaWZpZXMgdGhlIHJpbmctVlJGIHByb29mIGFuZCBwcm9kdWNlcyBhbiBbYE9yaWdpbjo6Q2xhaW1BbGlhc2BdLiBUaGUgb3V0ZXIgb3JpZ2luVQFtdXN0IGJlIGBOb25lYCAodGhlIGV4dGVuc2lvbiByZXBsYWNlcyBpdCB3aXRoIHRoZSBsb2NhbCBvcmlnaW4pOyBhbnkgb3RoZXIgb3JpZ2luIGlzJHJlamVjdGVkLgBZAWBzbG90X2luZGV4YCBpcyBwYXJ0IG9mIHRoZSBjYWxsIHBheWxvYWQgc28gdGhlIGV4dGVuc2lvbiBjYW4gZGVyaXZlIHRoZSBjbGFpbSBjb250ZXh0UQFvbi1jaGFpbiBhbmQgc28gdGhlIHByb29mIGJpbmRzIHRvIHRoZSByZXF1ZXN0ZWQgc2xvdCB2aWEgdGhlIGluaGVyaXRlZCBpbXBsaWNhdGlvbi5EY3JlYXRlX3BnYXNfYXNzZXQAAQhVAUNyZWF0ZSB0aGUgUEdBUyBhc3NldC4gVGhpcyBpcyBhIHBlcm1pc3Npb25sZXNzIGF1dGhvcml6ZWQgY2FsbCB0aGF0IGNhbiBvbmx5IHN1Y2NlZWSkaWYgdGhlIFBHQVMgYXNzZXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdC5gY2xlYW5fcGdhc19jbGFpbV9yZWNvcmRzCAEkZGF5X2luZGV4OAEMdTMyAAEsZmlyc3RfYWxpYXMIARRBbGlhcwACJORSZW1vdmUgb2xkIFBHQVMgY2xhaW0gcmVjb3JkcyBmb3IgYSBzcGVjaWZpYyBgZGF5X2luZGV4YC4ABQFUaGlzIGlzIGFuIGF1dGhvcml6ZWQgZXh0cmluc2ljIHN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLjUBT25seSByZWNvcmRzIGZyb20gZGF5cyB0aGF0IGhhdmUgZnVsbHkgZWxhcHNlZCAob3V0c2lkZSB0aGUgZ3JhY2Ugd2luZG93KSBjYW4pAWJlIGNsZWFuZWQuIFVwIHRvIFtgQ29uZmlnOjpNYXhQZ2FzQ2xhaW1SZWNvcmRDbGVhbnVwUGVyQ2FsbGBdIGVudHJpZXMgYXJlRHJlbW92ZWQgcGVyIGNhbGwuAGEBYGZpcnN0X2FsaWFzYCBpcyB0aGUgZmlyc3QgYWxpYXMgY3VycmVudGx5IHN0b3JlZCBmb3IgYGRheV9pbmRleGAgYW5kIGlzIGluY2x1ZGVkIGluIHRoZYB0YWdzIGZvciB0cmFuc2FjdGlvbiB1bmlxdWVuZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy41Bww0cGFsbGV0X3Jldml2ZRhwYWxsZXQQQ2FsbAQEVAABNDBldGhfdHJhbnNhY3QEARxwYXlsb2FkGAEcVmVjPHU4PgAAMC0BQSByYXcgRVZNIHRyYW5zYWN0aW9uLCB0eXBpY2FsbHkgZGlzcGF0Y2hlZCBieSBhbiBFdGhlcmV1bSBKU09OLVJQQyBzZXJ2ZXIuADAjIFBhcmFtZXRlcnMA7CogYHBheWxvYWRgOiBUaGUgZW5jb2RlZCBbYGNyYXRlOjpldm06OlRyYW5zYWN0aW9uU2lnbmVkYF0uABgjIE5vdGUAUQFUaGlzIGNhbGwgY2Fubm90IGJlIGRpc3BhdGNoZWQgZGlyZWN0bHk7IGF0dGVtcHRpbmcgdG8gZG8gc28gd2lsbCByZXN1bHQgaW4gYSBmYWlsZWRRAXRyYW5zYWN0aW9uLiBJdCBzZXJ2ZXMgYXMgYSB3cmFwcGVyIGZvciBhbiBFdGhlcmV1bSB0cmFuc2FjdGlvbi4gV2hlbiBzdWJtaXR0ZWQsIHRoZVkBcnVudGltZSBjb252ZXJ0cyBpdCBpbnRvIGEgW2BzcF9ydW50aW1lOjpnZW5lcmljOjpDaGVja2VkRXh0cmluc2ljYF0gYnkgcmVjb3ZlcmluZyB0aGWYc2lnbmVyIGFuZCB2YWxpZGF0aW5nIHRoZSB0cmFuc2FjdGlvbi4QY2FsbBQBEGRlc3Q5BwEQSDE2MAABFHZhbHVlUQEBMEJhbGFuY2VPZjxUPgABMHdlaWdodF9saW1pdBEBARhXZWlnaHQAAVRzdG9yYWdlX2RlcG9zaXRfbGltaXRRAQEwQmFsYW5jZU9mPFQ+AAEQZGF0YRgBHFZlYzx1OD4AAUAFAU1ha2VzIGEgY2FsbCB0byBhbiBhY2NvdW50LCBvcHRpb25hbGx5IHRyYW5zZmVycmluZyBzb21lIGJhbGFuY2UuADAjIFBhcmFtZXRlcnMAqCogYGRlc3RgOiBBZGRyZXNzIG9mIHRoZSBjb250cmFjdCB0byBjYWxsLvwqIGB2YWx1ZWA6IFRoZSBiYWxhbmNlIHRvIHRyYW5zZmVyIGZyb20gdGhlIGBvcmlnaW5gIHRvIGBkZXN0YC4tASogYHdlaWdodF9saW1pdGA6IFRoZSB3ZWlnaHQgbGltaXQgZW5mb3JjZWQgd2hlbiBleGVjdXRpbmcgdGhlIGNvbnN0cnVjdG9yLlUBKiBgc3RvcmFnZV9kZXBvc2l0X2xpbWl0YDogVGhlIG1heGltdW0gYW1vdW50IG9mIGJhbGFuY2UgdGhhdCBjYW4gYmUgY2hhcmdlZCBmcm9tIHRoZaQgIGNhbGxlciB0byBwYXkgZm9yIHRoZSBzdG9yYWdlIGNvbnN1bWVkLsQqIGBkYXRhYDogVGhlIGlucHV0IGRhdGEgdG8gcGFzcyB0byB0aGUgY29udHJhY3QuACUBKiBJZiB0aGUgYWNjb3VudCBpcyBhIHNtYXJ0LWNvbnRyYWN0IGFjY291bnQsIHRoZSBhc3NvY2lhdGVkIGNvZGUgd2lsbCBiZaxleGVjdXRlZCBhbmQgYW55IHZhbHVlIHdpbGwgYmUgdHJhbnNmZXJyZWQuFQEqIElmIHRoZSBhY2NvdW50IGlzIGEgcmVndWxhciBhY2NvdW50LCBhbnkgdmFsdWUgd2lsbCBiZSB0cmFuc2ZlcnJlZC5FASogSWYgbm8gYWNjb3VudCBleGlzdHMgYW5kIHRoZSBjYWxsIHZhbHVlIGlzIG5vdCBsZXNzIHRoYW4gYGV4aXN0ZW50aWFsX2RlcG9zaXRgLBEBYSByZWd1bGFyIGFjY291bnQgd2lsbCBiZSBjcmVhdGVkIGFuZCBhbnkgdmFsdWUgd2lsbCBiZSB0cmFuc2ZlcnJlZC4saW5zdGFudGlhdGUYARR2YWx1ZVEBATBCYWxhbmNlT2Y8VD4AATB3ZWlnaHRfbGltaXQRAQEYV2VpZ2h0AAFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0UQEBMEJhbGFuY2VPZjxUPgABJGNvZGVfaGFzaDwBNHNwX2NvcmU6OkgyNTYAARBkYXRhGAEcVmVjPHU4PgABEHNhbHQ9BwFAT3B0aW9uPFt1ODsgMzJdPgACFPRJbnN0YW50aWF0ZXMgYSBjb250cmFjdCBmcm9tIGEgcHJldmlvdXNseSBkZXBsb3llZCB2bSBiaW5hcnkuADUBVGhpcyBmdW5jdGlvbiBpcyBpZGVudGljYWwgdG8gW2BTZWxmOjppbnN0YW50aWF0ZV93aXRoX2NvZGVgXSBidXQgd2l0aG91dCB0aGVBAWNvZGUgZGVwbG95bWVudCBzdGVwLiBJbnN0ZWFkLCB0aGUgYGNvZGVfaGFzaGAgb2YgYW4gb24tY2hhaW4gZGVwbG95ZWQgdm0gYmluYXJ5RG11c3QgYmUgc3VwcGxpZWQuVGluc3RhbnRpYXRlX3dpdGhfY29kZRgBFHZhbHVlUQEBMEJhbGFuY2VPZjxUPgABMHdlaWdodF9saW1pdBEBARhXZWlnaHQAAVRzdG9yYWdlX2RlcG9zaXRfbGltaXRRAQEwQmFsYW5jZU9mPFQ+AAEQY29kZRgBHFZlYzx1OD4AARBkYXRhGAEcVmVjPHU4PgABEHNhbHQ9BwFAT3B0aW9uPFt1ODsgMzJdPgADbDEBSW5zdGFudGlhdGVzIGEgbmV3IGNvbnRyYWN0IGZyb20gdGhlIHN1cHBsaWVkIGBjb2RlYCBvcHRpb25hbGx5IHRyYW5zZmVycmluZzRzb21lIGJhbGFuY2UuACEBVGhpcyBkaXNwYXRjaGFibGUgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBjYWxsaW5nIFtgU2VsZjo6dXBsb2FkX2NvZGVgXSArPQFbYFNlbGY6Omluc3RhbnRpYXRlYF0uIEJ1bmRsaW5nIHRoZW0gdG9nZXRoZXIgcHJvdmlkZXMgZWZmaWNpZW5jeSBnYWlucy4gUGxlYXNl2GFsc28gY2hlY2sgdGhlIGRvY3VtZW50YXRpb24gb2YgW2BTZWxmOjp1cGxvYWRfY29kZWBdLgAwIyBQYXJhbWV0ZXJzAE0BKiBgdmFsdWVgOiBUaGUgYmFsYW5jZSB0byB0cmFuc2ZlciBmcm9tIHRoZSBgb3JpZ2luYCB0byB0aGUgbmV3bHkgY3JlYXRlZCBjb250cmFjdC4tASogYHdlaWdodF9saW1pdGA6IFRoZSB3ZWlnaHQgbGltaXQgZW5mb3JjZWQgd2hlbiBleGVjdXRpbmcgdGhlIGNvbnN0cnVjdG9yLlUBKiBgc3RvcmFnZV9kZXBvc2l0X2xpbWl0YDogVGhlIG1heGltdW0gYW1vdW50IG9mIGJhbGFuY2UgdGhhdCBjYW4gYmUgY2hhcmdlZC9yZXNlcnZlZMggIGZyb20gdGhlIGNhbGxlciB0byBwYXkgZm9yIHRoZSBzdG9yYWdlIGNvbnN1bWVkLswqIGBjb2RlYDogVGhlIGNvbnRyYWN0IGNvZGUgdG8gZGVwbG95IGluIHJhdyBieXRlcy70KiBgZGF0YWA6IFRoZSBpbnB1dCBkYXRhIHRvIHBhc3MgdG8gdGhlIGNvbnRyYWN0IGNvbnN0cnVjdG9yLj0BKiBgc2FsdGA6IFVzZWQgZm9yIHRoZSBhZGRyZXNzIGRlcml2YXRpb24uIElmIGBTb21lYCBpcyBzdXBwbGllZCB0aGVuIGBDUkVBVEUyYNQJc2VtYW50aWNzIGFyZSB1c2VkLiBJZiBgTm9uZWAgdGhlbiBgQ1JBVEUxYCBpcyB1c2VkLgAAlEluc3RhbnRpYXRpb24gaXMgZXhlY3V0ZWQgYXMgZm9sbG93czoAOQEtIFRoZSBzdXBwbGllZCBgY29kZWAgaXMgZGVwbG95ZWQsIGFuZCBhIGBjb2RlX2hhc2hgIGlzIGNyZWF0ZWQgZm9yIHRoYXQgY29kZS5ZAS0gSWYgdGhlIGBjb2RlX2hhc2hgIGFscmVhZHkgZXhpc3RzIG9uIHRoZSBjaGFpbiB0aGUgdW5kZXJseWluZyBgY29kZWAgd2lsbCBiZSBzaGFyZWQuSQEtIFRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGlzIGNvbXB1dGVkIGJhc2VkIG9uIHRoZSBzZW5kZXIsIGNvZGVfaGFzaCBhbmQgdGhlIHNhbHQuAQEtIFRoZSBzbWFydC1jb250cmFjdCBhY2NvdW50IGlzIGNyZWF0ZWQgYXQgdGhlIGNvbXB1dGVkIGFkZHJlc3MuwC0gVGhlIGB2YWx1ZWAgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIG5ldyBhY2NvdW50LkEBLSBUaGUgYGRlcGxveWAgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIG5ld2x5LWNyZWF0ZWQgYWNjb3VudC5kZXRoX2luc3RhbnRpYXRlX3dpdGhfY29kZSABFHZhbHVlQQcBEFUyNTYAATB3ZWlnaHRfbGltaXQRAQEYV2VpZ2h0AAE0ZXRoX2dhc19saW1pdEEHARBVMjU2AAEQY29kZRgBHFZlYzx1OD4AARBkYXRhGAEcVmVjPHU4PgABTHRyYW5zYWN0aW9uX2VuY29kZWQYARxWZWM8dTg+AAFMZWZmZWN0aXZlX2dhc19wcmljZUEHARBVMjU2AAEsZW5jb2RlZF9sZW44AQx1MzIAClQ9AVNhbWUgYXMgW2BTZWxmOjppbnN0YW50aWF0ZV93aXRoX2NvZGVgXSwgYnV0IGludGVuZGVkIHRvIGJlIGRpc3BhdGNoZWQgKipvbmx5KiroYnkgYW4gRVZNIHRyYW5zYWN0aW9uIHRocm91Z2ggdGhlIEVWTSBjb21wYXRpYmlsaXR5IGxheWVyLgAwIyBQYXJhbWV0ZXJzAE0BKiBgdmFsdWVgOiBUaGUgYmFsYW5jZSB0byB0cmFuc2ZlciBmcm9tIHRoZSBgb3JpZ2luYCB0byB0aGUgbmV3bHkgY3JlYXRlZCBjb250cmFjdC5VASogYHdlaWdodF9saW1pdGA6IFRoZSBnYXMgbGltaXQgdXNlZCB0byBkZXJpdmUgdGhlIHRyYW5zYWN0aW9uIHdlaWdodCBmb3IgdHJhbnNhY3Rpb24kICBwYXltZW50XQEqIGBldGhfZ2FzX2xpbWl0YDogVGhlIEV0aGVyZXVtIGdhcyBsaW1pdCBnb3Zlcm5pbmcgdGhlIHJlc291cmNlIHVzYWdlIG9mIHRoZSBleGVjdXRpb27MKiBgY29kZWA6IFRoZSBjb250cmFjdCBjb2RlIHRvIGRlcGxveSBpbiByYXcgYnl0ZXMu9CogYGRhdGFgOiBUaGUgaW5wdXQgZGF0YSB0byBwYXNzIHRvIHRoZSBjb250cmFjdCBjb25zdHJ1Y3Rvci41ASogYHRyYW5zYWN0aW9uX2VuY29kZWRgOiBUaGUgUkxQIGVuY29kaW5nIG9mIHRoZSBzaWduZWQgRXRoZXJldW0gdHJhbnNhY3Rpb24sXQEgIHJlcHJlc2VudGVkIGFzIFtjcmF0ZTo6ZXZtOjpUcmFuc2FjdGlvblNpZ25lZF0sIHByb3ZpZGVkIGJ5IHRoZSBFdGhlcmV1bSB3YWxsZXQuIFRoaXPUICBpcyB1c2VkIGZvciBidWlsZGluZyB0aGUgRXRoZXJldW0gdHJhbnNhY3Rpb24gcm9vdC7EKiBlZmZlY3RpdmVfZ2FzX3ByaWNlOiB0aGUgcHJpY2Ugb2YgYSB1bml0IG9mIGdhcwUBKiBlbmNvZGVkIGxlbjogdGhlIGJ5dGUgY29kZSBzaXplIG9mIHRoZSBgZXRoX3RyYW5zYWN0YCBleHRyaW5zaWMAOQFDYWxsaW5nIHRoaXMgZGlzcGF0Y2hhYmxlIGVuc3VyZXMgdGhhdCB0aGUgb3JpZ2luJ3Mgbm9uY2UgaXMgYnVtcGVkIG9ubHkgb25jZSxhAXZpYSB0aGUgYENoZWNrTm9uY2VgIHRyYW5zYWN0aW9uIGV4dGVuc2lvbi4gSW4gY29udHJhc3QsIFtgU2VsZjo6aW5zdGFudGlhdGVfd2l0aF9jb2RlYF1NAWFsc28gYnVtcHMgdGhlIG5vbmNlIGFmdGVyIGNvbnRyYWN0IGluc3RhbnRpYXRpb24sIHNpbmNlIGl0IG1heSBiZSBpbnZva2VkIG11bHRpcGxlmHRpbWVzIHdpdGhpbiBhIGJhdGNoIGNhbGwgdHJhbnNhY3Rpb24uIGV0aF9jYWxsIAEQZGVzdDkHARBIMTYwAAEUdmFsdWVBBwEQVTI1NgABMHdlaWdodF9saW1pdBEBARhXZWlnaHQAATRldGhfZ2FzX2xpbWl0QQcBEFUyNTYAARBkYXRhGAEcVmVjPHU4PgABTHRyYW5zYWN0aW9uX2VuY29kZWQYARxWZWM8dTg+AAFMZWZmZWN0aXZlX2dhc19wcmljZUEHARBVMjU2AAEsZW5jb2RlZF9sZW44AQx1MzIAC0D4U2FtZSBhcyBbYFNlbGY6OmNhbGxgXSwgYnV0IGludGVuZGVkIHRvIGJlIGRpc3BhdGNoZWQgKipvbmx5KiroYnkgYW4gRVZNIHRyYW5zYWN0aW9uIHRocm91Z2ggdGhlIEVWTSBjb21wYXRpYmlsaXR5IGxheWVyLgAwIyBQYXJhbWV0ZXJzAOgqIGBkZXN0YDogVGhlIEV0aGVyZXVtIGFkZHJlc3Mgb2YgdGhlIGFjY291bnQgdG8gYmUgY2FsbGVkTQEqIGB2YWx1ZWA6IFRoZSBiYWxhbmNlIHRvIHRyYW5zZmVyIGZyb20gdGhlIGBvcmlnaW5gIHRvIHRoZSBuZXdseSBjcmVhdGVkIGNvbnRyYWN0LlUBKiBgd2VpZ2h0X2xpbWl0YDogVGhlIGdhcyBsaW1pdCB1c2VkIHRvIGRlcml2ZSB0aGUgdHJhbnNhY3Rpb24gd2VpZ2h0IGZvciB0cmFuc2FjdGlvbiQgIHBheW1lbnRdASogYGV0aF9nYXNfbGltaXRgOiBUaGUgRXRoZXJldW0gZ2FzIGxpbWl0IGdvdmVybmluZyB0aGUgcmVzb3VyY2UgdXNhZ2Ugb2YgdGhlIGV4ZWN1dGlvbvQqIGBkYXRhYDogVGhlIGlucHV0IGRhdGEgdG8gcGFzcyB0byB0aGUgY29udHJhY3QgY29uc3RydWN0b3IuNQEqIGB0cmFuc2FjdGlvbl9lbmNvZGVkYDogVGhlIFJMUCBlbmNvZGluZyBvZiB0aGUgc2lnbmVkIEV0aGVyZXVtIHRyYW5zYWN0aW9uLF0BICByZXByZXNlbnRlZCBhcyBbY3JhdGU6OmV2bTo6VHJhbnNhY3Rpb25TaWduZWRdLCBwcm92aWRlZCBieSB0aGUgRXRoZXJldW0gd2FsbGV0LiBUaGlz1CAgaXMgdXNlZCBmb3IgYnVpbGRpbmcgdGhlIEV0aGVyZXVtIHRyYW5zYWN0aW9uIHJvb3QuxCogZWZmZWN0aXZlX2dhc19wcmljZTogdGhlIHByaWNlIG9mIGEgdW5pdCBvZiBnYXMFASogZW5jb2RlZCBsZW46IHRoZSBieXRlIGNvZGUgc2l6ZSBvZiB0aGUgYGV0aF90cmFuc2FjdGAgZXh0cmluc2ljSGV0aF9zdWJzdHJhdGVfY2FsbAgBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAFMdHJhbnNhY3Rpb25fZW5jb2RlZBgBHFZlYzx1OD4ADCj8RXhlY3V0ZXMgYSBTdWJzdHJhdGUgcnVudGltZSBjYWxsIGZyb20gYW4gRXRoZXJldW0gdHJhbnNhY3Rpb24uAEUBVGhpcyBkaXNwYXRjaGFibGUgaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkICoqb25seSoqIHRocm91Z2ggdGhlIEVWTSBjb21wYXRpYmlsaXR5GQFsYXllci4gVGhlIHByb3ZpZGVkIGNhbGwgd2lsbCBiZSBkaXNwYXRjaGVkIHVzaW5nIGBSYXdPcmlnaW46OlNpZ25lZGAuADAjIFBhcmFtZXRlcnMA5CogYG9yaWdpbmA6IE11c3QgYmUgYW4gW2BPcmlnaW46OkV0aFRyYW5zYWN0aW9uYF0gb3JpZ2luLsAqIGBjYWxsYDogVGhlIFN1YnN0cmF0ZSBydW50aW1lIGNhbGwgdG8gZXhlY3V0ZS4ZASogYHRyYW5zYWN0aW9uX2VuY29kZWRgOiBUaGUgUkxQIGVuY29kaW5nIG9mIHRoZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiwsdXBsb2FkX2NvZGUIARBjb2RlGAEcVmVjPHU4PgABVHN0b3JhZ2VfZGVwb3NpdF9saW1pdFEBATBCYWxhbmNlT2Y8VD4ABDjsVXBsb2FkIG5ldyBgY29kZWAgd2l0aG91dCBpbnN0YW50aWF0aW5nIGEgY29udHJhY3QgZnJvbSBpdC4AIQFJZiB0aGUgY29kZSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0IGEgZGVwb3NpdCBpcyByZXNlcnZlZCBmcm9tIHRoZSBjYWxsZXINAVRoZSBzaXplIG9mIHRoZSByZXNlcnZlIGRlcGVuZHMgb24gdGhlIHNpemUgb2YgdGhlIHN1cHBsaWVkIGBjb2RlYC4AGCMgTm90ZQBZAUFueW9uZSBjYW4gaW5zdGFudGlhdGUgYSBjb250cmFjdCBmcm9tIGFueSB1cGxvYWRlZCBjb2RlIGFuZCB0aHVzIHByZXZlbnQgaXRzIHJlbW92YWwuQQFUbyBhdm9pZCB0aGlzIHNpdHVhdGlvbiBhIGNvbnN0cnVjdG9yIGNvdWxkIGVtcGxveSBhY2Nlc3MgY29udHJvbCBzbyB0aGF0IGl0IGNhbjkBb25seSBiZSBpbnN0YW50aWF0ZWQgYnkgcGVybWlzc2lvbmVkIGVudGl0aWVzLiBUaGUgc2FtZSBpcyB0cnVlIHdoZW4gdXBsb2FkaW5noHRocm91Z2ggW2BTZWxmOjppbnN0YW50aWF0ZV93aXRoX2NvZGVgXS4ARQFJZiB0aGUgcmVmY291bnQgb2YgdGhlIGNvZGUgcmVhY2hlcyB6ZXJvIGFmdGVyIHRlcm1pbmF0aW5nIHRoZSBsYXN0IGNvbnRyYWN0IHRoYXT0cmVmZXJlbmNlcyB0aGlzIGNvZGUsIHRoZSBjb2RlIHdpbGwgYmUgcmVtb3ZlZCBhdXRvbWF0aWNhbGx5LixyZW1vdmVfY29kZQQBJGNvZGVfaGFzaDwBNHNwX2NvcmU6OkgyNTYABRA1AVJlbW92ZSB0aGUgY29kZSBzdG9yZWQgdW5kZXIgYGNvZGVfaGFzaGAgYW5kIHJlZnVuZCB0aGUgZGVwb3NpdCB0byBpdHMgb3duZXIuAEUBQSBjb2RlIGNhbiBvbmx5IGJlIHJlbW92ZWQgYnkgaXRzIG9yaWdpbmFsIHVwbG9hZGVyIChpdHMgb3duZXIpIGFuZCBvbmx5IGlmIGl0IGlzZG5vdCB1c2VkIGJ5IGFueSBjb250cmFjdC4gc2V0X2NvZGUIARBkZXN0OQcBEEgxNjAAASRjb2RlX2hhc2g8ATRzcF9jb3JlOjpIMjU2AAYoCQFQcml2aWxlZ2VkIGZ1bmN0aW9uIHRoYXQgY2hhbmdlcyB0aGUgY29kZSBvZiBhbiBleGlzdGluZyBjb250cmFjdC4ARQFUaGlzIHRha2VzIGNhcmUgb2YgdXBkYXRpbmcgcmVmY291bnRzIGFuZCBhbGwgb3RoZXIgbmVjZXNzYXJ5IG9wZXJhdGlvbnMuIFJldHVybnPoYW4gZXJyb3IgaWYgZWl0aGVyIHRoZSBgY29kZV9oYXNoYCBvciBgZGVzdGAgZG8gbm90IGV4aXN0LgAYIyBOb3RlADEBVGhpcyBkb2VzICoqbm90KiogY2hhbmdlIHRoZSBhZGRyZXNzIG9mIHRoZSBjb250cmFjdCBpbiBxdWVzdGlvbi4gVGhpcyBtZWFucz0BdGhhdCB0aGUgY29udHJhY3QgYWRkcmVzcyBpcyBubyBsb25nZXIgZGVyaXZlZCBmcm9tIGl0cyBjb2RlIGhhc2ggYWZ0ZXIgY2FsbGluZ0h0aGlzIGRpc3BhdGNoYWJsZS4sbWFwX2FjY291bnQABxxBAVJlZ2lzdGVyIHRoZSBjYWxsZXJzIGFjY291bnQgaWQgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiBjb250cmFjdCBpbnRlcmFjdGlvbnMuAF0BVGhpcyB3aWxsIGVycm9yIGlmIHRoZSBvcmlnaW4gaXMgYWxyZWFkeSBtYXBwZWQgb3IgaXMgYSBldGggbmF0aXZlIGBBZGRyZXNzMjBgLiBJdCB3aWxsHQF0YWtlIGEgZGVwb3NpdCB0aGF0IGNhbiBiZSByZWxlYXNlZCBieSBjYWxsaW5nIFtgU2VsZjo6dW5tYXBfYWNjb3VudGBdLgA5AU5vb3Agd2hlbiBbYENvbmZpZzo6QXV0b01hcGBdIGlzIGVuYWJsZWQsIGFzIGFjY291bnRzIGFyZSBhdXRvbWF0aWNhbGx5IG1hcHBlZHxvbiBjcmVhdGlvbiB2aWEgW2BBdXRvTWFwcGVyYF0uNHVubWFwX2FjY291bnQACBz8VW5yZWdpc3RlciB0aGUgY2FsbGVycyBhY2NvdW50IGlkIGluIG9yZGVyIHRvIGZyZWUgdGhlIGRlcG9zaXQuAEEBVGhlcmUgaXMgbm8gcmVhc29uIHRvIGV2ZXIgY2FsbCB0aGlzIGZ1bmN0aW9uIG90aGVyIHRoYW4gZnJlZWluZyB1cCB0aGUgZGVwb3NpdC74VGhpcyBpcyBvbmx5IHVzZWZ1bCB3aGVuIHRoZSBhY2NvdW50IHNob3VsZCBubyBsb25nZXIgYmUgdXNlZC4AUQFEaXNhYmxlZCB3aGVuIFtgQ29uZmlnOjpBdXRvTWFwYF0gaXMgZW5hYmxlZCwgYXMgYWNjb3VudHMgYXJlIGF1dG9tYXRpY2FsbHkgdW5tYXBwZWRsb24ga2lsbCB2aWEgW2BBdXRvTWFwcGVyYF0ucGRpc3BhdGNoX2FzX2ZhbGxiYWNrX2FjY291bnQEARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAJFB0BRGlzcGF0Y2ggYW4gYGNhbGxgIHdpdGggdGhlIG9yaWdpbiBzZXQgdG8gdGhlIGNhbGxlcnMgZmFsbGJhY2sgYWRkcmVzcy4AYQFFdmVyeSBgQWNjb3VudElkMzJgIGNhbiBjb250cm9sIGl0cyBjb3JyZXNwb25kaW5nIGZhbGxiYWNrIGFjY291bnQuIFRoZSBmYWxsYmFjayBhY2NvdW50QQFpcyB0aGUgYEFjY291bnRJZDIwYCB3aXRoIHRoZSBsYXN0IDEyIGJ5dGVzIHNldCB0byBgMHhFRWAuIFRoaXMgaXMgZXNzZW50aWFsbHkgYVUBcmVjb3ZlcnkgZnVuY3Rpb24gaW4gY2FzZSBhbiBgQWNjb3VudElkMjBgIHdhcyB1c2VkIHdpdGhvdXQgY3JlYXRpbmcgYSBtYXBwaW5nIGZpcnN0LgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy45Bwg8cHJpbWl0aXZlX3R5cGVzEEgxNjAAAAQAHAEgW3U4OyAyMF0AAD0HBBhPcHRpb24EBFQBCAEIEE5vbmUAAAAQU29tZQQACAAAAQAAQQcIPHByaW1pdGl2ZV90eXBlcxBVMjU2AAAEAEUHASBbdTY0OyA0XQAARQcAAAMEAAAAKABJBwxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkYcGFsbGV0EENhbGwEBFQAARQwcmVzZXJ2ZV9uYW1lGAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkAAFMY2FuZGlkYXRlX3NpZ25hdHVyZaEEAVxUOjpBdHRlc3RhdGlvblNpZ25hdHVyZQABKGxpdGVfbGFiZWxNBwEkQmFzZUxhYmVsAAEgY2hhdF9rZXlRBwEcQ2hhdEtleQABTHJlc2VydmVkX2Jhc2VfbGFiZWxVBwFET3B0aW9uPEJhc2VMYWJlbD4AASRzaWduZWRfYXQoAQx1NjQAAGxJAVJlc2VydmVzIGEgbGl0ZS1wZXJzb24gbGFiZWwgb24gYERvdG5zUG9wQ29udHJvbGxlcmAgKHZpYSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYClJAWZvciBhIExpdGUgUGVyc29uLCBhbmQgb3B0aW9uYWxseSBlbnF1ZXVlcyBhIHJlc2VydmF0aW9uIGZvciBhIGJhc2UgbGFiZWwgdGhlIHVzZXKgaW50ZW5kcyB0byBjbGFpbSBhcyBhIEZ1bGwgUGVyc29uIGxhdGVyLgANAVRoZSBjYWxsZXIgbXVzdCBiZSBhbiBhdHRlc3RlciB3aXRoIGF2YWlsYWJsZSBhbGxvd2FuY2UuIFRoZSB1c2VyJ3MpAXNpZ25hdHVyZSBwcm92ZXMgdGhlaXIgY29uc2VudCB0byB0aGUgcmVzZXJ2YXRpb24gd2l0aCB0aGlzIHNwZWNpZmljIGxhYmVsNGFuZCBhdHRlc3Rlci4AMCMgUGFyYW1ldGVyc10BLSBgY2FuZGlkYXRlYDogdGhlIExpdGUgUGVyc29uJ3MgYWNjb3VudCBmb3Igd2hvbSB0aGUgbGFiZWwgaXMgYmVpbmcgcmVzZXJ2ZWQuIEFsc28gdGhliCAgc2lnbmVyIG9mIGBjYW5kaWRhdGVfc2lnbmF0dXJlYC70LSBgY2FuZGlkYXRlX3NpZ25hdHVyZWA6IHNpZ25hdHVyZSBvdmVyIHRoZSBieXRlcyByZXR1cm5lZCBieUUBICBbYFBhbGxldDo6Y29uc3RydWN0X3Jlc2VydmF0aW9uX21lc3NhZ2VgXSDigJQgYSBTQ0FMRS1lbmNvZGVkIHR1cGxlIGJpbmRpbmcgdGhlWQEgIGF0dGVzdGVyLCBjYW5kaWRhdGUsIHRoZSBjYW5kaWRhdGUncyBjaG9zZW4gKmJhc2UqIHVzZXJuYW1lLCBhbmQgY2hhdCBrZXkuIFRoZSBkaWdpdGEBICBzdWZmaXggb2YgYGxpdGVfbGFiZWxgIGlzICoqbm90KiogcGFydCBvZiB0aGUgc2lnbmVkIG1lc3NhZ2UgKHRoZSBkaWdpdHMgYXJlIGFsbG9jYXRlZEkBICBzZXJ2ZXItc2lkZSBhZnRlciB0aGUgY2FuZGlkYXRlIHNpZ25zLCBzbyB0aGUgY2FuZGlkYXRlIGNhbm5vdCBjb21taXQgdG8gdGhlbSBhdEAgIHNpZ25pbmcgdGltZSkuNQEtIGBsaXRlX2xhYmVsYDogdGhlIGxpdGUtcGVyc29uIGxhYmVsLiBNdXN0IGJlIGA8ZG5zLXN0ZW0+LjwyKyBkaWdpdHM+YCAoZS5nLkkBICBgYWxpY2UuNDJgKSwgbWF0Y2hpbmcgYFN0cmluZ1V0aWxzLmlzTGl0ZVBlcnNvbkxhYmVsYCBpbiB0aGUgY29udHJhY3RzLiBPbmx5IHRoZVkBICBgPGRucy1zdGVtPmAgcG9ydGlvbiBlbnRlcnMgdGhlIHNpZ25lZCBtZXNzYWdlOyB0aGUgZGlnaXRzIHJpZGUgYWxvbmcgYXMgYW4gdW5zaWduZWQRASAgZXh0cmluc2ljIGFyZ3VtZW50IHVzZWQgZm9yIHRoZSBjb250cmFjdCBjYWxsZGF0YSBhbmQgc3RvcmFnZSBrZXku0C0gYGNoYXRfa2V5YDogNjUtYnl0ZSBwdWJsaWMga2V5IHVzZWQgZm9yIEVDREggY2hhdC5ZAS0gYHJlc2VydmVkX2Jhc2VfbGFiZWxgOiBvcHRpb25hbCBiYXNlIGxhYmVsIHJlc2VydmVkIGZvciB0aGUgY2FuZGlkYXRlIHRvIGxhdGVyIGNsYWlt+CAgYXMgYSBGdWxsIFBlcnNvbi4gTXVzdCBiZSBhIHNpbmdsZSBETlMgbGFiZWwgKGUuZy4gYGFsaWNlYCkuWQEtIGBzaWduZWRfYXRgOiBVbml4LXRpbWUgc2Vjb25kIGF0IHdoaWNoIHRoZSBjYW5kaWRhdGUgc2lnbmVkIHRoZSByZXNlcnZhdGlvbiBtZXNzYWdlLlkBICBUaGUgc2lnbmF0dXJlIGlzIGFjY2VwdGVkIG9ubHkgaWYgYHNpZ25lZF9hdCA8PSBub3cgKyBNYXhGdXR1cmVTa2V3U2Vjb25kc2AgYW5kIGBub3dJASAgPD0gc2lnbmVkX2F0ICsgTWF4VmFsaWRpdHlTZWNvbmRzYCwgd2hlcmUgYG5vd2AgY29tZXMgZnJvbSBbYENvbmZpZzo6VW5peFRpbWVgXS40cmVnaXN0ZXJfbmFtZQwBDHdobwQBMFQ6OkFjY291bnRJZAABFGxhYmVsTQcBJEJhc2VMYWJlbAABEGxpbmtZBwEQTGluawABSE0BUmVnaXN0ZXJzIGEgZnVsbC1wZXJzb24gbGFiZWwgb24gYERvdG5zUG9wQ29udHJvbGxlcmAgKHZpYSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYCloZm9yIGEgZnVsbHkgcHJvdmVuIHBlcnNvbi4AXQFUaGUgb3JpZ2luIG11c3QgYmUgW2BPcmlnaW46OlBlcnNvblJlZ2lzdHJhdGlvbmBdLCBwcm9kdWNlZCBieSBbYEFzRG90bnNHYXRld2F5YF0gYWZ0ZXJFAWl0IHZlcmlmaWVzIHRoZSByaW5nIG1lbWJlcnNoaXAgcHJvb2YgYW5kIHRoZSBvZmYtY2hhaW4gc2lnbmF0dXJlIGZyb20gYHdob2AuIEFsbPxhdXRoZW50aWNhdGlvbiwgZm9ybWF0IGFuZCByZXBsYXkgY2hlY2tzIGxpdmUgaW4gdGhlIGV4dGVuc2lvbi4AMCMgUGFyYW1ldGVyc00BLSBgd2hvYDogdGhlIGFjY291bnQgdGhhdCBvd25zIHRoZSBmdWxsLXBlcnNvbiBsYWJlbDsgaXRzIEVWTS1tYXBwZWQgYWRkcmVzcyBpcyB0aGU5ASAgcmVjaXBpZW50IG9uIHRoZSBgRG90bnNQb3BDb250cm9sbGVyYCBjb250cmFjdC4gTXVzdCBtYXRjaCB0aGUgYHdob2AgYWxyZWFkeZggIGF1dGhlbnRpY2F0ZWQgYnkgW2BBc0RvdG5zR2F0ZXdheWBdLlUBLSBgbGFiZWxgOiB0aGUgZnVsbC1wZXJzb24gbGFiZWwuIE11c3QgYmUgYSBzaW5nbGUgRE5TIGxhYmVsIChlLmcuIGBhbGljZWApLCBtYXRjaGluZ7wgIGBTdHJpbmdVdGlscy5pc1NpbmdsZUxhYmVsYCBpbiB0aGUgY29udHJhY3RzLkEBLSBgbGlua2A6IGhvdyB0aGUgZnVsbC1wZXJzb24gbGFiZWwgcmVsYXRlcyB0byBhIHByZS1leGlzdGluZyBsaXRlLXBlcnNvbiBsYWJlbDpVASAgLSBgTGluazo6TGl0ZVVzZXJuYW1lKGxpdGVfbGFiZWwpYCDigJQgbGlua3MgdG8gYW4gZXhpc3RpbmcgbGl0ZS1wZXJzb24gbGFiZWwgKG11c3RdASAgICBtYXRjaCB0aGUgbGl0ZSBmb3JtYXQgYDxkbnMtc3RlbT4uPDIrIGRpZ2l0cz5gKTsgdGhlIGNoYXQga2V5IGlzIGluaGVyaXRlZCBmcm9tIHRoZTwgICAgbGl0ZSBlbnRyeS5JASAgLSBgTGluazo6Tm9uZShjaGF0X2tleSlgIOKAlCBzdGFuZGFsb25lIHJlZ2lzdHJhdGlvbiB3aXRoIGEgZnJlc2ggRUNESCBjaGF0IGtleS54aW5jcmVhc2VfYXR0ZXN0YXRpb25fYWxsb3dhbmNlCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFGNvdW50OAEMdTMyAAIM0EdyYW50cyBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgdG8gYW4gYXR0ZXN0ZXIgYWNjb3VudC4AxFRoZSBvcmlnaW4gbXVzdCBiZSBgQXR0ZXN0YXRpb25BbGxvd2FuY2VNYW5hZ2VyYC5sY2xlYXJfYXR0ZXN0YXRpb25fYWxsb3dhbmNlBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAADDORDbGVhcnMgYWxsIGF0dGVzdGF0aW9uIGFsbG93YW5jZSBmb3IgYW4gYXR0ZXN0ZXIgYWNjb3VudC4AxFRoZSBvcmlnaW4gbXVzdCBiZSBgQXR0ZXN0YXRpb25BbGxvd2FuY2VNYW5hZ2VyYC5Yc2V0X2Rpc3BhdGNoZXJfYWRkcmVzcwQBHGFkZHJlc3M5BwEQSDE2MAAEDMhTZXRzIHRoZSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYCBjb250cmFjdCBhZGRyZXNzLgApAVRoZSBvcmlnaW4gbXVzdCBiZSBgRGlzcGF0Y2hlckFkZHJlc3NNYW5hZ2VyYC4gT3ZlcndyaXRlcyBhbnkgcHJpb3IgdmFsdWUuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLk0HDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlcyRCYXNlTGFiZWwAAAQAwQMBcEJvdW5kZWRWZWM8dTgsIENvbnN0VTMyPDMyPj4AAFEHDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlcxxDaGF0S2V5AAAEAHUBASBbdTg7IDY1XQAAVQcEGE9wdGlvbgQEVAFNBwEIEE5vbmUAAAAQU29tZQQATQcAAAEAAFkHDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlcxBMaW5rAAEIMExpdGVVc2VybmFtZQQATQcBJEJhc2VMYWJlbAAAABBOb25lBABRBwEcQ2hhdEtleQABAABdBwx8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbhhwYWxsZXQQQ2FsbAQEVAABBCxjbGVhbl91c2FnZQQBGGVudGl0eWEHAUxUOjpSZXN0cmljdGVkRW50aXR5AAEISQFBbGxvdyB0byBjbGVhbiB1c2FnZSBhc3NvY2lhdGVkIHdpdGggYW4gZW50aXR5IHdoZW4gaXQgaXMgemVybyBvciB3aGVuIHRoZXJlIGlzIG5vkGxvbmdlciBhbnkgYWxsb3dhbmNlIGZvciB0aGUgb3JpZ2luLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5hBwhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZUBSZXN0cmljdGVkRW50aXR5AAEEXERvdG5zUGVyc29uUmVnaXN0cmF0aW9uBAAIAXBpbmRpdl9zdXBwb3J0Ojp0cmFpdHM6OkFsaWFzAAAAAGUHDCxwYWxsZXRfc3VkbxhwYWxsZXQQQ2FsbAQEVAABFBBzdWRvBAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAAQ1AUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBSb290YCBvcmlnaW4uVHN1ZG9fdW5jaGVja2VkX3dlaWdodAgBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEYd2VpZ2h0EQEBGFdlaWdodAABFDUBQXV0aGVudGljYXRlcyB0aGUgc3VkbyBrZXkgYW5kIGRpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYFJvb3RgIG9yaWdpbi4tAVRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIHdlaWdodCBvZiB0aGUgY2FsbCwgYW5kIGluc3RlYWQgYWxsb3dzIHRoZbBTdWRvIHVzZXIgdG8gc3BlY2lmeSB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uHHNldF9rZXkEAQxuZXcAAVBBY2NvdW50SWRMb29rdXBPZjxUPgACCF0BQXV0aGVudGljYXRlcyB0aGUgY3VycmVudCBzdWRvIGtleSBhbmQgc2V0cyB0aGUgZ2l2ZW4gQWNjb3VudElkIChgbmV3YCkgYXMgdGhlIG5ldyBzdWRvEGtleS4cc3Vkb19hcwgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAxBNAUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBTaWduZWRgIG9yaWdpbiBmcm9tQGEgZ2l2ZW4gYWNjb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLihyZW1vdmVfa2V5AAQMhFBlcm1hbmVudGx5IHJlbW92ZXMgdGhlIHN1ZG8ga2V5LgBsKipUaGlzIGNhbm5vdCBiZSB1bi1kb25lLioqBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLmkHDIBpbmRpdl9wYWxsZXRfdmFsdWVfdHJhbnNmZXJfYXV0aCRleHRlbnNpb25YQXV0aG9yaXplVmFsdWVUcmFuc2ZlcggEVAAEUAAABABtBwGMT3B0aW9uPHNwX2NvcmU6OmVkMjU1MTk6OlNpZ25hdHVyZT4AAG0HBBhPcHRpb24EBFQBpQQBCBBOb25lAAAAEFNvbWUEAKUEAAABAABxBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM4YXV0aG9yaXplX2NhbGw0QXV0aG9yaXplQ2FsbAQEVAAAAAB1BwxEaW5kaXZfcGFsbGV0X3BnYXMkZXh0ZW5zaW9uGEFzUGdhcwQEVAAABAB5BwFUT3B0aW9uPEFzUGdhc0luZm88VD4+AAB5BwQYT3B0aW9uBARUAX0HAQgQTm9uZQAAABBTb21lBAB9BwAAAQAAfQcMRGluZGl2X3BhbGxldF9wZ2FzJGV4dGVuc2lvbihBc1BnYXNJbmZvBARUAAEEFENsYWltFAEUcHJvb2YtBwEoUHJvb2ZPZjxUPgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAAShjb2xsZWN0aW9u/QMBOFBnYXNDb2xsZWN0aW9uAAEMZGF5OAEMdTMyAAAAAIEHDGxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHMkZXh0ZW5zaW9uLEFzUmluZ0FsaWFzBARUAAAEAIUHAWhPcHRpb248QXNSaW5nQWxpYXNJbmZvPFQ+PgAAhQcEGE9wdGlvbgQEVAGJBwEIEE5vbmUAAAAQU29tZQQAiQcAAAEAAIkHDGxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHMkZXh0ZW5zaW9uPEFzUmluZ0FsaWFzSW5mbwQEVAABBCxXaXRoQWNjb3VudAQAOAEgVDo6Tm9uY2UAAAAAjQcMaGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5JGV4dGVuc2lvbjhBc0RvdG5zR2F0ZXdheQQEVAAABACRBwF0T3B0aW9uPEFzRG90bnNHYXRld2F5SW5mbzxUPj4AAJEHBBhPcHRpb24EBFQBlQcBCBBOb25lAAAAEFNvbWUEAJUHAAABAACVBwxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkkZXh0ZW5zaW9uSEFzRG90bnNHYXRld2F5SW5mbwQEVAABBEBSZWdpc3RlckZ1bGxOYW1lDAEUcHJvb2YtBwEoUHJvb2ZPZjxUPgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAASRzaWduYXR1cmWhBAFcVDo6QXR0ZXN0YXRpb25TaWduYXR1cmUAAAAAmQcIfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb244UmVzdHJpY3RPcmlnaW4EBFQAAAQAWQEBEGJvb2wAAJ0HEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc1RjaGVja19ub25femVyb19zZW5kZXJIQ2hlY2tOb25aZXJvU2VuZGVyBARUAAAAAKEHEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc0hjaGVja19zcGVjX3ZlcnNpb25AQ2hlY2tTcGVjVmVyc2lvbgQEVAAAAAClBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNAY2hlY2tfdHhfdmVyc2lvbjhDaGVja1R4VmVyc2lvbgQEVAAAAACpBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM0Y2hlY2tfZ2VuZXNpczBDaGVja0dlbmVzaXMEBFQAAAAArQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zPGNoZWNrX21vcnRhbGl0eThDaGVja01vcnRhbGl0eQQEVAAABACxBwEMRXJhAACxBxAoc3BfcnVudGltZRxnZW5lcmljDGVyYQxFcmEAAQEEIEltbW9ydGFsAAAAHE1vcnRhbDEEAAwAAAEAHE1vcnRhbDIEAAwAAAIAHE1vcnRhbDMEAAwAAAMAHE1vcnRhbDQEAAwAAAQAHE1vcnRhbDUEAAwAAAUAHE1vcnRhbDYEAAwAAAYAHE1vcnRhbDcEAAwAAAcAHE1vcnRhbDgEAAwAAAgAHE1vcnRhbDkEAAwAAAkAIE1vcnRhbDEwBAAMAAAKACBNb3J0YWwxMQQADAAACwAgTW9ydGFsMTIEAAwAAAwAIE1vcnRhbDEzBAAMAAANACBNb3J0YWwxNAQADAAADgAgTW9ydGFsMTUEAAwAAA8AIE1vcnRhbDE2BAAMAAAQACBNb3J0YWwxNwQADAAAEQAgTW9ydGFsMTgEAAwAABIAIE1vcnRhbDE5BAAMAAATACBNb3J0YWwyMAQADAAAFAAgTW9ydGFsMjEEAAwAABUAIE1vcnRhbDIyBAAMAAAWACBNb3J0YWwyMwQADAAAFwAgTW9ydGFsMjQEAAwAABgAIE1vcnRhbDI1BAAMAAAZACBNb3J0YWwyNgQADAAAGgAgTW9ydGFsMjcEAAwAABsAIE1vcnRhbDI4BAAMAAAcACBNb3J0YWwyOQQADAAAHQAgTW9ydGFsMzAEAAwAAB4AIE1vcnRhbDMxBAAMAAAfACBNb3J0YWwzMgQADAAAIAAgTW9ydGFsMzMEAAwAACEAIE1vcnRhbDM0BAAMAAAiACBNb3J0YWwzNQQADAAAIwAgTW9ydGFsMzYEAAwAACQAIE1vcnRhbDM3BAAMAAAlACBNb3J0YWwzOAQADAAAJgAgTW9ydGFsMzkEAAwAACcAIE1vcnRhbDQwBAAMAAAoACBNb3J0YWw0MQQADAAAKQAgTW9ydGFsNDIEAAwAACoAIE1vcnRhbDQzBAAMAAArACBNb3J0YWw0NAQADAAALAAgTW9ydGFsNDUEAAwAAC0AIE1vcnRhbDQ2BAAMAAAuACBNb3J0YWw0NwQADAAALwAgTW9ydGFsNDgEAAwAADAAIE1vcnRhbDQ5BAAMAAAxACBNb3J0YWw1MAQADAAAMgAgTW9ydGFsNTEEAAwAADMAIE1vcnRhbDUyBAAMAAA0ACBNb3J0YWw1MwQADAAANQAgTW9ydGFsNTQEAAwAADYAIE1vcnRhbDU1BAAMAAA3ACBNb3J0YWw1NgQADAAAOAAgTW9ydGFsNTcEAAwAADkAIE1vcnRhbDU4BAAMAAA6ACBNb3J0YWw1OQQADAAAOwAgTW9ydGFsNjAEAAwAADwAIE1vcnRhbDYxBAAMAAA9ACBNb3J0YWw2MgQADAAAPgAgTW9ydGFsNjMEAAwAAD8AIE1vcnRhbDY0BAAMAABAACBNb3J0YWw2NQQADAAAQQAgTW9ydGFsNjYEAAwAAEIAIE1vcnRhbDY3BAAMAABDACBNb3J0YWw2OAQADAAARAAgTW9ydGFsNjkEAAwAAEUAIE1vcnRhbDcwBAAMAABGACBNb3J0YWw3MQQADAAARwAgTW9ydGFsNzIEAAwAAEgAIE1vcnRhbDczBAAMAABJACBNb3J0YWw3NAQADAAASgAgTW9ydGFsNzUEAAwAAEsAIE1vcnRhbDc2BAAMAABMACBNb3J0YWw3NwQADAAATQAgTW9ydGFsNzgEAAwAAE4AIE1vcnRhbDc5BAAMAABPACBNb3J0YWw4MAQADAAAUAAgTW9ydGFsODEEAAwAAFEAIE1vcnRhbDgyBAAMAABSACBNb3J0YWw4MwQADAAAUwAgTW9ydGFsODQEAAwAAFQAIE1vcnRhbDg1BAAMAABVACBNb3J0YWw4NgQADAAAVgAgTW9ydGFsODcEAAwAAFcAIE1vcnRhbDg4BAAMAABYACBNb3J0YWw4OQQADAAAWQAgTW9ydGFsOTAEAAwAAFoAIE1vcnRhbDkxBAAMAABbACBNb3J0YWw5MgQADAAAXAAgTW9ydGFsOTMEAAwAAF0AIE1vcnRhbDk0BAAMAABeACBNb3J0YWw5NQQADAAAXwAgTW9ydGFsOTYEAAwAAGAAIE1vcnRhbDk3BAAMAABhACBNb3J0YWw5OAQADAAAYgAgTW9ydGFsOTkEAAwAAGMAJE1vcnRhbDEwMAQADAAAZAAkTW9ydGFsMTAxBAAMAABlACRNb3J0YWwxMDIEAAwAAGYAJE1vcnRhbDEwMwQADAAAZwAkTW9ydGFsMTA0BAAMAABoACRNb3J0YWwxMDUEAAwAAGkAJE1vcnRhbDEwNgQADAAAagAkTW9ydGFsMTA3BAAMAABrACRNb3J0YWwxMDgEAAwAAGwAJE1vcnRhbDEwOQQADAAAbQAkTW9ydGFsMTEwBAAMAABuACRNb3J0YWwxMTEEAAwAAG8AJE1vcnRhbDExMgQADAAAcAAkTW9ydGFsMTEzBAAMAABxACRNb3J0YWwxMTQEAAwAAHIAJE1vcnRhbDExNQQADAAAcwAkTW9ydGFsMTE2BAAMAAB0ACRNb3J0YWwxMTcEAAwAAHUAJE1vcnRhbDExOAQADAAAdgAkTW9ydGFsMTE5BAAMAAB3ACRNb3J0YWwxMjAEAAwAAHgAJE1vcnRhbDEyMQQADAAAeQAkTW9ydGFsMTIyBAAMAAB6ACRNb3J0YWwxMjMEAAwAAHsAJE1vcnRhbDEyNAQADAAAfAAkTW9ydGFsMTI1BAAMAAB9ACRNb3J0YWwxMjYEAAwAAH4AJE1vcnRhbDEyNwQADAAAfwAkTW9ydGFsMTI4BAAMAACAACRNb3J0YWwxMjkEAAwAAIEAJE1vcnRhbDEzMAQADAAAggAkTW9ydGFsMTMxBAAMAACDACRNb3J0YWwxMzIEAAwAAIQAJE1vcnRhbDEzMwQADAAAhQAkTW9ydGFsMTM0BAAMAACGACRNb3J0YWwxMzUEAAwAAIcAJE1vcnRhbDEzNgQADAAAiAAkTW9ydGFsMTM3BAAMAACJACRNb3J0YWwxMzgEAAwAAIoAJE1vcnRhbDEzOQQADAAAiwAkTW9ydGFsMTQwBAAMAACMACRNb3J0YWwxNDEEAAwAAI0AJE1vcnRhbDE0MgQADAAAjgAkTW9ydGFsMTQzBAAMAACPACRNb3J0YWwxNDQEAAwAAJAAJE1vcnRhbDE0NQQADAAAkQAkTW9ydGFsMTQ2BAAMAACSACRNb3J0YWwxNDcEAAwAAJMAJE1vcnRhbDE0OAQADAAAlAAkTW9ydGFsMTQ5BAAMAACVACRNb3J0YWwxNTAEAAwAAJYAJE1vcnRhbDE1MQQADAAAlwAkTW9ydGFsMTUyBAAMAACYACRNb3J0YWwxNTMEAAwAAJkAJE1vcnRhbDE1NAQADAAAmgAkTW9ydGFsMTU1BAAMAACbACRNb3J0YWwxNTYEAAwAAJwAJE1vcnRhbDE1NwQADAAAnQAkTW9ydGFsMTU4BAAMAACeACRNb3J0YWwxNTkEAAwAAJ8AJE1vcnRhbDE2MAQADAAAoAAkTW9ydGFsMTYxBAAMAAChACRNb3J0YWwxNjIEAAwAAKIAJE1vcnRhbDE2MwQADAAAowAkTW9ydGFsMTY0BAAMAACkACRNb3J0YWwxNjUEAAwAAKUAJE1vcnRhbDE2NgQADAAApgAkTW9ydGFsMTY3BAAMAACnACRNb3J0YWwxNjgEAAwAAKgAJE1vcnRhbDE2OQQADAAAqQAkTW9ydGFsMTcwBAAMAACqACRNb3J0YWwxNzEEAAwAAKsAJE1vcnRhbDE3MgQADAAArAAkTW9ydGFsMTczBAAMAACtACRNb3J0YWwxNzQEAAwAAK4AJE1vcnRhbDE3NQQADAAArwAkTW9ydGFsMTc2BAAMAACwACRNb3J0YWwxNzcEAAwAALEAJE1vcnRhbDE3OAQADAAAsgAkTW9ydGFsMTc5BAAMAACzACRNb3J0YWwxODAEAAwAALQAJE1vcnRhbDE4MQQADAAAtQAkTW9ydGFsMTgyBAAMAAC2ACRNb3J0YWwxODMEAAwAALcAJE1vcnRhbDE4NAQADAAAuAAkTW9ydGFsMTg1BAAMAAC5ACRNb3J0YWwxODYEAAwAALoAJE1vcnRhbDE4NwQADAAAuwAkTW9ydGFsMTg4BAAMAAC8ACRNb3J0YWwxODkEAAwAAL0AJE1vcnRhbDE5MAQADAAAvgAkTW9ydGFsMTkxBAAMAAC/ACRNb3J0YWwxOTIEAAwAAMAAJE1vcnRhbDE5MwQADAAAwQAkTW9ydGFsMTk0BAAMAADCACRNb3J0YWwxOTUEAAwAAMMAJE1vcnRhbDE5NgQADAAAxAAkTW9ydGFsMTk3BAAMAADFACRNb3J0YWwxOTgEAAwAAMYAJE1vcnRhbDE5OQQADAAAxwAkTW9ydGFsMjAwBAAMAADIACRNb3J0YWwyMDEEAAwAAMkAJE1vcnRhbDIwMgQADAAAygAkTW9ydGFsMjAzBAAMAADLACRNb3J0YWwyMDQEAAwAAMwAJE1vcnRhbDIwNQQADAAAzQAkTW9ydGFsMjA2BAAMAADOACRNb3J0YWwyMDcEAAwAAM8AJE1vcnRhbDIwOAQADAAA0AAkTW9ydGFsMjA5BAAMAADRACRNb3J0YWwyMTAEAAwAANIAJE1vcnRhbDIxMQQADAAA0wAkTW9ydGFsMjEyBAAMAADUACRNb3J0YWwyMTMEAAwAANUAJE1vcnRhbDIxNAQADAAA1gAkTW9ydGFsMjE1BAAMAADXACRNb3J0YWwyMTYEAAwAANgAJE1vcnRhbDIxNwQADAAA2QAkTW9ydGFsMjE4BAAMAADaACRNb3J0YWwyMTkEAAwAANsAJE1vcnRhbDIyMAQADAAA3AAkTW9ydGFsMjIxBAAMAADdACRNb3J0YWwyMjIEAAwAAN4AJE1vcnRhbDIyMwQADAAA3wAkTW9ydGFsMjI0BAAMAADgACRNb3J0YWwyMjUEAAwAAOEAJE1vcnRhbDIyNgQADAAA4gAkTW9ydGFsMjI3BAAMAADjACRNb3J0YWwyMjgEAAwAAOQAJE1vcnRhbDIyOQQADAAA5QAkTW9ydGFsMjMwBAAMAADmACRNb3J0YWwyMzEEAAwAAOcAJE1vcnRhbDIzMgQADAAA6AAkTW9ydGFsMjMzBAAMAADpACRNb3J0YWwyMzQEAAwAAOoAJE1vcnRhbDIzNQQADAAA6wAkTW9ydGFsMjM2BAAMAADsACRNb3J0YWwyMzcEAAwAAO0AJE1vcnRhbDIzOAQADAAA7gAkTW9ydGFsMjM5BAAMAADvACRNb3J0YWwyNDAEAAwAAPAAJE1vcnRhbDI0MQQADAAA8QAkTW9ydGFsMjQyBAAMAADyACRNb3J0YWwyNDMEAAwAAPMAJE1vcnRhbDI0NAQADAAA9AAkTW9ydGFsMjQ1BAAMAAD1ACRNb3J0YWwyNDYEAAwAAPYAJE1vcnRhbDI0NwQADAAA9wAkTW9ydGFsMjQ4BAAMAAD4ACRNb3J0YWwyNDkEAAwAAPkAJE1vcnRhbDI1MAQADAAA+gAkTW9ydGFsMjUxBAAMAAD7ACRNb3J0YWwyNTIEAAwAAPwAJE1vcnRhbDI1MwQADAAA/QAkTW9ydGFsMjU0BAAMAAD+ACRNb3J0YWwyNTUEAAwAAP8AALUHEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9ucyxjaGVja19ub25jZShDaGVja05vbmNlBARUAAAEAGABIFQ6Ok5vbmNlAAC5BxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMwY2hlY2tfd2VpZ2h0LENoZWNrV2VpZ2h0BARUAAAAAL0HCIhwYWxsZXRfYXNzZXRfY29udmVyc2lvbl90eF9wYXltZW50UENoYXJnZUFzc2V0VHhQYXltZW50BARUAAAIAQx0aXBRAQEwQmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWQ5AwFIT3B0aW9uPFQ6OkFzc2V0SWQ+AADBBwh0ZnJhbWVfbWV0YWRhdGFfaGFzaF9leHRlbnNpb25EQ2hlY2tNZXRhZGF0YUhhc2gEBFQAAAQBEG1vZGXFBwEQTW9kZQAAxQcIdGZyYW1lX21ldGFkYXRhX2hhc2hfZXh0ZW5zaW9uEE1vZGUAAQggRGlzYWJsZWQAAAAcRW5hYmxlZAABAADJBxA0cGFsbGV0X3Jldml2ZQxldm0wdHhfZXh0ZW5zaW9uJFNldE9yaWdpbgQEVAAAAADNBwgwZnJhbWVfc3lzdGVtLEFjY291bnRJbmZvCBROb25jZQE4LEFjY291bnREYXRhAdEHABQBFG5vbmNlOAEUTm9uY2UAASRjb25zdW1lcnM4ASBSZWZDb3VudAABJHByb3ZpZGVyczgBIFJlZkNvdW50AAEsc3VmZmljaWVudHM4ASBSZWZDb3VudAABEGRhdGHRBwEsQWNjb3VudERhdGEAANEHDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsQWNjb3VudERhdGEEHEJhbGFuY2UBVQEAEAEQZnJlZVUBARxCYWxhbmNlAAEgcmVzZXJ2ZWRVAQEcQmFsYW5jZQABGGZyb3plblUBARxCYWxhbmNlAAEUZmxhZ3PVBwEoRXh0cmFGbGFncwAA1QcMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyhFeHRyYUZsYWdzAAAEAFUBARB1MTI4AADZBww0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUAREBAAwBGG5vcm1hbBEBAQRUAAEsb3BlcmF0aW9uYWwRAQEEVAABJG1hbmRhdG9yeREBAQRUAADdBwAAAuEHAOEHCDBmcmFtZV9zeXN0ZW0sRXZlbnRSZWNvcmQIBEUB5QcEVAE8AAwBFHBoYXNlsQkBFFBoYXNlAAEUZXZlbnTlBwEERQABGHRvcGljc8ABGFZlYzxUPgAA5QcIcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUwUnVudGltZUV2ZW50AAHkGFN5c3RlbQQA6QcBcGZyYW1lX3N5c3RlbTo6RXZlbnQ8UnVudGltZT4AAAA8UGFyYWNoYWluU3lzdGVtBAARCAG8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbTo6RXZlbnQ8UnVudGltZT4AAQAgUHJlaW1hZ2UEABUIAXxwYWxsZXRfcHJlaW1hZ2U6OkV2ZW50PFJ1bnRpbWU+AAUAJFNjaGVkdWxlcgQAGQgBgHBhbGxldF9zY2hlZHVsZXI6OkV2ZW50PFJ1bnRpbWU+AAYAKFBhcmFtZXRlcnMEACEIAYRwYWxsZXRfcGFyYW1ldGVyczo6RXZlbnQ8UnVudGltZT4ABwBQTXVsdGlCbG9ja01pZ3JhdGlvbnMEAEkIAYRwYWxsZXRfbWlncmF0aW9uczo6RXZlbnQ8UnVudGltZT4ACAAgQmFsYW5jZXMEAE0IAXxwYWxsZXRfYmFsYW5jZXM6OkV2ZW50PFJ1bnRpbWU+AAoASFRyYW5zYWN0aW9uUGF5bWVudAQAhQgBqHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50OjpFdmVudDxSdW50aW1lPgALADhBc3NldFR4UGF5bWVudAQAiQgByHBhbGxldF9hc3NldF9jb252ZXJzaW9uX3R4X3BheW1lbnQ6OkV2ZW50PFJ1bnRpbWU+AA0AHFZlc3RpbmcEAI0IAXhwYWxsZXRfdmVzdGluZzo6RXZlbnQ8UnVudGltZT4ADgAYQ2xhaW1zBACRCAF0cGFsbGV0X2NsYWltczo6RXZlbnQ8UnVudGltZT4ADwBEQ29sbGF0b3JTZWxlY3Rpb24EAJUIAaRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uOjpFdmVudDxSdW50aW1lPgAVABxTZXNzaW9uBACZCAF4cGFsbGV0X3Nlc3Npb246OkV2ZW50PFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQAnQgBpGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU6OkV2ZW50PFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBAChCAFocGFsbGV0X3hjbTo6RXZlbnQ8UnVudGltZT4AHwAoQ3VtdWx1c1hjbQQAsQgBiGN1bXVsdXNfcGFsbGV0X3hjbTo6RXZlbnQ8UnVudGltZT4AIABEVG9LdXNhbWFYY21Sb3V0ZXIEALUIAVkBcGFsbGV0X3hjbV9icmlkZ2VfaHViX3JvdXRlcjo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X3hjbV9icmlkZ2VfaHViX3JvdXRlcgo6Okluc3RhbmNlMT4AIgAwTWVzc2FnZVF1ZXVlBAC5CAGQcGFsbGV0X21lc3NhZ2VfcXVldWU6OkV2ZW50PFJ1bnRpbWU+ACMAYFNub3dicmlkZ2VTeXN0ZW1Gcm9udGVuZAQAwQgBxHNub3dicmlkZ2VfcGFsbGV0X3N5c3RlbV9mcm9udGVuZDo6RXZlbnQ8UnVudGltZT4AJAAcVXRpbGl0eQQAxQgBVHBhbGxldF91dGlsaXR5OjpFdmVudAAoACBNdWx0aXNpZwQAyQgBfHBhbGxldF9tdWx0aXNpZzo6RXZlbnQ8UnVudGltZT4AKQAUUHJveHkEAM0IAXBwYWxsZXRfcHJveHk6OkV2ZW50PFJ1bnRpbWU+ACoAHEluZGljZXMEANUIAXhwYWxsZXRfaW5kaWNlczo6RXZlbnQ8UnVudGltZT4AKwAYQXNzZXRzBADZCAHccGFsbGV0X2Fzc2V0czo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UxPgAyABxVbmlxdWVzBADdCAF4cGFsbGV0X3VuaXF1ZXM6OkV2ZW50PFJ1bnRpbWU+ADMAEE5mdHMEAOEIAWxwYWxsZXRfbmZ0czo6RXZlbnQ8UnVudGltZT4ANAA0Rm9yZWlnbkFzc2V0cwQA6QgB3HBhbGxldF9hc3NldHM6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMj4ANQAoUG9vbEFzc2V0cwQA7QgB3HBhbGxldF9hc3NldHM6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMz4ANgA8QXNzZXRDb252ZXJzaW9uBADxCAGccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb246OkV2ZW50PFJ1bnRpbWU+ADcANEFzc2V0c0ZyZWV6ZXIEAAUJAR0BcGFsbGV0X2Fzc2V0c19mcmVlemVyOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYXNzZXRzX2ZyZWV6ZXI6Okluc3RhbmNlMT4AOAAwQXNzZXRzSG9sZGVyBAAJCQEVAXBhbGxldF9hc3NldHNfaG9sZGVyOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYXNzZXRzX2hvbGRlcjo6SW5zdGFuY2UxPgA5ACBUcmVhc3VyeQQADQkBfHBhbGxldF90cmVhc3VyeTo6RXZlbnQ8UnVudGltZT4APABAQ29udmljdGlvblZvdGluZwQAEQkBoHBhbGxldF9jb252aWN0aW9uX3ZvdGluZzo6RXZlbnQ8UnVudGltZT4APQAkUmVmZXJlbmRhBAAVCQGAcGFsbGV0X3JlZmVyZW5kYTo6RXZlbnQ8UnVudGltZT4APgAkV2hpdGVsaXN0BAAdCQGAcGFsbGV0X3doaXRlbGlzdDo6RXZlbnQ8UnVudGltZT4AQAAgQm91bnRpZXMEAC0JAXxwYWxsZXRfYm91bnRpZXM6OkV2ZW50PFJ1bnRpbWU+AEEANENoaWxkQm91bnRpZXMEADEJAZRwYWxsZXRfY2hpbGRfYm91bnRpZXM6OkV2ZW50PFJ1bnRpbWU+AEIAJEFzc2V0UmF0ZQQANQkBhHBhbGxldF9hc3NldF9yYXRlOjpFdmVudDxSdW50aW1lPgBDAEhNdWx0aUFzc2V0Qm91bnRpZXMEADkJAaxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXM6OkV2ZW50PFJ1bnRpbWU+AEQADERhcAQAPQkBaHBhbGxldF9kYXA6OkV2ZW50PFJ1bnRpbWU+AEUASFN0YXRlVHJpZU1pZ3JhdGlvbgQARQkBrHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbjo6RXZlbnQ8UnVudGltZT4ARgA8Tm9taW5hdGlvblBvb2xzBABRCQGccGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkV2ZW50PFJ1bnRpbWU+AFAAJFZvdGVyTGlzdAQAWQkB9HBhbGxldF9iYWdzX2xpc3Q6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9iYWdzX2xpc3Q6Okluc3RhbmNlMT4AUgBARGVsZWdhdGVkU3Rha2luZwQAXQkBoHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZzo6RXZlbnQ8UnVudGltZT4AUwA8U3Rha2luZ1JjQ2xpZW50BABhCQG4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50OjpFdmVudDxSdW50aW1lPgBUAEhNdWx0aUJsb2NrRWxlY3Rpb24EAGkJAdBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s6OkV2ZW50PFJ1bnRpbWU+AFUAaE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyBABtCQH4cGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjp2ZXJpZmllcjo6RXZlbnQ8UnVudGltZT4AVgBgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkBAB9CQHwcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpzaWduZWQ6OkV2ZW50PFJ1bnRpbWU+AFgAHFN0YWtpbmcEAIEJAZBwYWxsZXRfc3Rha2luZ19hc3luYzo6RXZlbnQ8UnVudGltZT4AWQBETWVtYmVyc1N1YnNjcmliZXIEAJEJAbxpbmRpdl9wYWxsZXRfbWVtYmVyc19zdWJzY3JpYmVyOjpFdmVudDxSdW50aW1lPgBhADRBbGlhc0FjY291bnRzBACVCQGsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzOjpFdmVudDxSdW50aW1lPgBiABBQZ2FzBACZCQGEaW5kaXZfcGFsbGV0X3BnYXM6OkV2ZW50PFJ1bnRpbWU+AGMAGFJldml2ZQQAnQkBdHBhbGxldF9yZXZpdmU6OkV2ZW50PFJ1bnRpbWU+AGQAMERvdG5zR2F0ZXdheQQAoQkBqGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5OjpFdmVudDxSdW50aW1lPgCYAERPcmlnaW5SZXN0cmljdGlvbgQApQkBvGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb246OkV2ZW50PFJ1bnRpbWU+AJkAEFN1ZG8EAKkJAWxwYWxsZXRfc3Vkbzo6RXZlbnQ8UnVudGltZT4A+wA0UGdhc0FsbG93YW5jZQQArQkBlHBhbGxldF9wZ2FzX2FsbG93YW5jZTo6RXZlbnQ8UnVudGltZT4A/AAA6QcMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXZlbnQEBFQAASBARXh0cmluc2ljU3VjY2VzcwQBNGRpc3BhdGNoX2luZm/tBwFERGlzcGF0Y2hFdmVudEluZm8AAASQQW4gZXh0cmluc2ljIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuPEV4dHJpbnNpY0ZhaWxlZAgBOGRpc3BhdGNoX2Vycm9y+QcBNERpc3BhdGNoRXJyb3IAATRkaXNwYXRjaF9pbmZv7QcBRERpc3BhdGNoRXZlbnRJbmZvAAEEUEFuIGV4dHJpbnNpYyBmYWlsZWQuLENvZGVVcGRhdGVkBAEQaGFzaDwBHFQ6Okhhc2gAAgTQYDpjb2RlYCB3YXMgdXBkYXRlZCB0byB0aGUgY29kZSB3aXRoIHRoZSBnaXZlbiBoYXNoLihOZXdBY2NvdW50BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAADBGhBIG5ldyBhY2NvdW50IHdhcyBjcmVhdGVkLjRLaWxsZWRBY2NvdW50BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAEBFhBbiBhY2NvdW50IHdhcyByZWFwZWQuIFJlbWFya2VkCAEYc2VuZGVyBAEwVDo6QWNjb3VudElkAAEQaGFzaDwBHFQ6Okhhc2gABQRwT24gb24tY2hhaW4gcmVtYXJrIGhhcHBlbmVkLkRVcGdyYWRlQXV0aG9yaXplZAgBJGNvZGVfaGFzaDwBHFQ6Okhhc2gAATRjaGVja192ZXJzaW9uWQEBEGJvb2wABgRoQW4gdXBncmFkZSB3YXMgYXV0aG9yaXplZC6AUmVqZWN0ZWRJbnZhbGlkQXV0aG9yaXplZFVwZ3JhZGUIASRjb2RlX2hhc2g8ARxUOjpIYXNoAAEUZXJyb3L5BwE0RGlzcGF0Y2hFcnJvcgAHBBEBQW4gaW52YWxpZCBhdXRob3JpemVkIHVwZ3JhZGUgd2FzIHJlamVjdGVkIHdoaWxlIHRyeWluZyB0byBhcHBseSBpdC4EcEV2ZW50IGZvciB0aGUgU3lzdGVtIHBhbGxldC7tBwgwZnJhbWVfc3lzdGVtRERpc3BhdGNoRXZlbnRJbmZvAAAMARh3ZWlnaHQRAQEYV2VpZ2h0AAEUY2xhc3PxBwE0RGlzcGF0Y2hDbGFzcwABIHBheXNfZmVl9QcBEFBheXMAAPEHDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoNERpc3BhdGNoQ2xhc3MAAQwYTm9ybWFsAAAALE9wZXJhdGlvbmFsAAEAJE1hbmRhdG9yeQACAAD1Bww0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaBBQYXlzAAEIDFllcwAAAAhObwABAAD5Bwgoc3BfcnVudGltZTREaXNwYXRjaEVycm9yAAE8FE90aGVyAAAAMENhbm5vdExvb2t1cAABACRCYWRPcmlnaW4AAgAYTW9kdWxlBAD9BwEsTW9kdWxlRXJyb3IAAwBEQ29uc3VtZXJSZW1haW5pbmcABAAsTm9Qcm92aWRlcnMABQBAVG9vTWFueUNvbnN1bWVycwAGABRUb2tlbgQAAQgBKFRva2VuRXJyb3IABwAoQXJpdGhtZXRpYwQABQgBPEFyaXRobWV0aWNFcnJvcgAIADRUcmFuc2FjdGlvbmFsBAAJCAFIVHJhbnNhY3Rpb25hbEVycm9yAAkAJEV4aGF1c3RlZAAKAChDb3JydXB0aW9uAAsALFVuYXZhaWxhYmxlAAwAOFJvb3ROb3RBbGxvd2VkAA0AEFRyaWUEAA0IASRUcmllRXJyb3IADgAA/QcIKHNwX3J1bnRpbWUsTW9kdWxlRXJyb3IAAAgBFGluZGV4DAEIdTgAARRlcnJvcnABjFt1ODsgTUFYX01PRFVMRV9FUlJPUl9FTkNPREVEX1NJWkVdAAABCAgoc3BfcnVudGltZShUb2tlbkVycm9yAAEoQEZ1bmRzVW5hdmFpbGFibGUAAAAwT25seVByb3ZpZGVyAAEAMEJlbG93TWluaW11bQACADBDYW5ub3RDcmVhdGUAAwAwVW5rbm93bkFzc2V0AAQAGEZyb3plbgAFACxVbnN1cHBvcnRlZAAGAEBDYW5ub3RDcmVhdGVIb2xkAAcANE5vdEV4cGVuZGFibGUACAAcQmxvY2tlZAAJAAAFCAg0c3BfYXJpdGhtZXRpYzxBcml0aG1ldGljRXJyb3IAAQwkVW5kZXJmbG93AAAAIE92ZXJmbG93AAEAOERpdmlzaW9uQnlaZXJvAAIAAAkICChzcF9ydW50aW1lSFRyYW5zYWN0aW9uYWxFcnJvcgABCDBMaW1pdFJlYWNoZWQAAAAcTm9MYXllcgABAAANCAwoc3BfcnVudGltZTBwcm92aW5nX3RyaWUkVHJpZUVycm9yAAE4QEludmFsaWRTdGF0ZVJvb3QAAABISW5jb21wbGV0ZURhdGFiYXNlAAEAUFZhbHVlQXRJbmNvbXBsZXRlS2V5AAIAMERlY29kZXJFcnJvcgADACxJbnZhbGlkSGFzaAAEADBEdXBsaWNhdGVLZXkABQA4RXh0cmFuZW91c05vZGUABgA8RXh0cmFuZW91c1ZhbHVlAAcAXEV4dHJhbmVvdXNIYXNoUmVmZXJlbmNlAAgAVEludmFsaWRDaGlsZFJlZmVyZW5jZQAJADRWYWx1ZU1pc21hdGNoAAoAPEluY29tcGxldGVQcm9vZgALADBSb290TWlzbWF0Y2gADAAsRGVjb2RlRXJyb3IADQAAEQgMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0YcGFsbGV0FEV2ZW50BARUAAEYYFZhbGlkYXRpb25GdW5jdGlvblN0b3JlZAAABNBUaGUgdmFsaWRhdGlvbiBmdW5jdGlvbiBoYXMgYmVlbiBzY2hlZHVsZWQgdG8gYXBwbHkuZFZhbGlkYXRpb25GdW5jdGlvbkFwcGxpZWQEAVRyZWxheV9jaGFpbl9ibG9ja19udW04AVRSZWxheUNoYWluQmxvY2tOdW1iZXIAAQRFAVRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIHdhcyBhcHBsaWVkIGFzIG9mIHRoZSBjb250YWluZWQgcmVsYXkgY2hhaW4gYmxvY2sgbnVtYmVyLmxWYWxpZGF0aW9uRnVuY3Rpb25EaXNjYXJkZWQAAgSwVGhlIHJlbGF5LWNoYWluIGFib3J0ZWQgdGhlIHVwZ3JhZGUgcHJvY2Vzcy5gRG93bndhcmRNZXNzYWdlc1JlY2VpdmVkBAEUY291bnQ4AQx1MzIAAwQBAVNvbWUgZG93bndhcmQgbWVzc2FnZXMgaGF2ZSBiZWVuIHJlY2VpdmVkIGFuZCB3aWxsIGJlIHByb2Nlc3NlZC5kRG93bndhcmRNZXNzYWdlc1Byb2Nlc3NlZAgBLHdlaWdodF91c2VkEQEBGFdlaWdodAABIGRtcV9oZWFkPAFEcmVsYXlfY2hhaW46Okhhc2gABATgRG93bndhcmQgbWVzc2FnZXMgd2VyZSBwcm9jZXNzZWQgdXNpbmcgdGhlIGdpdmVuIHdlaWdodC5EVXB3YXJkTWVzc2FnZVNlbnQEATBtZXNzYWdlX2hhc2g9BwE8T3B0aW9uPFhjbUhhc2g+AAUEuEFuIHVwd2FyZCBtZXNzYWdlIHdhcyBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQVCAw8cGFsbGV0X3ByZWltYWdlGHBhbGxldBRFdmVudAQEVAABDBROb3RlZAQBEGhhc2g8ARxUOjpIYXNoAAAEaEEgcHJlaW1hZ2UgaGFzIGJlZW4gbm90ZWQuJFJlcXVlc3RlZAQBEGhhc2g8ARxUOjpIYXNoAAEEeEEgcHJlaW1hZ2UgaGFzIGJlZW4gcmVxdWVzdGVkLhxDbGVhcmVkBAEQaGFzaDwBHFQ6Okhhc2gAAgRsQSBwcmVpbWFnZSBoYXMgYmVuIGNsZWFyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0GQgMQHBhbGxldF9zY2hlZHVsZXIYcGFsbGV0FEV2ZW50BARUAAEoJFNjaGVkdWxlZAgBEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4OAEMdTMyAAAEUFNjaGVkdWxlZCBzb21lIHRhc2suIENhbmNlbGVkCAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAEUaW5kZXg4AQx1MzIAAQRMQ2FuY2VsZWQgc29tZSB0YXNrLihEaXNwYXRjaGVkDAEQdGFza8wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkPQcBQE9wdGlvbjxUYXNrTmFtZT4AARhyZXN1bHQdCAE4RGlzcGF0Y2hSZXN1bHQAAgRURGlzcGF0Y2hlZCBzb21lIHRhc2suIFJldHJ5U2V0EAEQdGFza8wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkPQcBQE9wdGlvbjxUYXNrTmFtZT4AARhwZXJpb2Q4AURCbG9ja051bWJlckZvcjxUPgABHHJldHJpZXMMAQh1OAADBKBTZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBzb21lIHRhc2suOFJldHJ5Q2FuY2VsbGVkCAEQdGFza8wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkPQcBQE9wdGlvbjxUYXNrTmFtZT4ABASsQ2FuY2VsIGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3Igc29tZSB0YXNrLjxDYWxsVW5hdmFpbGFibGUIARB0YXNrzAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWQ9BwFAT3B0aW9uPFRhc2tOYW1lPgAFBCkBVGhlIGNhbGwgZm9yIHRoZSBwcm92aWRlZCBoYXNoIHdhcyBub3QgZm91bmQgc28gdGhlIHRhc2sgaGFzIGJlZW4gYWJvcnRlZC44UGVyaW9kaWNGYWlsZWQIARB0YXNrzAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWQ9BwFAT3B0aW9uPFRhc2tOYW1lPgAGBD0BVGhlIGdpdmVuIHRhc2sgd2FzIHVuYWJsZSB0byBiZSByZW5ld2VkIHNpbmNlIHRoZSBhZ2VuZGEgaXMgZnVsbCBhdCB0aGF0IGJsb2NrLixSZXRyeUZhaWxlZAgBEHRhc2vMAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZD0HAUBPcHRpb248VGFza05hbWU+AAcIXQFUaGUgZ2l2ZW4gdGFzayB3YXMgdW5hYmxlIHRvIGJlIHJldHJpZWQgc2luY2UgdGhlIGFnZW5kYSBpcyBmdWxsIGF0IHRoYXQgYmxvY2sgb3IgdGhlcmWcd2FzIG5vdCBlbm91Z2ggd2VpZ2h0IHRvIHJlc2NoZWR1bGUgaXQuVFBlcm1hbmVudGx5T3ZlcndlaWdodAgBEHRhc2vMAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZD0HAUBPcHRpb248VGFza05hbWU+AAgE8FRoZSBnaXZlbiB0YXNrIGNhbiBuZXZlciBiZSBleGVjdXRlZCBzaW5jZSBpdCBpcyBvdmVyd2VpZ2h0LkBBZ2VuZGFJbmNvbXBsZXRlBAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAkEhEFnZW5kYSBpcyBpbmNvbXBsZXRlIGZyb20gYHdoZW5gLgQwRXZlbnRzIHR5cGUuHQgEGFJlc3VsdAgEVAEQBEUB+QcBCAhPawQAEAAAAAAMRXJyBAD5BwAAAQAAIQgMRHBhbGxldF9wYXJhbWV0ZXJzGHBhbGxldBRFdmVudAQEVAABBBxVcGRhdGVkDAEMa2V5JQgBxDxUOjpSdW50aW1lUGFyYW1ldGVycyBhcyBBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkEZFRoZSBrZXkgdGhhdCB3YXMgdXBkYXRlZC4BJG9sZF92YWx1ZTUIAexPcHRpb248PFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzIGFzIEFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlPgR8VGhlIG9sZCB2YWx1ZSBiZWZvcmUgdGhpcyBjYWxsLgEkbmV3X3ZhbHVlNQgB7E9wdGlvbjw8VDo6UnVudGltZVBhcmFtZXRlcnMgYXMgQWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWU+BHhUaGUgbmV3IHZhbHVlIGFmdGVyIHRoaXMgY2FsbC4ADFBBIFBhcmFtZXRlciB3YXMgc2V0LgC8SXMgYWxzbyBlbWl0dGVkIHdoZW4gdGhlIHZhbHVlIHdhcyBub3QgY2hhbmdlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQlCAhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZVBSdW50aW1lUGFyYW1ldGVyc0tleQABDDxTdGFraW5nRWxlY3Rpb24EACkIAcUBPGR5bmFtaWNfcGFyYW1zOjpzdGFraW5nX2VsZWN0aW9uOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0cwo6OmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkAAAAkU2NoZWR1bGVyBAAtCAGpATxkeW5hbWljX3BhcmFtczo6c2NoZWR1bGVyOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0czo6CmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkAAQAwTWVzc2FnZVF1ZXVlBAAxCAG5ATxkeW5hbWljX3BhcmFtczo6bWVzc2FnZV9xdWV1ZTo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHM6OgpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6S2V5AAIAACkIEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb240UGFyYW1ldGVyc0tleQABHCxTaWduZWRQaGFzZQQA3AEsU2lnbmVkUGhhc2UAAABQTWF4U2lnbmVkU3VibWlzc2lvbnMEAOQBUE1heFNpZ25lZFN1Ym1pc3Npb25zAAEANFVuc2lnbmVkUGhhc2UEAOgBNFVuc2lnbmVkUGhhc2UAAgAoTWluZXJQYWdlcwQA7AEoTWluZXJQYWdlcwADAERNYXhFbGVjdGluZ1ZvdGVycwQA8AFETWF4RWxlY3RpbmdWb3RlcnMABABYVGFyZ2V0U25hcHNob3RQZXJCbG9jawQA9AFYVGFyZ2V0U25hcHNob3RQZXJCbG9jawAFADhNYXhFcmFEdXJhdGlvbgQA+AE4TWF4RXJhRHVyYXRpb24ABgAALQgQcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMkc2NoZWR1bGVyNFBhcmFtZXRlcnNLZXkAAQhQTWF4U2NoZWR1bGVkUGVyQmxvY2sEAAUBAVBNYXhTY2hlZHVsZWRQZXJCbG9jawAAADRNYXhpbXVtV2VpZ2h0BAAJAQE0TWF4aW11bVdlaWdodAABAAAxCBBwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtczRtZXNzYWdlX3F1ZXVlNFBhcmFtZXRlcnNLZXkAAQg8TWF4T25Jbml0V2VpZ2h0BAAZAQE8TWF4T25Jbml0V2VpZ2h0AAAAPE1heE9uSWRsZVdlaWdodAQAIQEBPE1heE9uSWRsZVdlaWdodAABAAA1CAQYT3B0aW9uBARUATkIAQgQTm9uZQAAABBTb21lBAA5CAAAAQAAOQgIcG5leHRfYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWVYUnVudGltZVBhcmFtZXRlcnNWYWx1ZQABDDxTdGFraW5nRWxlY3Rpb24EAD0IAc0BPGR5bmFtaWNfcGFyYW1zOjpzdGFraW5nX2VsZWN0aW9uOjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0cwo6OmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpWYWx1ZQAAACRTY2hlZHVsZXIEAEEIAbEBPGR5bmFtaWNfcGFyYW1zOjpzY2hlZHVsZXI6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAEAME1lc3NhZ2VRdWV1ZQQARQgBwQE8ZHluYW1pY19wYXJhbXM6Om1lc3NhZ2VfcXVldWU6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAIAAD0IEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb248UGFyYW1ldGVyc1ZhbHVlAAEcLFNpZ25lZFBoYXNlBAA4ASxCbG9ja051bWJlcgAAAFBNYXhTaWduZWRTdWJtaXNzaW9ucwQAOAEMdTMyAAEANFVuc2lnbmVkUGhhc2UEADgBLEJsb2NrTnVtYmVyAAIAKE1pbmVyUGFnZXMEADgBDHUzMgADAERNYXhFbGVjdGluZ1ZvdGVycwQAOAEMdTMyAAQAWFRhcmdldFNuYXBzaG90UGVyQmxvY2sEADgBDHUzMgAFADhNYXhFcmFEdXJhdGlvbgQAKAEMdTY0AAYAAEEIEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zJHNjaGVkdWxlcjxQYXJhbWV0ZXJzVmFsdWUAAQhQTWF4U2NoZWR1bGVkUGVyQmxvY2sEADgBDHUzMgAAADRNYXhpbXVtV2VpZ2h0BAARAQEYV2VpZ2h0AAEAAEUIEHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zNG1lc3NhZ2VfcXVldWU8UGFyYW1ldGVyc1ZhbHVlAAEIPE1heE9uSW5pdFdlaWdodAQADQEBOE9wdGlvbjxXZWlnaHQ+AAAAPE1heE9uSWRsZVdlaWdodAQADQEBOE9wdGlvbjxXZWlnaHQ+AAEAAEkIDERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQURXZlbnQEBFQAASA4VXBncmFkZVN0YXJ0ZWQEAShtaWdyYXRpb25zOAEMdTMyENBUaGUgbnVtYmVyIG9mIG1pZ3JhdGlvbnMgdGhhdCB0aGlzIHVwZ3JhZGUgY29udGFpbnMuAEEBVGhpcyBjYW4gYmUgdXNlZCB0byBkZXNpZ24gYSBwcm9ncmVzcyBpbmRpY2F0b3IgaW4gY29tYmluYXRpb24gd2l0aCBjb3VudGluZyB0aGXMYE1pZ3JhdGlvbkNvbXBsZXRlZGAgYW5kIGBNaWdyYXRpb25Ta2lwcGVkYCBldmVudHMuAAxoQSBSdW50aW1lIHVwZ3JhZGUgc3RhcnRlZC4A+El0cyBlbmQgaXMgaW5kaWNhdGVkIGJ5IGBVcGdyYWRlQ29tcGxldGVkYCBvciBgVXBncmFkZUZhaWxlZGAuQFVwZ3JhZGVDb21wbGV0ZWQAAQyYVGhlIGN1cnJlbnQgcnVudGltZSB1cGdyYWRlIGNvbXBsZXRlZC4AHQFUaGlzIGltcGxpZXMgdGhhdCBhbGwgb2YgaXRzIG1pZ3JhdGlvbnMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBhcyB3ZWxsLjRVcGdyYWRlRmFpbGVkAAIMXFJ1bnRpbWUgdXBncmFkZSBmYWlsZWQuAOhUaGlzIGlzIHZlcnkgYmFkIGFuZCB3aWxsIHJlcXVpcmUgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24uQE1pZ3JhdGlvblNraXBwZWQEARRpbmRleDgBDHUzMgQpAVRoZSBpbmRleCBvZiB0aGUgc2tpcHBlZCBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuAwQJAUEgbWlncmF0aW9uIHdhcyBza2lwcGVkIHNpbmNlIGl0IHdhcyBhbHJlYWR5IGV4ZWN1dGVkIGluIHRoZSBwYXN0LkRNaWdyYXRpb25BZHZhbmNlZAgBFGluZGV4OAEMdTMyBAkBVGhlIGluZGV4IG9mIHRoZSBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuARB0b29rOAFEQmxvY2tOdW1iZXJGb3I8VD4E1FRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgdGhpcyBtaWdyYXRpb24gdG9vayBzbyBmYXIuBARcQSBtaWdyYXRpb24gcHJvZ3Jlc3NlZC5ITWlncmF0aW9uQ29tcGxldGVkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4FBFhBIE1pZ3JhdGlvbiBjb21wbGV0ZWQuPE1pZ3JhdGlvbkZhaWxlZAgBFGluZGV4OAEMdTMyBAkBVGhlIGluZGV4IG9mIHRoZSBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuARB0b29rOAFEQmxvY2tOdW1iZXJGb3I8VD4E1FRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgdGhpcyBtaWdyYXRpb24gdG9vayBzbyBmYXIuBgxMQSBNaWdyYXRpb24gZmFpbGVkLgBNAVRoaXMgaW1wbGllcyB0aGF0IHRoZSB3aG9sZSB1cGdyYWRlIGZhaWxlZCBhbmQgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcmVxdWlyZWQuPEhpc3RvcmljQ2xlYXJlZAQBLG5leHRfY3Vyc29ySQEBPE9wdGlvbjxWZWM8dTg+PgToU2hvdWxkIGJlIHBhc3NlZCB0byBgY2xlYXJfaGlzdG9yaWNgIGluIGEgc3VjY2Vzc2l2ZSBjYWxsLgcEyFRoZSBzZXQgb2YgaGlzdG9yaWNhbCBtaWdyYXRpb25zIGhhcyBiZWVuIGNsZWFyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0TQgMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXZlbnQIBFQABEkAAXgcRW5kb3dlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAATBmcmVlX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQAABLhBbiBhY2NvdW50IHdhcyBjcmVhdGVkIHdpdGggc29tZSBmcmVlIGJhbGFuY2UuIER1c3RMb3N0CAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAEIPQFBbiBhY2NvdW50IHdhcyByZW1vdmVkIHdob3NlIGJhbGFuY2Ugd2FzIG5vbi16ZXJvIGJ1dCBiZWxvdyBFeGlzdGVudGlhbERlcG9zaXQseHJlc3VsdGluZyBpbiBhbiBvdXRyaWdodCBsb3NzLiBUcmFuc2ZlcgwBEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAIETFRyYW5zZmVyIHN1Y2NlZWRlZC4oQmFsYW5jZVNldAgBDHdobwQBMFQ6OkFjY291bnRJZAABEGZyZWVVAQEoVDo6QmFsYW5jZQADBGhBIGJhbGFuY2Ugd2FzIHNldCBieSByb290LiBSZXNlcnZlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAQE4FNvbWUgYmFsYW5jZSB3YXMgcmVzZXJ2ZWQgKG1vdmVkIGZyb20gZnJlZSB0byByZXNlcnZlZCkuKFVucmVzZXJ2ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAFBOhTb21lIGJhbGFuY2Ugd2FzIHVucmVzZXJ2ZWQgKG1vdmVkIGZyb20gcmVzZXJ2ZWQgdG8gZnJlZSkuSFJlc2VydmVSZXBhdHJpYXRlZBABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAFIZGVzdGluYXRpb25fc3RhdHVzUQgBGFN0YXR1cwAGCE0BU29tZSBiYWxhbmNlIHdhcyBtb3ZlZCBmcm9tIHRoZSByZXNlcnZlIG9mIHRoZSBmaXJzdCBhY2NvdW50IHRvIHRoZSBzZWNvbmQgYWNjb3VudC7YRmluYWwgYXJndW1lbnQgaW5kaWNhdGVzIHRoZSBkZXN0aW5hdGlvbiBiYWxhbmNlIHR5cGUuHERlcG9zaXQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAHBNhTb21lIGFtb3VudCB3YXMgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4gV2l0aGRyYXcIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAIBB0BU29tZSBhbW91bnQgd2FzIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4cU2xhc2hlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAkEAQFTb21lIGFtb3VudCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciBtaXNiZWhhdmlvcikuGE1pbnRlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAoEnFNvbWUgYW1vdW50IHdhcyBtaW50ZWQgaW50byBhbiBhY2NvdW50LjBNaW50ZWRDcmVkaXQEARhhbW91bnRVAQEoVDo6QmFsYW5jZQALBOBTb21lIGNyZWRpdCB3YXMgYmFsYW5jZWQgYW5kIGFkZGVkIHRvIHRoZSBUb3RhbElzc3VhbmNlLhhCdXJuZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAMBJxTb21lIGFtb3VudCB3YXMgYnVybmVkIGZyb20gYW4gYWNjb3VudC4oQnVybmVkRGVidAQBGGFtb3VudFUBAShUOjpCYWxhbmNlAA0EzFNvbWUgZGVidCBoYXMgYmVlbiBkcm9wcGVkIGZyb20gdGhlIFRvdGFsIElzc3VhbmNlLiRTdXNwZW5kZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAOBBUBU29tZSBhbW91bnQgd2FzIHN1c3BlbmRlZCBmcm9tIGFuIGFjY291bnQgKGl0IGNhbiBiZSByZXN0b3JlZCBsYXRlcikuIFJlc3RvcmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UADwSkU29tZSBhbW91bnQgd2FzIHJlc3RvcmVkIGludG8gYW4gYWNjb3VudC4gVXBncmFkZWQEAQx3aG8EATBUOjpBY2NvdW50SWQAEARgQW4gYWNjb3VudCB3YXMgdXBncmFkZWQuGElzc3VlZAQBGGFtb3VudFUBAShUOjpCYWxhbmNlABEELQFUb3RhbCBpc3N1YW5jZSB3YXMgaW5jcmVhc2VkIGJ5IGBhbW91bnRgLCBjcmVhdGluZyBhIGNyZWRpdCB0byBiZSBiYWxhbmNlZC4kUmVzY2luZGVkBAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAEgQlAVRvdGFsIGlzc3VhbmNlIHdhcyBkZWNyZWFzZWQgYnkgYGFtb3VudGAsIGNyZWF0aW5nIGEgZGVidCB0byBiZSBiYWxhbmNlZC4YTG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAEwRgU29tZSBiYWxhbmNlIHdhcyBsb2NrZWQuIFVubG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAFARoU29tZSBiYWxhbmNlIHdhcyB1bmxvY2tlZC4YRnJvemVuCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAFQRgU29tZSBiYWxhbmNlIHdhcyBmcm96ZW4uGFRoYXdlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlABYEYFNvbWUgYmFsYW5jZSB3YXMgdGhhd2VkLkxUb3RhbElzc3VhbmNlRm9yY2VkCAEMb2xkVQEBKFQ6OkJhbGFuY2UAAQxuZXdVAQEoVDo6QmFsYW5jZQAXBKxUaGUgYFRvdGFsSXNzdWFuY2VgIHdhcyBmb3JjZWZ1bGx5IGNoYW5nZWQuEEhlbGQMARhyZWFzb25VCAFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAYBIBTb21lIGJhbGFuY2Ugd2FzIHBsYWNlZCBvbiBob2xkLihCdXJuZWRIZWxkDAEYcmVhc29uVQgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAGQSgSGVsZCBiYWxhbmNlIHdhcyBidXJuZWQgZnJvbSBhbiBhY2NvdW50LjhUcmFuc2Zlck9uSG9sZBABGHJlYXNvblUIAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABEGRlc3QEATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAaBBUBQSB0cmFuc2ZlciBvZiBgYW1vdW50YCBvbiBob2xkIGZyb20gYHNvdXJjZWAgdG8gYGRlc3RgIHdhcyBpbml0aWF0ZWQuPFRyYW5zZmVyQW5kSG9sZBABGHJlYXNvblUIAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABEGRlc3QEATBUOjpBY2NvdW50SWQAASx0cmFuc2ZlcnJlZFUBAShUOjpCYWxhbmNlABsECQFUaGUgYHRyYW5zZmVycmVkYCBiYWxhbmNlIGlzIHBsYWNlZCBvbiBob2xkIGF0IHRoZSBgZGVzdGAgYWNjb3VudC4gUmVsZWFzZWQMARhyZWFzb25VCAFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAcBJBTb21lIGJhbGFuY2Ugd2FzIHJlbGVhc2VkIGZyb20gaG9sZC4oVW5leHBlY3RlZAQAgQgBOFVuZXhwZWN0ZWRLaW5kAB0EsEFuIHVuZXhwZWN0ZWQvZGVmZW5zaXZlIGV2ZW50IHdhcyB0cmlnZ2VyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0UQgUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjNEJhbGFuY2VTdGF0dXMAAQgQRnJlZQAAACBSZXNlcnZlZAABAABVCAhwbmV4dF9hc3NldF9odWJfcGFzZW9fcnVudGltZURSdW50aW1lSG9sZFJlYXNvbgABKCBQcmVpbWFnZQQAWQgBbHBhbGxldF9wcmVpbWFnZTo6SG9sZFJlYXNvbgAFABxTZXNzaW9uBABdCAFocGFsbGV0X3Nlc3Npb246OkhvbGRSZWFzb24AFgAsUG9sa2Fkb3RYY20EAGEIAVhwYWxsZXRfeGNtOjpIb2xkUmVhc29uAB8ASE11bHRpQXNzZXRCb3VudGllcwQAZQgBnHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczo6SG9sZFJlYXNvbgBEAEhTdGF0ZVRyaWVNaWdyYXRpb24EAGkIAZxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkhvbGRSZWFzb24ARgBARGVsZWdhdGVkU3Rha2luZwQAbQgBkHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZzo6SG9sZFJlYXNvbgBTADxTdGFraW5nUmNDbGllbnQEAHEIAahwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQ6OkhvbGRSZWFzb24AVABgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkBAB1CAHgcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpzaWduZWQ6OkhvbGRSZWFzb24AWAAcU3Rha2luZwQAeQgBgHBhbGxldF9zdGFraW5nX2FzeW5jOjpIb2xkUmVhc29uAFkAGFJldml2ZQQAfQgBZHBhbGxldF9yZXZpdmU6OkhvbGRSZWFzb24AZAAAWQgMPHBhbGxldF9wcmVpbWFnZRhwYWxsZXQoSG9sZFJlYXNvbgABBCBQcmVpbWFnZQAAAABdCAw4cGFsbGV0X3Nlc3Npb24YcGFsbGV0KEhvbGRSZWFzb24AAQQQS2V5cwAAAABhCAwocGFsbGV0X3hjbRhwYWxsZXQoSG9sZFJlYXNvbgABBDhBdXRob3JpemVBbGlhcwAAAABlCAxscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGHBhbGxldChIb2xkUmVhc29uBARJAAEEOEN1cmF0b3JEZXBvc2l0AAAAAGkIDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0KEhvbGRSZWFzb24AAQQ8U2xhc2hGb3JNaWdyYXRlAAAAAG0IDGBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmcYcGFsbGV0KEhvbGRSZWFzb24AAQREU3Rha2luZ0RlbGVnYXRpb24AAAAAcQgMeHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudBhwYWxsZXQoSG9sZFJlYXNvbgABBBBLZXlzAAAAAHUIEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkGHBhbGxldChIb2xkUmVhc29uAAEEQFNpZ25lZFN1Ym1pc3Npb24AAAAAeQgQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQoSG9sZFJlYXNvbgABBBxTdGFraW5nAAAAAH0IDDRwYWxsZXRfcmV2aXZlGHBhbGxldChIb2xkUmVhc29uAAEMYENvZGVVcGxvYWREZXBvc2l0UmVzZXJ2ZQAAAFRTdG9yYWdlRGVwb3NpdFJlc2VydmUAAQA4QWRkcmVzc01hcHBpbmcAAgAAgQgMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQ4VW5leHBlY3RlZEtpbmQAAQg4QmFsYW5jZVVwZGF0ZWQAAABURmFpbGVkVG9NdXRhdGVBY2NvdW50AAEAAIUIDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBhwYWxsZXQURXZlbnQEBFQAAQRIVHJhbnNhY3Rpb25GZWVQYWlkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEoYWN0dWFsX2ZlZVUBATBCYWxhbmNlT2Y8VD4AAQx0aXBVAQEwQmFsYW5jZU9mPFQ+AAAIWQFBIHRyYW5zYWN0aW9uIGZlZSBgYWN0dWFsX2ZlZWAsIG9mIHdoaWNoIGB0aXBgIHdhcyBhZGRlZCB0byB0aGUgbWluaW11bSBpbmNsdXNpb24gZmVlLFxoYXMgYmVlbiBwYWlkIGJ5IGB3aG9gLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIkIDIhwYWxsZXRfYXNzZXRfY29udmVyc2lvbl90eF9wYXltZW50GHBhbGxldBRFdmVudAQEVAABCDhBc3NldFR4RmVlUGFpZBABDHdobwQBMFQ6OkFjY291bnRJZAABKGFjdHVhbF9mZWVVAQEwQmFsYW5jZU9mPFQ+AAEMdGlwVQEBMEJhbGFuY2VPZjxUPgABIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsuGhhcyBiZWVuIHBhaWQgYnkgYHdob2AgaW4gYW4gYXNzZXQgYGFzc2V0X2lkYC5EQXNzZXRSZWZ1bmRGYWlsZWQEAUhuYXRpdmVfYW1vdW50X2tlcHRVAQEwQmFsYW5jZU9mPFQ+AAEE9EEgc3dhcCBvZiB0aGUgcmVmdW5kIGluIG5hdGl2ZSBjdXJyZW5jeSBiYWNrIHRvIGFzc2V0IGZhaWxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSNCAw4cGFsbGV0X3Zlc3RpbmcYcGFsbGV0FEV2ZW50BARUAAEMOFZlc3RpbmdDcmVhdGVkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABOHNjaGVkdWxlX2luZGV4OAEMdTMyAAAEkEEgdmVzdGluZyBzY2hlZHVsZSBoYXMgYmVlbiBjcmVhdGVkLjhWZXN0aW5nVXBkYXRlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAASB1bnZlc3RlZFUBATBCYWxhbmNlT2Y8VD4AAQhRAVRoZSBhbW91bnQgdmVzdGVkIGhhcyBiZWVuIHVwZGF0ZWQuIFRoaXMgY291bGQgaW5kaWNhdGUgYSBjaGFuZ2UgaW4gZnVuZHMgYXZhaWxhYmxlLiUBVGhlIGJhbGFuY2UgZ2l2ZW4gaXMgdGhlIGFtb3VudCB3aGljaCBpcyBsZWZ0IHVudmVzdGVkIChhbmQgdGh1cyBsb2NrZWQpLkBWZXN0aW5nQ29tcGxldGVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAACBJxBbiBcW2FjY291bnRcXSBoYXMgYmVjb21lIGZ1bGx5IHZlc3RlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSRCBBccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zGHBhbGxldBRFdmVudAQEVAABBBxDbGFpbWVkDAEMd2hvBAEwVDo6QWNjb3VudElkAAFAZXRoZXJldW1fYWRkcmVzc3kBATxFdGhlcmV1bUFkZHJlc3MAARhhbW91bnRVAQEwQmFsYW5jZU9mPFQ+AAAEaFNvbWVvbmUgY2xhaW1lZCBzb21lIERPVHMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0lQgMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEV2ZW50BARUAAEoQE5ld0ludnVsbmVyYWJsZXMEATRpbnZ1bG5lcmFibGVzXQEBRFZlYzxUOjpBY2NvdW50SWQ+AAAEbE5ldyBJbnZ1bG5lcmFibGVzIHdlcmUgc2V0LkRJbnZ1bG5lcmFibGVBZGRlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAAQR0QSBuZXcgSW52dWxuZXJhYmxlIHdhcyBhZGRlZC5MSW52dWxuZXJhYmxlUmVtb3ZlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAAgRwQW4gSW52dWxuZXJhYmxlIHdhcyByZW1vdmVkLlBOZXdEZXNpcmVkQ2FuZGlkYXRlcwQBSGRlc2lyZWRfY2FuZGlkYXRlczgBDHUzMgADBKRUaGUgbnVtYmVyIG9mIGRlc2lyZWQgY2FuZGlkYXRlcyB3YXMgc2V0LkBOZXdDYW5kaWRhY3lCb25kBAEsYm9uZF9hbW91bnRVAQEwQmFsYW5jZU9mPFQ+AAQEbFRoZSBjYW5kaWRhY3kgYm9uZCB3YXMgc2V0LjhDYW5kaWRhdGVBZGRlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0VQEBMEJhbGFuY2VPZjxUPgAFBFxBIG5ldyBjYW5kaWRhdGUgam9pbmVkLlBDYW5kaWRhdGVCb25kVXBkYXRlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0VQEBMEJhbGFuY2VPZjxUPgAGBHBCb25kIG9mIGEgY2FuZGlkYXRlIHVwZGF0ZWQuQENhbmRpZGF0ZVJlbW92ZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAcEYEEgY2FuZGlkYXRlIHdhcyByZW1vdmVkLkRDYW5kaWRhdGVSZXBsYWNlZAwBDG9sZAQBMFQ6OkFjY291bnRJZAABDG5ldwQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAgE9EFuIGFjY291bnQgd2FzIHJlcGxhY2VkIGluIHRoZSBjYW5kaWRhdGUgbGlzdCBieSBhbm90aGVyIG9uZS5oSW52YWxpZEludnVsbmVyYWJsZVNraXBwZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAkIVQFBbiBhY2NvdW50IHdhcyB1bmFibGUgdG8gYmUgYWRkZWQgdG8gdGhlIEludnVsbmVyYWJsZXMgYmVjYXVzZSB0aGV5IGRpZCBub3QgaGF2ZSBrZXlzyHJlZ2lzdGVyZWQuIE90aGVyIEludnVsbmVyYWJsZXMgbWF5IGhhdmUgYmVlbiBzZXQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0mQgMOHBhbGxldF9zZXNzaW9uGHBhbGxldBRFdmVudAQEVAABEChOZXdTZXNzaW9uBAE0c2Vzc2lvbl9pbmRleDgBMFNlc3Npb25JbmRleAAACDkBTmV3IHNlc3Npb24gaGFzIGhhcHBlbmVkLiBOb3RlIHRoYXQgdGhlIGFyZ3VtZW50IGlzIHRoZSBzZXNzaW9uIGluZGV4LCBub3QgdGhlnGJsb2NrIG51bWJlciBhcyB0aGUgdHlwZSBtaWdodCBzdWdnZXN0LiROZXdRdWV1ZWQAAQhJAVRoZSBgTmV3U2Vzc2lvbmAgZXZlbnQgaW4gdGhlIGN1cnJlbnQgYmxvY2sgYWxzbyBpbXBsaWVzIGEgbmV3IHZhbGlkYXRvciBzZXQgdG8gYmUccXVldWVkLkRWYWxpZGF0b3JEaXNhYmxlZAQBJHZhbGlkYXRvcgQBOFQ6OlZhbGlkYXRvcklkAAIEcFZhbGlkYXRvciBoYXMgYmVlbiBkaXNhYmxlZC5IVmFsaWRhdG9yUmVlbmFibGVkBAEkdmFsaWRhdG9yBAE4VDo6VmFsaWRhdG9ySWQAAwR4VmFsaWRhdG9yIGhhcyBiZWVuIHJlLWVuYWJsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0nQgMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEV2ZW50BARUAAEEPFhjbXBNZXNzYWdlU2VudAQBMG1lc3NhZ2VfaGFzaAgBHFhjbUhhc2gAAATAQW4gSFJNUCBtZXNzYWdlIHdhcyBzZW50IHRvIGEgc2libGluZyBwYXJhY2hhaW4uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0oQgMKHBhbGxldF94Y20YcGFsbGV0FEV2ZW50BARUAAF0JEF0dGVtcHRlZAQBHG91dGNvbWWlCAFQeGNtOjpsYXRlc3Q6Ok91dGNvbWUAAASoRXhlY3V0aW9uIG9mIGFuIFhDTSBtZXNzYWdlIHdhcyBhdHRlbXB0ZWQuEFNlbnQQARhvcmlnaW79AQEgTG9jYXRpb24AASxkZXN0aW5hdGlvbv0BASBMb2NhdGlvbgABHG1lc3NhZ2X1AgEcWGNtPCgpPgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAEEYEFuIFhDTSBtZXNzYWdlIHdhcyBzZW50LihTZW5kRmFpbGVkEAEYb3JpZ2lu/QEBIExvY2F0aW9uAAEsZGVzdGluYXRpb279AQEgTG9jYXRpb24AARRlcnJvcq0IASRTZW5kRXJyb3IAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAACBHhBbiBYQ00gbWVzc2FnZSBmYWlsZWQgdG8gc2VuZC48UHJvY2Vzc1hjbUVycm9yDAEYb3JpZ2lu/QEBIExvY2F0aW9uAAEUZXJyb3IlAwEgWGNtRXJyb3IAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAADBIRBbiBYQ00gbWVzc2FnZSBmYWlsZWQgdG8gcHJvY2Vzcy5IVW5leHBlY3RlZFJlc3BvbnNlCAEYb3JpZ2lu/QEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAQMWQFRdWVyeSByZXNwb25zZSByZWNlaXZlZCB3aGljaCBkb2VzIG5vdCBtYXRjaCBhIHJlZ2lzdGVyZWQgcXVlcnkuIFRoaXMgbWF5IGJlIGJlY2F1c2UgYVUBbWF0Y2hpbmcgcXVlcnkgd2FzIG5ldmVyIHJlZ2lzdGVyZWQsIGl0IG1heSBiZSBiZWNhdXNlIGl0IGlzIGEgZHVwbGljYXRlIHJlc3BvbnNlLCBvcnBiZWNhdXNlIHRoZSBxdWVyeSB0aW1lZCBvdXQuNFJlc3BvbnNlUmVhZHkIASBxdWVyeV9pZCgBHFF1ZXJ5SWQAASByZXNwb25zZRkDASBSZXNwb25zZQAFCF0BUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIGlzIHJlYWR5IGZvciB0YWtpbmcgd2l0aCBgdGFrZV9yZXNwb25zZWAuIFRoZXJlIGlzgG5vIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uIGNhbGwuIE5vdGlmaWVkDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgABghZAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgcmVnaXN0ZXJlZCBub3RpZmljYXRpb24gaGFzqGJlZW4gZGlzcGF0Y2hlZCBhbmQgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5LkBOb3RpZnlPdmVyd2VpZ2h0FAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgAATRhY3R1YWxfd2VpZ2h0EQEBGFdlaWdodAABTG1heF9idWRnZXRlZF93ZWlnaHQRAQEYV2VpZ2h0AAcMSQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uWQFjb3VsZCBub3QgYmUgZGlzcGF0Y2hlZCBiZWNhdXNlIHRoZSBkaXNwYXRjaCB3ZWlnaHQgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHdlaWdodORvcmlnaW5hbGx5IGJ1ZGdldGVkIGJ5IHRoaXMgcnVudGltZSBmb3IgdGhlIHF1ZXJ5IHJlc3VsdC5MTm90aWZ5RGlzcGF0Y2hFcnJvcgwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAgIVQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlcmUgd2FzIGEgZ2VuZXJhbCBlcnJvciB3aXRoiGRpc3BhdGNoaW5nIHRoZSBub3RpZmljYXRpb24gY2FsbC5ITm90aWZ5RGVjb2RlRmFpbGVkDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgACQxRAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgZGlzcGF0Y2ggd2FzIHVuYWJsZSB0byBiZVkBZGVjb2RlZCBpbnRvIGEgYENhbGxgOyB0aGlzIG1pZ2h0IGJlIGR1ZSB0byBkaXNwYXRjaCBmdW5jdGlvbiBoYXZpbmcgYSBzaWduYXR1cmUgd2hpY2iUaXMgbm90IGAob3JpZ2luLCBRdWVyeUlkLCBSZXNwb25zZSlgLkBJbnZhbGlkUmVzcG9uZGVyDAEYb3JpZ2lu/QEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAFEZXhwZWN0ZWRfbG9jYXRpb245AwFAT3B0aW9uPExvY2F0aW9uPgAKDFkBRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBvcmlnaW4gbG9jYXRpb24gb2YgdGhlIHJlc3BvbnNlIGRvZXNVAW5vdCBtYXRjaCB0aGF0IGV4cGVjdGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkIGZvciBhIGxhdGVyLCB2YWxpZCwgcmVzcG9uc2UgdG9sYmUgcmVjZWl2ZWQgYW5kIGFjdGVkIHVwb24uXEludmFsaWRSZXNwb25kZXJWZXJzaW9uCAEYb3JpZ2lu/QEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAscUQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIGV4cGVjdGVkIG9yaWdpbiBsb2NhdGlvbiBwbGFjZWQgaW5NAXN0b3JhZ2UgYnkgdGhpcyBydW50aW1lIHByZXZpb3VzbHkgY2Fubm90IGJlIGRlY29kZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQuAEEBVGhpcyBpcyB1bmV4cGVjdGVkIChzaW5jZSBhIGxvY2F0aW9uIHBsYWNlZCBpbiBzdG9yYWdlIGluIGEgcHJldmlvdXNseSBleGVjdXRpbmdNAXJ1bnRpbWUgc2hvdWxkIGJlIHJlYWRhYmxlIHByaW9yIHRvIHF1ZXJ5IHRpbWVvdXQpIGFuZCBkYW5nZXJvdXMgc2luY2UgdGhlIHBvc3NpYmx5WQF2YWxpZCByZXNwb25zZSB3aWxsIGJlIGRyb3BwZWQuIE1hbnVhbCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyBwcm9iYWJseSBnb2luZyB0byBiZRxuZWVkZWQuNFJlc3BvbnNlVGFrZW4EASBxdWVyeV9pZCgBHFF1ZXJ5SWQADATIUmVjZWl2ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVhZCBhbmQgcmVtb3ZlZC40QXNzZXRzVHJhcHBlZAwBEGhhc2g8ARBIMjU2AAEYb3JpZ2lu/QEBIExvY2F0aW9uAAEYYXNzZXRzbQMBPFZlcnNpb25lZEFzc2V0cwANBLhTb21lIGFzc2V0cyBoYXZlIGJlZW4gcGxhY2VkIGluIGFuIGFzc2V0IHRyYXAuVFZlcnNpb25DaGFuZ2VOb3RpZmllZBABLGRlc3RpbmF0aW9u/QEBIExvY2F0aW9uAAEYcmVzdWx0OAEoWGNtVmVyc2lvbgABEGNvc3QBAwEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gADgwlAUFuIFhDTSB2ZXJzaW9uIGNoYW5nZSBub3RpZmljYXRpb24gbWVzc2FnZSBoYXMgYmVlbiBhdHRlbXB0ZWQgdG8gYmUgc2VudC4A4FRoZSBjb3N0IG9mIHNlbmRpbmcgaXQgKGJvcm5lIGJ5IHRoZSBjaGFpbikgaXMgaW5jbHVkZWQuXFN1cHBvcnRlZFZlcnNpb25DaGFuZ2VkCAEgbG9jYXRpb279AQEgTG9jYXRpb24AARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAPCDkBVGhlIHN1cHBvcnRlZCB2ZXJzaW9uIG9mIGEgbG9jYXRpb24gaGFzIGJlZW4gY2hhbmdlZC4gVGhpcyBtaWdodCBiZSB0aHJvdWdoIGFuwGF1dG9tYXRpYyBub3RpZmljYXRpb24gb3IgYSBtYW51YWwgaW50ZXJ2ZW50aW9uLlBOb3RpZnlUYXJnZXRTZW5kRmFpbAwBIGxvY2F0aW9u/QEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAEUZXJyb3IlAwEgWGNtRXJyb3IAEAhZAUEgZ2l2ZW4gbG9jYXRpb24gd2hpY2ggaGFkIGEgdmVyc2lvbiBjaGFuZ2Ugc3Vic2NyaXB0aW9uIHdhcyBkcm9wcGVkIG93aW5nIHRvIGFuIGVycm9yfHNlbmRpbmcgdGhlIG5vdGlmaWNhdGlvbiB0byBpdC5kTm90aWZ5VGFyZ2V0TWlncmF0aW9uRmFpbAgBIGxvY2F0aW9uqQEBRFZlcnNpb25lZExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkABEIWQFBIGdpdmVuIGxvY2F0aW9uIHdoaWNoIGhhZCBhIHZlcnNpb24gY2hhbmdlIHN1YnNjcmlwdGlvbiB3YXMgZHJvcHBlZCBvd2luZyB0byBhbiBlcnJvcrRtaWdyYXRpbmcgdGhlIGxvY2F0aW9uIHRvIG91ciBuZXcgWENNIGZvcm1hdC5USW52YWxpZFF1ZXJpZXJWZXJzaW9uCAEYb3JpZ2lu/QEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkABIcVQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIGV4cGVjdGVkIHF1ZXJpZXIgbG9jYXRpb24gcGxhY2VkIGluTQFzdG9yYWdlIGJ5IHRoaXMgcnVudGltZSBwcmV2aW91c2x5IGNhbm5vdCBiZSBkZWNvZGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkLgBBAVRoaXMgaXMgdW5leHBlY3RlZCAoc2luY2UgYSBsb2NhdGlvbiBwbGFjZWQgaW4gc3RvcmFnZSBpbiBhIHByZXZpb3VzbHkgZXhlY3V0aW5nTQFydW50aW1lIHNob3VsZCBiZSByZWFkYWJsZSBwcmlvciB0byBxdWVyeSB0aW1lb3V0KSBhbmQgZGFuZ2Vyb3VzIHNpbmNlIHRoZSBwb3NzaWJseVkBdmFsaWQgcmVzcG9uc2Ugd2lsbCBiZSBkcm9wcGVkLiBNYW51YWwgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUcbmVlZGVkLjhJbnZhbGlkUXVlcmllchABGG9yaWdpbv0BASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAABQGV4cGVjdGVkX3F1ZXJpZXL9AQEgTG9jYXRpb24AAVBtYXliZV9hY3R1YWxfcXVlcmllcjkDAUBPcHRpb248TG9jYXRpb24+ABMMXQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIHF1ZXJpZXIgbG9jYXRpb24gb2YgdGhlIHJlc3BvbnNlIGRvZXNRAW5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5QVmVyc2lvbk5vdGlmeVN0YXJ0ZWQMASxkZXN0aW5hdGlvbv0BASBMb2NhdGlvbgABEGNvc3QBAwEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFAhZAUEgcmVtb3RlIGhhcyByZXF1ZXN0ZWQgWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBmcm9tIHVzIGFuZCB3ZSBoYXZlIGhvbm9yZWQgaXQuHQFBIHZlcnNpb24gaW5mb3JtYXRpb24gbWVzc2FnZSBpcyBzZW50IHRvIHRoZW0gYW5kIGl0cyBjb3N0IGlzIGluY2x1ZGVkLlhWZXJzaW9uTm90aWZ5UmVxdWVzdGVkDAEsZGVzdGluYXRpb279AQEgTG9jYXRpb24AARBjb3N0AQMBGEFzc2V0cwABKG1lc3NhZ2VfaWQIARxYY21IYXNoABUEPQFXZSBoYXZlIHJlcXVlc3RlZCB0aGF0IGEgcmVtb3RlIGNoYWluIHNlbmQgdXMgWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbnMuYFZlcnNpb25Ob3RpZnlVbnJlcXVlc3RlZAwBLGRlc3RpbmF0aW9u/QEBIExvY2F0aW9uAAEQY29zdAEDARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAWCCUBV2UgaGF2ZSByZXF1ZXN0ZWQgdGhhdCBhIHJlbW90ZSBjaGFpbiBzdG9wcyBzZW5kaW5nIHVzIFhDTSB2ZXJzaW9uIGNoYW5nZThub3RpZmljYXRpb25zLiBGZWVzUGFpZAgBGHBheWluZ/0BASBMb2NhdGlvbgABEGZlZXMBAwEYQXNzZXRzABcEMQFGZWVzIHdlcmUgcGFpZCBmcm9tIGEgbG9jYXRpb24gZm9yIGFuIG9wZXJhdGlvbiAob2Z0ZW4gZm9yIHVzaW5nIGBTZW5kWGNtYCkuNEFzc2V0c0NsYWltZWQMARBoYXNoPAEQSDI1NgABGG9yaWdpbv0BASBMb2NhdGlvbgABGGFzc2V0c20DATxWZXJzaW9uZWRBc3NldHMAGATAU29tZSBhc3NldHMgaGF2ZSBiZWVuIGNsYWltZWQgZnJvbSBhbiBhc3NldCB0cmFwYFZlcnNpb25NaWdyYXRpb25GaW5pc2hlZAQBHHZlcnNpb244AShYY21WZXJzaW9uABkEhEEgWENNIHZlcnNpb24gbWlncmF0aW9uIGZpbmlzaGVkLjxBbGlhc0F1dGhvcml6ZWQMARxhbGlhc2Vy/QEBIExvY2F0aW9uAAEYdGFyZ2V0/QEBIExvY2F0aW9uAAEYZXhwaXJ5/AEsT3B0aW9uPHU2ND4AGghdAUFuIGBhbGlhc2VyYCBsb2NhdGlvbiB3YXMgYXV0aG9yaXplZCBieSBgdGFyZ2V0YCB0byBhbGlhcyBpdCwgYXV0aG9yaXphdGlvbiB2YWxpZCB1bnRpbFhgZXhwaXJ5YCBibG9jayBudW1iZXIuZEFsaWFzQXV0aG9yaXphdGlvblJlbW92ZWQIARxhbGlhc2Vy/QEBIExvY2F0aW9uAAEYdGFyZ2V0/QEBIExvY2F0aW9uABsEzGB0YXJnZXRgIHJlbW92ZWQgYWxpYXMgYXV0aG9yaXphdGlvbiBmb3IgYGFsaWFzZXJgLnBBbGlhc2VzQXV0aG9yaXphdGlvbnNSZW1vdmVkBAEYdGFyZ2V0/QEBIExvY2F0aW9uABwEqGB0YXJnZXRgIHJlbW92ZWQgYWxsIGFsaWFzIGF1dGhvcml6YXRpb25zLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldKUIECxzdGFnaW5nX3hjbQh2NRh0cmFpdHMcT3V0Y29tZQABDCBDb21wbGV0ZQQBEHVzZWQRAQEYV2VpZ2h0AAAAKEluY29tcGxldGUIARB1c2VkEQEBGFdlaWdodAABFGVycm9yqQgBQEluc3RydWN0aW9uRXJyb3IAAQAURXJyb3IEAKkIAUBJbnN0cnVjdGlvbkVycm9yAAIAAKkIECxzdGFnaW5nX3hjbQh2NRh0cmFpdHNASW5zdHJ1Y3Rpb25FcnJvcgAACAEUaW5kZXgMAUBJbnN0cnVjdGlvbkluZGV4AAEUZXJyb3IlAwEURXJyb3IAAK0IEAx4Y20IdjMYdHJhaXRzJFNlbmRFcnJvcgABHDROb3RBcHBsaWNhYmxlAAAAJFRyYW5zcG9ydAABAChVbnJvdXRhYmxlAAIAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQAAwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAQAPE1pc3NpbmdBcmd1bWVudAAFABBGZWVzAAYAALEIDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0FEV2ZW50BARUAAEMNEludmFsaWRGb3JtYXQEAAgBIFt1ODsgMzJdAAAIgERvd253YXJkIG1lc3NhZ2UgaXMgaW52YWxpZCBYQ00uIFxbIGlkIFxdSFVuc3VwcG9ydGVkVmVyc2lvbgQACAEgW3U4OyAzMl0AAQi8RG93bndhcmQgbWVzc2FnZSBpcyB1bnN1cHBvcnRlZCB2ZXJzaW9uIG9mIFhDTS4gXFsgaWQgXF1ARXhlY3V0ZWREb3dud2FyZAgACAEgW3U4OyAzMl0AAKUIARxPdXRjb21lAAIIxERvd253YXJkIG1lc3NhZ2UgZXhlY3V0ZWQgd2l0aCB0aGUgZ2l2ZW4gb3V0Y29tZS5EXFsgaWQsIG91dGNvbWUgXF0EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXS1CAxwcGFsbGV0X3hjbV9icmlkZ2VfaHViX3JvdXRlchhwYWxsZXQURXZlbnQIBFQABEkAAQhoRGVsaXZlcnlGZWVGYWN0b3JEZWNyZWFzZWQEASRuZXdfdmFsdWUNBQEkRml4ZWRVMTI4BJROZXcgdmFsdWUgb2YgdGhlIGBEZWxpdmVyeUZlZUZhY3RvcmAuAAScRGVsaXZlcnkgZmVlIGZhY3RvciBoYXMgYmVlbiBkZWNyZWFzZWQuaERlbGl2ZXJ5RmVlRmFjdG9ySW5jcmVhc2VkBAEkbmV3X3ZhbHVlDQUBJEZpeGVkVTEyOASUTmV3IHZhbHVlIG9mIHRoZSBgRGVsaXZlcnlGZWVGYWN0b3JgLgEEnERlbGl2ZXJ5IGZlZSBmYWN0b3IgaGFzIGJlZW4gaW5jcmVhc2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldLkIDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQURXZlbnQEBFQAARBAUHJvY2Vzc2luZ0ZhaWxlZAwBCGlkPAEQSDI1NgSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2lusQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEUZXJyb3K9CAFMUHJvY2Vzc01lc3NhZ2VFcnJvchBgVGhlIGVycm9yIHRoYXQgb2NjdXJyZWQuAEkBVGhpcyBlcnJvciBpcyBwcmV0dHkgb3BhcXVlLiBNb3JlIGZpbmUtZ3JhaW5lZCBlcnJvcnMgbmVlZCB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgAEVQFNZXNzYWdlIGRpc2NhcmRlZCBkdWUgdG8gYW4gZXJyb3IgaW4gdGhlIGBNZXNzYWdlUHJvY2Vzc29yYCAodXN1YWxseSBhIGZvcm1hdCBlcnJvcikuJFByb2Nlc3NlZBABCGlkPAEQSDI1NgSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2lusQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEsd2VpZ2h0X3VzZWQRAQEYV2VpZ2h0BMBIb3cgbXVjaCB3ZWlnaHQgd2FzIHVzZWQgdG8gcHJvY2VzcyB0aGUgbWVzc2FnZS4BHHN1Y2Nlc3NZAQEQYm9vbBiIV2hldGhlciB0aGUgbWVzc2FnZSB3YXMgcHJvY2Vzc2VkLgBJAU5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IG1lYW4gdGhhdCB0aGUgdW5kZXJseWluZyBgTWVzc2FnZVByb2Nlc3NvcmAgd2FzIGludGVybmFsbHk1AXN1Y2Nlc3NmdWwuIEl0ICpzb2xlbHkqIG1lYW5zIHRoYXQgdGhlIE1RIHBhbGxldCB3aWxsIHRyZWF0IHRoaXMgYXMgYSBzdWNjZXNzTQFjb25kaXRpb24gYW5kIGRpc2NhcmQgdGhlIG1lc3NhZ2UuIEFueSBpbnRlcm5hbCBlcnJvciBuZWVkcyB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgEEVE1lc3NhZ2UgaXMgcHJvY2Vzc2VkLkhPdmVyd2VpZ2h0RW5xdWV1ZWQQAQhpZAgBIFt1ODsgMzJdBJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW6xAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuAShwYWdlX2luZGV4OAEkUGFnZUluZGV4BGBUaGUgcGFnZSBvZiB0aGUgbWVzc2FnZS4BNG1lc3NhZ2VfaW5kZXg4ARxUOjpTaXplBKRUaGUgaW5kZXggb2YgdGhlIG1lc3NhZ2Ugd2l0aGluIHRoZSBwYWdlLgIEjE1lc3NhZ2UgcGxhY2VkIGluIG92ZXJ3ZWlnaHQgcXVldWUuKFBhZ2VSZWFwZWQIARhvcmlnaW6xAwFITWVzc2FnZU9yaWdpbk9mPFQ+BFhUaGUgcXVldWUgb2YgdGhlIHBhZ2UuARRpbmRleDgBJFBhZ2VJbmRleARYVGhlIGluZGV4IG9mIHRoZSBwYWdlLgMEVFRoaXMgcGFnZSB3YXMgcmVhcGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldL0IEDRmcmFtZV9zdXBwb3J0GHRyYWl0cyBtZXNzYWdlc0xQcm9jZXNzTWVzc2FnZUVycm9yAAEYJEJhZEZvcm1hdAAAABxDb3JydXB0AAEALFVuc3VwcG9ydGVkAAIAKE92ZXJ3ZWlnaHQEABEBARhXZWlnaHQAAwAUWWllbGQABABEU3RhY2tMaW1pdFJlYWNoZWQABQAAwQgMhHNub3dicmlkZ2VfcGFsbGV0X3N5c3RlbV9mcm9udGVuZBhwYWxsZXQURXZlbnQEBFQAAQgsTWVzc2FnZVNlbnQQARhvcmlnaW79AQEgTG9jYXRpb24AASxkZXN0aW5hdGlvbv0BASBMb2NhdGlvbgABHG1lc3NhZ2X1AgEcWGNtPCgpPgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAAEPEFuIFhDTSB3YXMgc2VudGhFeHBvcnRPcGVyYXRpbmdNb2RlQ2hhbmdlZAQBEG1vZGW5AwE0T3BlcmF0aW5nTW9kZQABBERTZXQgT3BlcmF0aW5nTW9kZQR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMUIDDhwYWxsZXRfdXRpbGl0eRhwYWxsZXQURXZlbnQAASBAQmF0Y2hJbnRlcnJ1cHRlZAgBFGluZGV4OAEMdTMyAAEUZXJyb3L5BwE0RGlzcGF0Y2hFcnJvcgAACFUBQmF0Y2ggb2YgZGlzcGF0Y2hlcyBkaWQgbm90IGNvbXBsZXRlIGZ1bGx5LiBJbmRleCBvZiBmaXJzdCBmYWlsaW5nIGRpc3BhdGNoIGdpdmVuLCBhc0h3ZWxsIGFzIHRoZSBlcnJvci44QmF0Y2hDb21wbGV0ZWQAAQTIQmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgZnVsbHkgd2l0aCBubyBlcnJvci5gQmF0Y2hDb21wbGV0ZWRXaXRoRXJyb3JzAAIEtEJhdGNoIG9mIGRpc3BhdGNoZXMgY29tcGxldGVkIGJ1dCBoYXMgZXJyb3JzLjRJdGVtQ29tcGxldGVkAAMEHQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIG5vIGVycm9yLihJdGVtRmFpbGVkBAEUZXJyb3L5BwE0RGlzcGF0Y2hFcnJvcgAEBBEBQSBzaW5nbGUgaXRlbSB3aXRoaW4gYSBCYXRjaCBvZiBkaXNwYXRjaGVzIGhhcyBjb21wbGV0ZWQgd2l0aCBlcnJvci4wRGlzcGF0Y2hlZEFzBAEYcmVzdWx0HQgBOERpc3BhdGNoUmVzdWx0AAUEWEEgY2FsbCB3YXMgZGlzcGF0Y2hlZC5ESWZFbHNlTWFpblN1Y2Nlc3MABgRkTWFpbiBjYWxsIHdhcyBkaXNwYXRjaGVkLlBJZkVsc2VGYWxsYmFja0NhbGxlZAQBKG1haW5fZXJyb3L5BwE0RGlzcGF0Y2hFcnJvcgAHBIRUaGUgZmFsbGJhY2sgY2FsbCB3YXMgZGlzcGF0Y2hlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTJCAw8cGFsbGV0X211bHRpc2lnGHBhbGxldBRFdmVudAQEVAABFCxOZXdNdWx0aXNpZwwBJGFwcHJvdmluZwQBMFQ6OkFjY291bnRJZAABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAAASMQSBuZXcgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWd1bi5ATXVsdGlzaWdBcHByb3ZhbBABJGFwcHJvdmluZwQBMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludBUEAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAABBMhBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBhcHByb3ZlZCBieSBzb21lb25lLkBNdWx0aXNpZ0V4ZWN1dGVkFAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50FQQBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEYcmVzdWx0HQgBOERpc3BhdGNoUmVzdWx0AAIEnEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGV4ZWN1dGVkLkRNdWx0aXNpZ0NhbmNlbGxlZBABKGNhbmNlbGxpbmcEATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnQVBAFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAAwSgQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gY2FuY2VsbGVkLjBEZXBvc2l0UG9rZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAABLG9sZF9kZXBvc2l0VQEBMEJhbGFuY2VPZjxUPgABLG5ld19kZXBvc2l0VQEBMEJhbGFuY2VPZjxUPgAEBPBUaGUgZGVwb3NpdCBmb3IgYSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gdXBkYXRlZC9wb2tlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTNCAwwcGFsbGV0X3Byb3h5GHBhbGxldBRFdmVudAQEVAABHDRQcm94eUV4ZWN1dGVkBAEYcmVzdWx0HQgBOERpc3BhdGNoUmVzdWx0AAAEvEEgcHJveHkgd2FzIGV4ZWN1dGVkIGNvcnJlY3RseSwgd2l0aCB0aGUgZ2l2ZW4uLFB1cmVDcmVhdGVkGAEQcHVyZQQBMFQ6OkFjY291bnRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGUhBAEwVDo6UHJveHlUeXBlAAFQZGlzYW1iaWd1YXRpb25faW5kZXjRAwEMdTE2AAEIYXQ4AURCbG9ja051bWJlckZvcjxUPgABPGV4dHJpbnNpY19pbmRleDgBDHUzMgABCNxBIHB1cmUgYWNjb3VudCBoYXMgYmVlbiBjcmVhdGVkIGJ5IG5ldyBwcm94eSB3aXRoIGdpdmVukGRpc2FtYmlndWF0aW9uIGluZGV4IGFuZCBwcm94eSB0eXBlLihQdXJlS2lsbGVkEAEQcHVyZQQBMFQ6OkFjY291bnRJZAABHHNwYXduZXIEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlIQQBMFQ6OlByb3h5VHlwZQABUGRpc2FtYmlndWF0aW9uX2luZGV40QMBDHUxNgACBJxBIHB1cmUgcHJveHkgd2FzIGtpbGxlZCBieSBpdHMgc3Bhd25lci4kQW5ub3VuY2VkDAEQcmVhbAQBMFQ6OkFjY291bnRJZAABFHByb3h5BAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgADBOBBbiBhbm5vdW5jZW1lbnQgd2FzIHBsYWNlZCB0byBtYWtlIGEgY2FsbCBpbiB0aGUgZnV0dXJlLihQcm94eUFkZGVkEAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdGVlBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZSEEATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAQESEEgcHJveHkgd2FzIGFkZGVkLjBQcm94eVJlbW92ZWQQASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0ZWUEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlIQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4ABQRQQSBwcm94eSB3YXMgcmVtb3ZlZC4wRGVwb3NpdFBva2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEQa2luZNEIASxEZXBvc2l0S2luZAABLG9sZF9kZXBvc2l0VQEBMEJhbGFuY2VPZjxUPgABLG5ld19kZXBvc2l0VQEBMEJhbGFuY2VPZjxUPgAGBAkBQSBkZXBvc2l0IHN0b3JlZCBmb3IgcHJveGllcyBvciBhbm5vdW5jZW1lbnRzIHdhcyBwb2tlZCAvIHVwZGF0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV00QgIMHBhbGxldF9wcm94eSxEZXBvc2l0S2luZAABCBxQcm94aWVzAAAANEFubm91bmNlbWVudHMAAQAA1QgMOHBhbGxldF9pbmRpY2VzGHBhbGxldBRFdmVudAQEVAABEDRJbmRleEFzc2lnbmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAAAR0QSBhY2NvdW50IGluZGV4IHdhcyBhc3NpZ25lZC4oSW5kZXhGcmVlZAQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAEEvEEgYWNjb3VudCBpbmRleCBoYXMgYmVlbiBmcmVlZCB1cCAodW5hc3NpZ25lZCkuLEluZGV4RnJvemVuCAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAAQx3aG8EATBUOjpBY2NvdW50SWQAAgToQSBhY2NvdW50IGluZGV4IGhhcyBiZWVuIGZyb3plbiB0byBpdHMgY3VycmVudCBhY2NvdW50IElELjBEZXBvc2l0UG9rZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAABLG9sZF9kZXBvc2l0VQEBMEJhbGFuY2VPZjxUPgABLG5ld19kZXBvc2l0VQEBMEJhbGFuY2VPZjxUPgADBOhBIGRlcG9zaXQgdG8gcmVzZXJ2ZSBhbiBpbmRleCBoYXMgYmVlbiBwb2tlZC9yZWNvbnNpZGVyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV02QgMNHBhbGxldF9hc3NldHMYcGFsbGV0FEV2ZW50CARUAARJAAGAHENyZWF0ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARxjcmVhdG9yBAEwVDo6QWNjb3VudElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAAR0U29tZSBhc3NldCBjbGFzcyB3YXMgY3JlYXRlZC4YSXNzdWVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQABBGBTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZC4sVHJhbnNmZXJyZWQQASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQACBHRTb21lIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkLhhCdXJuZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABHGJhbGFuY2VVAQEoVDo6QmFsYW5jZQADBGxTb21lIGFzc2V0cyB3ZXJlIGRlc3Ryb3llZC4sVGVhbUNoYW5nZWQQASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhpc3N1ZXIEATBUOjpBY2NvdW50SWQAARRhZG1pbgQBMFQ6OkFjY291bnRJZAABHGZyZWV6ZXIEATBUOjpBY2NvdW50SWQABARwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLjBPd25lckNoYW5nZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAFBEhUaGUgb3duZXIgY2hhbmdlZC4YRnJvemVuCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAYEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgZnJvemVuLhhUaGF3ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABwR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyB0aGF3ZWQuLEFzc2V0RnJvemVuBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAgEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgZnJvemVuLixBc3NldFRoYXdlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAJBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIHRoYXdlZC5EQWNjb3VudHNEZXN0cm95ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAUhhY2NvdW50c19kZXN0cm95ZWQ4AQx1MzIAAUhhY2NvdW50c19yZW1haW5pbmc4AQx1MzIACgSgQWNjb3VudHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhBcHByb3ZhbHNEZXN0cm95ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAUxhcHByb3ZhbHNfZGVzdHJveWVkOAEMdTMyAAFMYXBwcm92YWxzX3JlbWFpbmluZzgBDHUzMgALBKRBcHByb3ZhbHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhEZXN0cnVjdGlvblN0YXJ0ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQADATQQW4gYXNzZXQgY2xhc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZGVzdHJveWVkLiREZXN0cm95ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQADQR0QW4gYXNzZXQgY2xhc3Mgd2FzIGRlc3Ryb3llZC4wRm9yY2VDcmVhdGVkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQADgSMU29tZSBhc3NldCBjbGFzcyB3YXMgZm9yY2UtY3JlYXRlZC4sTWV0YWRhdGFTZXQUASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVuWQEBEGJvb2wADwScTmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYW4gYXNzZXQuPE1ldGFkYXRhQ2xlYXJlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAQBJxNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBhc3NldC5AQXBwcm92ZWRUcmFuc2ZlchABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAEQQxAShBZGRpdGlvbmFsKSBmdW5kcyBoYXZlIGJlZW4gYXBwcm92ZWQgZm9yIHRyYW5zZmVyIHRvIGEgZGVzdGluYXRpb24gYWNjb3VudC5EQXBwcm92YWxDYW5jZWxsZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkABIE8EFuIGFwcHJvdmFsIGZvciBhY2NvdW50IGBkZWxlZ2F0ZWAgd2FzIGNhbmNlbGxlZCBieSBgb3duZXJgLkxUcmFuc2ZlcnJlZEFwcHJvdmVkFAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAEwgxAUFuIGBhbW91bnRgIHdhcyB0cmFuc2ZlcnJlZCBpbiBpdHMgZW50aXJldHkgZnJvbSBgb3duZXJgIHRvIGBkZXN0aW5hdGlvbmAgYnlgdGhlIGFwcHJvdmVkIGBkZWxlZ2F0ZWAuSEFzc2V0U3RhdHVzQ2hhbmdlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAUBPhBbiBhc3NldCBoYXMgaGFkIGl0cyBhdHRyaWJ1dGVzIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlhBc3NldE1pbkJhbGFuY2VDaGFuZ2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAE8bmV3X21pbl9iYWxhbmNlVQEBKFQ6OkJhbGFuY2UAFQQBAVRoZSBtaW5fYmFsYW5jZSBvZiBhbiBhc3NldCBoYXMgYmVlbiB1cGRhdGVkIGJ5IHRoZSBhc3NldCBvd25lci4cVG91Y2hlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABJGRlcG9zaXRvcgQBMFQ6OkFjY291bnRJZAAWBPxTb21lIGFjY291bnQgYHdob2Agd2FzIGNyZWF0ZWQgd2l0aCBhIGRlcG9zaXQgZnJvbSBgZGVwb3NpdG9yYC4cQmxvY2tlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAXBHxTb21lIGFjY291bnQgYHdob2Agd2FzIGJsb2NrZWQuJERlcG9zaXRlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlABgE3FNvbWUgYXNzZXRzIHdlcmUgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4kV2l0aGRyYXduDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAGQQhAVNvbWUgYXNzZXRzIHdlcmUgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLjxSZXNlcnZlc1VwZGF0ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAASByZXNlcnZlczEEAUxWZWM8VDo6UmVzZXJ2ZURhdGE+ABoE2FJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHNldCBvciB1cGRhdGVkIGZvciBgYXNzZXRfaWRgLjxSZXNlcnZlc1JlbW92ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAGwS8UmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgcmVtb3ZlZCBmb3IgYGFzc2V0X2lkYC4wSXNzdWVkQ3JlZGl0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAHATEU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQgYXMgQ3JlZGl0IChubyBvd25lciB5ZXQpLjBCdXJuZWRDcmVkaXQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAdBIRTb21lIGFzc2V0cyBDcmVkaXQgd2FzIGRlc3Ryb3llZC4oSXNzdWVkRGVidAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAB4EvFNvbWUgYXNzZXRzIHdlcmUgYnVybmVkIGFuZCBhIERlYnQgd2FzIGNyZWF0ZWQuKEJ1cm5lZERlYnQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAfBMxTb21lIGFzc2V0cyBEZWJ0IHdhcyBkZXN0cm95ZWQgKGFuZCBhc3NldHMgaXNzdWVkKS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTdCAw4cGFsbGV0X3VuaXF1ZXMYcGFsbGV0FEV2ZW50CARUAARJAAFsHENyZWF0ZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEbEEgYGNvbGxlY3Rpb25gIHdhcyBjcmVhdGVkLjBGb3JjZUNyZWF0ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAQSEQSBgY29sbGVjdGlvbmAgd2FzIGZvcmNlLWNyZWF0ZWQuJERlc3Ryb3llZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAgR0QSBgY29sbGVjdGlvbmAgd2FzIGRlc3Ryb3llZC4YSXNzdWVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAADBFRBbiBgaXRlbWAgd2FzIGlzc3VlZC4sVHJhbnNmZXJyZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAAEBGhBbiBgaXRlbWAgd2FzIHRyYW5zZmVycmVkLhhCdXJuZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUEYEFuIGBpdGVtYCB3YXMgZGVzdHJveWVkLhhGcm96ZW4IAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAGBFxTb21lIGBpdGVtYCB3YXMgZnJvemVuLhhUaGF3ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAHBFxTb21lIGBpdGVtYCB3YXMgdGhhd2VkLkBDb2xsZWN0aW9uRnJvemVuBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAIBHRTb21lIGBjb2xsZWN0aW9uYCB3YXMgZnJvemVuLkBDb2xsZWN0aW9uVGhhd2VkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAJBHRTb21lIGBjb2xsZWN0aW9uYCB3YXMgdGhhd2VkLjBPd25lckNoYW5nZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkbmV3X293bmVyBAEwVDo6QWNjb3VudElkAAoESFRoZSBvd25lciBjaGFuZ2VkLixUZWFtQ2hhbmdlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARhpc3N1ZXIEATBUOjpBY2NvdW50SWQAARRhZG1pbgQBMFQ6OkFjY291bnRJZAABHGZyZWV6ZXIEATBUOjpBY2NvdW50SWQACwRwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLkBBcHByb3ZlZFRyYW5zZmVyEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAwIMQFBbiBgaXRlbWAgb2YgYSBgY29sbGVjdGlvbmAgaGFzIGJlZW4gYXBwcm92ZWQgYnkgdGhlIGBvd25lcmAgZm9yIHRyYW5zZmVyIGJ5NGEgYGRlbGVnYXRlYC5EQXBwcm92YWxDYW5jZWxsZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQADQgZAUFuIGFwcHJvdmFsIGZvciBhIGBkZWxlZ2F0ZWAgYWNjb3VudCB0byB0cmFuc2ZlciB0aGUgYGl0ZW1gIG9mIGFuIGl0ZW2oYGNvbGxlY3Rpb25gIHdhcyBjYW5jZWxsZWQgYnkgaXRzIGBvd25lcmAuREl0ZW1TdGF0dXNDaGFuZ2VkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAOBBEBQSBgY29sbGVjdGlvbmAgaGFzIGhhZCBpdHMgYXR0cmlidXRlcyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5UQ29sbGVjdGlvbk1ldGFkYXRhU2V0DAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGFFBAF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuWQEBEGJvb2wADwS0TmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYSBgY29sbGVjdGlvbmAuZENvbGxlY3Rpb25NZXRhZGF0YUNsZWFyZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkABAEtE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGEgYGNvbGxlY3Rpb25gLixNZXRhZGF0YVNldBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGF0YUUEAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AASRpc19mcm96ZW5ZAQEQYm9vbAARBJhOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBpdGVtLjxNZXRhZGF0YUNsZWFyZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAASBJhNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBpdGVtLixSZWRlcG9zaXRlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAUBzdWNjZXNzZnVsX2l0ZW1zQQQBOFZlYzxUOjpJdGVtSWQ+ABMEmE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGl0ZW0uMEF0dHJpYnV0ZVNldBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXnBAwFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWV4AXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAUBAUBTmV3IGF0dHJpYnV0ZSBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGEgYGNvbGxlY3Rpb25gIG9yIGBpdGVtYC5AQXR0cmlidXRlQ2xlYXJlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXnBAwFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+ABUEBQFBdHRyaWJ1dGUgbWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAgb3IgYGl0ZW1gLmhPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABQG1heWJlX2NvbGxlY3Rpb27gAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAWBMBPd25lcnNoaXAgYWNjZXB0YW5jZSBoYXMgY2hhbmdlZCBmb3IgYW4gYWNjb3VudC5YQ29sbGVjdGlvbk1heFN1cHBseVNldAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXhfc3VwcGx5OAEMdTMyABcEpE1heCBzdXBwbHkgaGFzIGJlZW4gc2V0IGZvciBhIGNvbGxlY3Rpb24uMEl0ZW1QcmljZVNldBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUcHJpY2VVAQE8SXRlbVByaWNlPFQsIEk+AAFEd2hpdGVsaXN0ZWRfYnV5ZXKNAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AGASMVGhlIHByaWNlIHdhcyBzZXQgZm9yIHRoZSBpbnN0YW5jZS5ASXRlbVByaWNlUmVtb3ZlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABkEnFRoZSBwcmljZSBmb3IgdGhlIGluc3RhbmNlIHdhcyByZW1vdmVkLihJdGVtQm91Z2h0FAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZVUBATxJdGVtUHJpY2U8VCwgST4AARhzZWxsZXIEATBUOjpBY2NvdW50SWQAARRidXllcgQBMFQ6OkFjY291bnRJZAAaBExBbiBpdGVtIHdhcyBib3VnaHQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV04QgMLHBhbGxldF9uZnRzGHBhbGxldBRFdmVudAgEVAAESQABmBxDcmVhdGVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABGxBIGBjb2xsZWN0aW9uYCB3YXMgY3JlYXRlZC4wRm9yY2VDcmVhdGVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEEhEEgYGNvbGxlY3Rpb25gIHdhcyBmb3JjZS1jcmVhdGVkLiREZXN0cm95ZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAIEdEEgYGNvbGxlY3Rpb25gIHdhcyBkZXN0cm95ZWQuGElzc3VlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAwRUQW4gYGl0ZW1gIHdhcyBpc3N1ZWQuLFRyYW5zZmVycmVkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQABARoQW4gYGl0ZW1gIHdhcyB0cmFuc2ZlcnJlZC4YQnVybmVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAFBGBBbiBgaXRlbWAgd2FzIGRlc3Ryb3llZC5ISXRlbVRyYW5zZmVyTG9ja2VkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQABgSIQW4gYGl0ZW1gIGJlY2FtZSBub24tdHJhbnNmZXJhYmxlLlBJdGVtVHJhbnNmZXJVbmxvY2tlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAcEeEFuIGBpdGVtYCBiZWNhbWUgdHJhbnNmZXJhYmxlLlBJdGVtUHJvcGVydGllc0xvY2tlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAE0bG9ja19tZXRhZGF0YVkBARBib29sAAE8bG9ja19hdHRyaWJ1dGVzWQEBEGJvb2wACASoYGl0ZW1gIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZXMgd2VyZSBsb2NrZWQuQENvbGxlY3Rpb25Mb2NrZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAkEdFNvbWUgYGNvbGxlY3Rpb25gIHdhcyBsb2NrZWQuME93bmVyQ2hhbmdlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXIEATBUOjpBY2NvdW50SWQACgRIVGhlIG93bmVyIGNoYW5nZWQuLFRlYW1DaGFuZ2VkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3Vlco0BAVBPcHRpb248VDo6QWNjb3VudElkPgABFGFkbWlujQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEcZnJlZXplco0BAVBPcHRpb248VDo6QWNjb3VudElkPgALBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuQFRyYW5zZmVyQXBwcm92ZWQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAASBkZWFkbGluZeABcE9wdGlvbjxCbG9ja051bWJlckZvcjxULCBJPj4ADAgxAUFuIGBpdGVtYCBvZiBhIGBjb2xsZWN0aW9uYCBoYXMgYmVlbiBhcHByb3ZlZCBieSB0aGUgYG93bmVyYCBmb3IgdHJhbnNmZXIgYnk0YSBgZGVsZWdhdGVgLkRBcHByb3ZhbENhbmNlbGxlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAANCBkBQW4gYXBwcm92YWwgZm9yIGEgYGRlbGVnYXRlYCBhY2NvdW50IHRvIHRyYW5zZmVyIHRoZSBgaXRlbWAgb2YgYW4gaXRlbahgY29sbGVjdGlvbmAgd2FzIGNhbmNlbGxlZCBieSBpdHMgYG93bmVyYC5UQWxsQXBwcm92YWxzQ2FuY2VsbGVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBJxBbGwgYXBwcm92YWxzIG9mIGFuIGl0ZW0gZ290IGNhbmNlbGxlZC5cQ29sbGVjdGlvbkNvbmZpZ0NoYW5nZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAA8EAQFBIGBjb2xsZWN0aW9uYCBoYXMgaGFkIGl0cyBjb25maWcgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uVENvbGxlY3Rpb25NZXRhZGF0YVNldAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBkYXRhQQEBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAQBLROZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhIGBjb2xsZWN0aW9uYC5kQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAEQS0TWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAuPEl0ZW1NZXRhZGF0YVNldAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGF0YUEBAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AEgSYTmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYW4gaXRlbS5MSXRlbU1ldGFkYXRhQ2xlYXJlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABMEmE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGl0ZW0uLFJlZGVwb3NpdGVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABQHN1Y2Nlc3NmdWxfaXRlbXNBBAE4VmVjPFQ6Okl0ZW1JZD4AFAQhAVRoZSBkZXBvc2l0IGZvciBhIHNldCBvZiBgaXRlbWBzIHdpdGhpbiBhIGBjb2xsZWN0aW9uYCBoYXMgYmVlbiB1cGRhdGVkLjBBdHRyaWJ1dGVTZXQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeABRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5eAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWVBAQF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AASRuYW1lc3BhY2V9BAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AFQQFAU5ldyBhdHRyaWJ1dGUgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhIGBjb2xsZWN0aW9uYCBvciBgaXRlbWAuQEF0dHJpYnV0ZUNsZWFyZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeABRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5eAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEkbmFtZXNwYWNlfQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+ABYEBQFBdHRyaWJ1dGUgbWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAgb3IgYGl0ZW1gLmxJdGVtQXR0cmlidXRlc0FwcHJvdmFsQWRkZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkABcEzEEgbmV3IGFwcHJvdmFsIHRvIG1vZGlmeSBpdGVtIGF0dHJpYnV0ZXMgd2FzIGFkZGVkLnRJdGVtQXR0cmlidXRlc0FwcHJvdmFsUmVtb3ZlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAGATUQSBuZXcgYXBwcm92YWwgdG8gbW9kaWZ5IGl0ZW0gYXR0cmlidXRlcyB3YXMgcmVtb3ZlZC5oT3duZXJzaGlwQWNjZXB0YW5jZUNoYW5nZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAAUBtYXliZV9jb2xsZWN0aW9u4AFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AGQTAT3duZXJzaGlwIGFjY2VwdGFuY2UgaGFzIGNoYW5nZWQgZm9yIGFuIGFjY291bnQuWENvbGxlY3Rpb25NYXhTdXBwbHlTZXQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseTgBDHUzMgAaBKRNYXggc3VwcGx5IGhhcyBiZWVuIHNldCBmb3IgYSBjb2xsZWN0aW9uLnRDb2xsZWN0aW9uTWludFNldHRpbmdzVXBkYXRlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAGwSsTWludCBzZXR0aW5ncyBmb3IgYSBjb2xsZWN0aW9uIGhhZCBjaGFuZ2VkLmxOZXh0Q29sbGVjdGlvbklkSW5jcmVtZW50ZWQEARxuZXh0X2lk4AFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AHAQBAUV2ZW50IGdldHMgZW1pdHRlZCB3aGVuIHRoZSBgTmV4dENvbGxlY3Rpb25JZGAgZ2V0cyBpbmNyZW1lbnRlZC4wSXRlbVByaWNlU2V0EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZVUBATxJdGVtUHJpY2U8VCwgST4AAUR3aGl0ZWxpc3RlZF9idXllco0BAVBPcHRpb248VDo6QWNjb3VudElkPgAdBHxUaGUgcHJpY2Ugd2FzIHNldCBmb3IgdGhlIGl0ZW0uQEl0ZW1QcmljZVJlbW92ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAeBIxUaGUgcHJpY2UgZm9yIHRoZSBpdGVtIHdhcyByZW1vdmVkLihJdGVtQm91Z2h0FAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZVUBATxJdGVtUHJpY2U8VCwgST4AARhzZWxsZXIEATBUOjpBY2NvdW50SWQAARRidXllcgQBMFQ6OkFjY291bnRJZAAfBExBbiBpdGVtIHdhcyBib3VnaHQuHFRpcFNlbnQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABGHNlbmRlcgQBMFQ6OkFjY291bnRJZAABIHJlY2VpdmVyBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBWERlcG9zaXRCYWxhbmNlT2Y8VCwgST4AIAQ8QSB0aXAgd2FzIHNlbnQuLFN3YXBDcmVhdGVkGAFIb2ZmZXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwb2ZmZXJlZF9pdGVtOAEkVDo6SXRlbUlkAAFIZGVzaXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwZGVzaXJlZF9pdGVt4AFET3B0aW9uPFQ6Okl0ZW1JZD4AARRwcmljZZEEAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+AAEgZGVhZGxpbmU4AVBCbG9ja051bWJlckZvcjxULCBJPgAhBIhBbiBgaXRlbWAgc3dhcCBpbnRlbnQgd2FzIGNyZWF0ZWQuNFN3YXBDYW5jZWxsZWQYAUhvZmZlcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBvZmZlcmVkX2l0ZW04ASRUOjpJdGVtSWQAAUhkZXNpcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBkZXNpcmVkX2l0ZW3gAURPcHRpb248VDo6SXRlbUlkPgABFHByaWNlkQQBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AASBkZWFkbGluZTgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+ACIEXFRoZSBzd2FwIHdhcyBjYW5jZWxsZWQuLFN3YXBDbGFpbWVkIAE8c2VudF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkc2VudF9pdGVtOAEkVDo6SXRlbUlkAAE8c2VudF9pdGVtX293bmVyBAEwVDo6QWNjb3VudElkAAFMcmVjZWl2ZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABNHJlY2VpdmVkX2l0ZW04ASRUOjpJdGVtSWQAAUxyZWNlaXZlZF9pdGVtX293bmVyBAEwVDo6QWNjb3VudElkAAEUcHJpY2WRBAGsT3B0aW9uPFByaWNlV2l0aERpcmVjdGlvbjxJdGVtUHJpY2U8VCwgST4+PgABIGRlYWRsaW5lOAFQQmxvY2tOdW1iZXJGb3I8VCwgST4AIwRoVGhlIHN3YXAgaGFzIGJlZW4gY2xhaW1lZC5YUHJlU2lnbmVkQXR0cmlidXRlc1NldAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEkbmFtZXNwYWNlfQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+ACQE/E5ldyBhdHRyaWJ1dGVzIGhhdmUgYmVlbiBzZXQgZm9yIGFuIGBpdGVtYCBvZiB0aGUgYGNvbGxlY3Rpb25gLkhQYWxsZXRBdHRyaWJ1dGVTZXQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbeABRE9wdGlvbjxUOjpJdGVtSWQ+AAEkYXR0cmlidXRl5QgBhFBhbGxldEF0dHJpYnV0ZXM8VDo6Q29sbGVjdGlvbklkPgABFHZhbHVlQQEBdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+ACUITQFBIG5ldyBhdHRyaWJ1dGUgaW4gdGhlIGBQYWxsZXRgIG5hbWVzcGFjZSB3YXMgc2V0IGZvciB0aGUgYGNvbGxlY3Rpb25gIG9yIGFuIGBpdGVtYGR3aXRoaW4gdGhhdCBgY29sbGVjdGlvbmAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV05QgMLHBhbGxldF9uZnRzFHR5cGVzQFBhbGxldEF0dHJpYnV0ZXMEMENvbGxlY3Rpb25JZAE4AQgsVXNlZFRvQ2xhaW0EADgBMENvbGxlY3Rpb25JZAAAAEBUcmFuc2ZlckRpc2FibGVkAAEAAOkIDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFdmVudAgEVAAESQABgBxDcmVhdGVkDAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQABBGBTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZC4sVHJhbnNmZXJyZWQQASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAAgR0U29tZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZC4YQnVybmVkDAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEcYmFsYW5jZVUBAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAARhpc3N1ZXIEATBUOjpBY2NvdW50SWQAARRhZG1pbgQBMFQ6OkFjY291bnRJZAABHGZyZWV6ZXIEATBUOjpBY2NvdW50SWQABARwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLjBPd25lckNoYW5nZWQIASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQABQRIVGhlIG93bmVyIGNoYW5nZWQuGEZyb3plbggBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABwR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyB0aGF3ZWQuLEFzc2V0RnJvemVuBAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAAIBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIGZyb3plbi4sQXNzZXRUaGF3ZWQEASBhc3NldF9pZP0BAShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAAUhhY2NvdW50c19kZXN0cm95ZWQ4AQx1MzIAAUhhY2NvdW50c19yZW1haW5pbmc4AQx1MzIACgSgQWNjb3VudHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhBcHByb3ZhbHNEZXN0cm95ZWQMASBhc3NldF9pZP0BAShUOjpBc3NldElkAAFMYXBwcm92YWxzX2Rlc3Ryb3llZDgBDHUzMgABTGFwcHJvdmFsc19yZW1haW5pbmc4AQx1MzIACwSkQXBwcm92YWxzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IRGVzdHJ1Y3Rpb25TdGFydGVkBAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQADQR0QW4gYXNzZXQgY2xhc3Mgd2FzIGRlc3Ryb3llZC4wRm9yY2VDcmVhdGVkCAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAA4EjFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGZvcmNlLWNyZWF0ZWQuLE1ldGFkYXRhU2V0FAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5ZAQEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAAQBJxNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBhc3NldC5AQXBwcm92ZWRUcmFuc2ZlchABIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAARhzb3VyY2UEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlABEEMQEoQWRkaXRpb25hbCkgZnVuZHMgaGF2ZSBiZWVuIGFwcHJvdmVkIGZvciB0cmFuc2ZlciB0byBhIGRlc3RpbmF0aW9uIGFjY291bnQuREFwcHJvdmFsQ2FuY2VsbGVkDAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAEgTwQW4gYXBwcm92YWwgZm9yIGFjY291bnQgYGRlbGVnYXRlYCB3YXMgY2FuY2VsbGVkIGJ5IGBvd25lcmAuTFRyYW5zZmVycmVkQXBwcm92ZWQUASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAEwgxAUFuIGBhbW91bnRgIHdhcyB0cmFuc2ZlcnJlZCBpbiBpdHMgZW50aXJldHkgZnJvbSBgb3duZXJgIHRvIGBkZXN0aW5hdGlvbmAgYnlgdGhlIGFwcHJvdmVkIGBkZWxlZ2F0ZWAuSEFzc2V0U3RhdHVzQ2hhbmdlZAQBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAFAT4QW4gYXNzZXQgaGFzIGhhZCBpdHMgYXR0cmlidXRlcyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5YQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZAgBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABJGRlcG9zaXRvcgQBMFQ6OkFjY291bnRJZAAWBPxTb21lIGFjY291bnQgYHdob2Agd2FzIGNyZWF0ZWQgd2l0aCBhIGRlcG9zaXQgZnJvbSBgZGVwb3NpdG9yYC4cQmxvY2tlZAgBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAFwR8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBibG9ja2VkLiREZXBvc2l0ZWQMASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAGATcU29tZSBhc3NldHMgd2VyZSBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiRXaXRoZHJhd24MASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAGQQhAVNvbWUgYXNzZXRzIHdlcmUgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLjxSZXNlcnZlc1VwZGF0ZWQIASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEgcmVzZXJ2ZXO5BAFMVmVjPFQ6OlJlc2VydmVEYXRhPgAaBNhSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyBzZXQgb3IgdXBkYXRlZCBmb3IgYGFzc2V0X2lkYC48UmVzZXJ2ZXNSZW1vdmVkBAEgYXNzZXRfaWT9AQEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLjBJc3N1ZWRDcmVkaXQIASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAHATEU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQgYXMgQ3JlZGl0IChubyBvd25lciB5ZXQpLjBCdXJuZWRDcmVkaXQIASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAHQSEU29tZSBhc3NldHMgQ3JlZGl0IHdhcyBkZXN0cm95ZWQuKElzc3VlZERlYnQIASBhc3NldF9pZP0BAShUOjpBc3NldElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAHgS8U29tZSBhc3NldHMgd2VyZSBidXJuZWQgYW5kIGEgRGVidCB3YXMgY3JlYXRlZC4oQnVybmVkRGVidAgBIGFzc2V0X2lk/QEBKFQ6OkFzc2V0SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAfBMxTb21lIGFzc2V0cyBEZWJ0IHdhcyBkZXN0cm95ZWQgKGFuZCBhc3NldHMgaXNzdWVkKS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTtCAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAYAcQ3JlYXRlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAAIEdFNvbWUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEcYmFsYW5jZVUBAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZDgBDHUzMgABSGFjY291bnRzX3JlbWFpbmluZzgBDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQ4AQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nOAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5ZAQEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQARBDEBKEFkZGl0aW9uYWwpIGZ1bmRzIGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgdG8gYSBkZXN0aW5hdGlvbiBhY2NvdW50LkRBcHByb3ZhbENhbmNlbGxlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAEgTwQW4gYXBwcm92YWwgZm9yIGFjY291bnQgYGRlbGVnYXRlYCB3YXMgY2FuY2VsbGVkIGJ5IGBvd25lcmAuTFRyYW5zZmVycmVkQXBwcm92ZWQUASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkABcEfFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgYmxvY2tlZC4kRGVwb3NpdGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAGATcU29tZSBhc3NldHMgd2VyZSBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiRXaXRoZHJhd24MASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuPFJlc2VydmVzVXBkYXRlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABIHJlc2VydmVzMQQBTFZlYzxUOjpSZXNlcnZlRGF0YT4AGgTYUmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgc2V0IG9yIHVwZGF0ZWQgZm9yIGBhc3NldF9pZGAuPFJlc2VydmVzUmVtb3ZlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLjBJc3N1ZWRDcmVkaXQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRVAQEoVDo6QmFsYW5jZQAcBMRTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZCBhcyBDcmVkaXQgKG5vIG93bmVyIHlldCkuMEJ1cm5lZENyZWRpdAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAB0EhFNvbWUgYXNzZXRzIENyZWRpdCB3YXMgZGVzdHJveWVkLihJc3N1ZWREZWJ0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAHgS8U29tZSBhc3NldHMgd2VyZSBidXJuZWQgYW5kIGEgRGVidCB3YXMgY3JlYXRlZC4oQnVybmVkRGVidAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudFUBAShUOjpCYWxhbmNlAB8EzFNvbWUgYXNzZXRzIERlYnQgd2FzIGRlc3Ryb3llZCAoYW5kIGFzc2V0cyBpc3N1ZWQpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldPEIDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhhwYWxsZXQURXZlbnQEBFQAARgsUG9vbENyZWF0ZWQQARxjcmVhdG9yBAEwVDo6QWNjb3VudElkBIhUaGUgYWNjb3VudCB0aGF0IGNyZWF0ZWQgdGhlIHBvb2wuARxwb29sX2lk9QgBJFQ6OlBvb2xJZAhJAVRoZSBwb29sIGlkIGFzc29jaWF0ZWQgd2l0aCB0aGUgcG9vbC4gTm90ZSB0aGF0IHRoZSBvcmRlciBvZiB0aGUgYXNzZXRzIG1heSBub3QgYmX0dGhlIHNhbWUgYXMgdGhlIG9yZGVyIHNwZWNpZmllZCBpbiB0aGUgY3JlYXRlIHBvb2wgZXh0cmluc2ljLgEwcG9vbF9hY2NvdW50BAEwVDo6QWNjb3VudElkBGxUaGUgYWNjb3VudCBJRCBvZiB0aGUgcG9vbC4BIGxwX3Rva2VuOAE4VDo6UG9vbEFzc2V0SWQIQQFUaGUgaWQgb2YgdGhlIGxpcXVpZGl0eSB0b2tlbnMgdGhhdCB3aWxsIGJlIG1pbnRlZCB3aGVuIGFzc2V0cyBhcmUgYWRkZWQgdG8gdGhpcxRwb29sLgAEHQFBIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgYENyZWF0ZVBvb2xgIGV4dHJpbnNpYyB3aWxsIGNyZWF0ZSB0aGlzIGV2ZW50LjhMaXF1aWRpdHlBZGRlZBwBDHdobwQBMFQ6OkFjY291bnRJZAS4VGhlIGFjY291bnQgdGhhdCB0aGUgbGlxdWlkaXR5IHdhcyB0YWtlbiBmcm9tLgEcbWludF90bwQBMFQ6OkFjY291bnRJZATUVGhlIGFjY291bnQgdGhhdCB0aGUgbGlxdWlkaXR5IHRva2VucyB3ZXJlIG1pbnRlZCB0by4BHHBvb2xfaWT1CAEkVDo6UG9vbElkBOBUaGUgcG9vbCBpZCBvZiB0aGUgcG9vbCB0aGF0IHRoZSBsaXF1aWRpdHkgd2FzIGFkZGVkIHRvLgFAYW1vdW50MV9wcm92aWRlZFUBAShUOjpCYWxhbmNlBORUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyBhZGRlZCB0byB0aGUgcG9vbC4BQGFtb3VudDJfcHJvdmlkZWRVAQEoVDo6QmFsYW5jZQToVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIGFkZGVkIHRvIHRoZSBwb29sLgEgbHBfdG9rZW44AThUOjpQb29sQXNzZXRJZAScVGhlIGlkIG9mIHRoZSBscCB0b2tlbiB0aGF0IHdhcyBtaW50ZWQuATxscF90b2tlbl9taW50ZWRVAQEoVDo6QmFsYW5jZQTQVGhlIGFtb3VudCBvZiBscCB0b2tlbnMgdGhhdCB3ZXJlIG1pbnRlZCBvZiB0aGF0IGlkLgEEJQFBIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgYEFkZExpcXVpZGl0eWAgZXh0cmluc2ljIHdpbGwgY3JlYXRlIHRoaXMgZXZlbnQuQExpcXVpZGl0eVJlbW92ZWQgAQx3aG8EATBUOjpBY2NvdW50SWQE3FRoZSBhY2NvdW50IHRoYXQgdGhlIGxpcXVpZGl0eSB0b2tlbnMgd2VyZSBidXJuZWQgZnJvbS4BLHdpdGhkcmF3X3RvBAEwVDo6QWNjb3VudElkBMBUaGUgYWNjb3VudCB0aGF0IHRoZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZCB0by4BHHBvb2xfaWT1CAEkVDo6UG9vbElkBMBUaGUgcG9vbCBpZCB0aGF0IHRoZSBsaXF1aWRpdHkgd2FzIHJlbW92ZWQgZnJvbS4BHGFtb3VudDFVAQEoVDo6QmFsYW5jZQT0VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBwb29sLgEcYW1vdW50MlUBAShUOjpCYWxhbmNlBPhUaGUgYW1vdW50IG9mIHRoZSBzZWNvbmQgYXNzZXQgdGhhdCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBwb29sLgEgbHBfdG9rZW44AThUOjpQb29sQXNzZXRJZAScVGhlIGlkIG9mIHRoZSBscCB0b2tlbiB0aGF0IHdhcyBidXJuZWQuATxscF90b2tlbl9idXJuZWRVAQEoVDo6QmFsYW5jZQTQVGhlIGFtb3VudCBvZiBscCB0b2tlbnMgdGhhdCB3ZXJlIGJ1cm5lZCBvZiB0aGF0IGlkLgE4d2l0aGRyYXdhbF9mZWX5CAEcUGVybWlsbAR0TGlxdWlkaXR5IHdpdGhkcmF3YWwgZmVlICglKS4CBDEBQSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIGBSZW1vdmVMaXF1aWRpdHlgIGV4dHJpbnNpYyB3aWxsIGNyZWF0ZSB0aGlzIGV2ZW50LjBTd2FwRXhlY3V0ZWQUAQx3aG8EATBUOjpBY2NvdW50SWQEtFdoaWNoIGFjY291bnQgd2FzIHRoZSBpbnN0aWdhdG9yIG9mIHRoZSBzd2FwLgEcc2VuZF90bwQBMFQ6OkFjY291bnRJZATAVGhlIGFjY291bnQgdGhhdCB0aGUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQgdG8uASRhbW91bnRfaW5VAQEoVDo6QmFsYW5jZQS8VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgc3dhcHBlZC4BKGFtb3VudF9vdXRVAQEoVDo6QmFsYW5jZQTEVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIHJlY2VpdmVkLgEQcGF0aP0IAThCYWxhbmNlUGF0aDxUPgj8VGhlIHJvdXRlIG9mIGFzc2V0IElEcyB3aXRoIGFtb3VudHMgdGhhdCB0aGUgc3dhcCB3ZW50IHRocm91Z2gu7EUuZy4gKEEsIGFtb3VudF9pbikgLT4gKERvdCwgYW1vdW50X291dCkgLT4gKEIsIGFtb3VudF9vdXQpAwg1AUFzc2V0cyBoYXZlIGJlZW4gY29udmVydGVkIGZyb20gb25lIHRvIGFub3RoZXIuIEJvdGggYFN3YXBFeGFjdFRva2VuRm9yVG9rZW5g2GFuZCBgU3dhcFRva2VuRm9yRXhhY3RUb2tlbmAgd2lsbCBnZW5lcmF0ZSB0aGlzIGV2ZW50LkhTd2FwQ3JlZGl0RXhlY3V0ZWQMASRhbW91bnRfaW5VAQEoVDo6QmFsYW5jZQS8VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgc3dhcHBlZC4BKGFtb3VudF9vdXRVAQEoVDo6QmFsYW5jZQTEVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIHJlY2VpdmVkLgEQcGF0aP0IAThCYWxhbmNlUGF0aDxUPgj8VGhlIHJvdXRlIG9mIGFzc2V0IElEcyB3aXRoIGFtb3VudHMgdGhhdCB0aGUgc3dhcCB3ZW50IHRocm91Z2gu7EUuZy4gKEEsIGFtb3VudF9pbikgLT4gKERvdCwgYW1vdW50X291dCkgLT4gKEIsIGFtb3VudF9vdXQpBAS8QXNzZXRzIGhhdmUgYmVlbiBjb252ZXJ0ZWQgZnJvbSBvbmUgdG8gYW5vdGhlci4cVG91Y2hlZAgBHHBvb2xfaWT1CAEkVDo6UG9vbElkBExUaGUgSUQgb2YgdGhlIHBvb2wuAQx3aG8EATBUOjpBY2NvdW50SWQEhFRoZSBhY2NvdW50IGluaXRpYXRpbmcgdGhlIHRvdWNoLgUEDQFQb29sIGhhcyBiZWVuIHRvdWNoZWQgaW4gb3JkZXIgdG8gZnVsZmlsbCBvcGVyYXRpb25hbCByZXF1aXJlbWVudHMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV09QgAAAQI/QH9AQD5CAw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcm1pbGwAAAQAOAEMdTMyAAD9CAAAAgEJAAEJAAAECP0BVQEABQkMVHBhbGxldF9hc3NldHNfZnJlZXplchhwYWxsZXQURXZlbnQIBFQABEkAAQgYRnJvemVuDAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAAAAYVGhhd2VkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAAQAEfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQJCQxQcGFsbGV0X2Fzc2V0c19ob2xkZXIYcGFsbGV0FEV2ZW50CARUAARJAAEMEEhlbGQQAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhyZWFzb25VCAFQVDo6UnVudGltZUhvbGRSZWFzb24AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAABMRgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBpbmNyZWFzZWQgYnkgYGFtb3VudGAuIFJlbGVhc2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYcmVhc29uVQgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAAQTEYHdob2BzIGJhbGFuY2Ugb24gaG9sZCB3YXMgZGVjcmVhc2VkIGJ5IGBhbW91bnRgLhhCdXJuZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhyZWFzb25VCAFQVDo6UnVudGltZUhvbGRSZWFzb24AARhhbW91bnRVAQEoVDo6QmFsYW5jZQACBLhgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBidXJuZWQgYnkgYGFtb3VudGAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0DQkMPHBhbGxldF90cmVhc3VyeRhwYWxsZXQURXZlbnQIBFQABEkAATAgU3BlbmRpbmcEAUBidWRnZXRfcmVtYWluaW5nVQEBPEJhbGFuY2VPZjxULCBJPgAABORXZSBoYXZlIGVuZGVkIGEgc3BlbmQgcGVyaW9kIGFuZCB3aWxsIG5vdyBhbGxvY2F0ZSBmdW5kcy4cQXdhcmRlZAwBOHByb3Bvc2FsX2luZGV4OAE0UHJvcG9zYWxJbmRleAABFGF3YXJkVQEBPEJhbGFuY2VPZjxULCBJPgABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAQR8U29tZSBmdW5kcyBoYXZlIGJlZW4gYWxsb2NhdGVkLhRCdXJudAQBLGJ1cm50X2Z1bmRzVQEBPEJhbGFuY2VPZjxULCBJPgACBIhTb21lIG9mIG91ciBmdW5kcyBoYXZlIGJlZW4gYnVybnQuIFJvbGxvdmVyBAFAcm9sbG92ZXJfYmFsYW5jZVUBATxCYWxhbmNlT2Y8VCwgST4AAwQtAVNwZW5kaW5nIGhhcyBmaW5pc2hlZDsgdGhpcyBpcyB0aGUgYW1vdW50IHRoYXQgcm9sbHMgb3ZlciB1bnRpbCBuZXh0IHNwZW5kLhxEZXBvc2l0BAEUdmFsdWVVAQE8QmFsYW5jZU9mPFQsIEk+AAQEfFNvbWUgZnVuZHMgaGF2ZSBiZWVuIGRlcG9zaXRlZC40U3BlbmRBcHByb3ZlZAwBOHByb3Bvc2FsX2luZGV4OAE0UHJvcG9zYWxJbmRleAABGGFtb3VudFUBATxCYWxhbmNlT2Y8VCwgST4AASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAAFBJxBIG5ldyBzcGVuZCBwcm9wb3NhbCBoYXMgYmVlbiBhcHByb3ZlZC48VXBkYXRlZEluYWN0aXZlCAEscmVhY3RpdmF0ZWRVAQE8QmFsYW5jZU9mPFQsIEk+AAEsZGVhY3RpdmF0ZWRVAQE8QmFsYW5jZU9mPFQsIEk+AAYEzFRoZSBpbmFjdGl2ZSBmdW5kcyBvZiB0aGUgcGFsbGV0IGhhdmUgYmVlbiB1cGRhdGVkLkhBc3NldFNwZW5kQXBwcm92ZWQYARRpbmRleDgBKFNwZW5kSW5kZXgAAShhc3NldF9raW5kzQQBMFQ6OkFzc2V0S2luZAABGGFtb3VudFUBAVBBc3NldEJhbGFuY2VPZjxULCBJPgABLGJlbmVmaWNpYXJ50QQBOFQ6OkJlbmVmaWNpYXJ5AAEodmFsaWRfZnJvbTgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+AAEkZXhwaXJlX2F0OAFQQmxvY2tOdW1iZXJGb3I8VCwgST4ABwS0QSBuZXcgYXNzZXQgc3BlbmQgcHJvcG9zYWwgaGFzIGJlZW4gYXBwcm92ZWQuQEFzc2V0U3BlbmRWb2lkZWQEARRpbmRleDgBKFNwZW5kSW5kZXgACAR0QW4gYXBwcm92ZWQgc3BlbmQgd2FzIHZvaWRlZC4QUGFpZAgBFGluZGV4OAEoU3BlbmRJbmRleAABKHBheW1lbnRfaWQoAWQ8VDo6UGF5bWFzdGVyIGFzIFBheT46OklkAAkETEEgcGF5bWVudCBoYXBwZW5lZC40UGF5bWVudEZhaWxlZAgBFGluZGV4OAEoU3BlbmRJbmRleAABKHBheW1lbnRfaWQoAWQ8VDo6UGF5bWFzdGVyIGFzIFBheT46OklkAAoEkEEgcGF5bWVudCBmYWlsZWQgYW5kIGNhbiBiZSByZXRyaWVkLjhTcGVuZFByb2Nlc3NlZAQBFGluZGV4OAEoU3BlbmRJbmRleAALCE0BQSBzcGVuZCB3YXMgcHJvY2Vzc2VkIGFuZCByZW1vdmVkIGZyb20gdGhlIHN0b3JhZ2UuIEl0IG1pZ2h0IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHlwcGFpZCBvciBpdCBtYXkgaGF2ZSBleHBpcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBEJDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcYcGFsbGV0FEV2ZW50CARUAARJAAEUJERlbGVnYXRlZAwABAEwVDo6QWNjb3VudElkAAAEATBUOjpBY2NvdW50SWQAANEDATRDbGFzc09mPFQsIEk+AAAEHQFBbiBhY2NvdW50IGhhcyBkZWxlZ2F0ZWQgdGhlaXIgdm90ZSB0byBhbm90aGVyIGFjY291bnQuIFxbd2hvLCB0YXJnZXRcXSxVbmRlbGVnYXRlZAgABAEwVDo6QWNjb3VudElkAADRAwE0Q2xhc3NPZjxULCBJPgABBPRBbiBcW2FjY291bnRcXSBoYXMgY2FuY2VsbGVkIGEgcHJldmlvdXMgZGVsZWdhdGlvbiBvcGVyYXRpb24uFFZvdGVkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEQdm90ZdkEAXBBY2NvdW50Vm90ZTxCYWxhbmNlT2Y8VCwgST4+AAEocG9sbF9pbmRleDgBRFBvbGxJbmRleE9mPFQsIEk+AAIEUEFuIGFjY291bnQgaGFzIHZvdGVkLFZvdGVSZW1vdmVkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEQdm90ZdkEAXBBY2NvdW50Vm90ZTxCYWxhbmNlT2Y8VCwgST4+AAEocG9sbF9pbmRleDgBRFBvbGxJbmRleE9mPFQsIEk+AAMEXEEgdm90ZSBoYXMgYmVlbiByZW1vdmVkMFZvdGVVbmxvY2tlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABFGNsYXNz0QMBNENsYXNzT2Y8VCwgST4ABARFAVRoZSBsb2NrdXAgcGVyaW9kIG9mIGEgY29udmljdGlvbiB2b3RlIGV4cGlyZWQsIGFuZCB0aGUgZnVuZHMgaGF2ZSBiZWVuIHVubG9ja2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBUJDEBwYWxsZXRfcmVmZXJlbmRhGHBhbGxldBRFdmVudAgEVAAESQABQCRTdWJtaXR0ZWQMARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0cmFja9EDATxUcmFja0lkT2Y8VCwgST4EJQFUaGUgdHJhY2sgKGFuZCBieSBleHRlbnNpb24gcHJvcG9zYWwgZGlzcGF0Y2ggb3JpZ2luKSBvZiB0aGlzIHJlZmVyZW5kdW0uASBwcm9wb3NhbO0EAUxCb3VuZGVkQ2FsbE9mPFQsIEk+BIBUaGUgcHJvcG9zYWwgZm9yIHRoZSByZWZlcmVuZHVtLgAEgEEgcmVmZXJlbmR1bSBoYXMgYmVlbiBzdWJtaXR0ZWQuVERlY2lzaW9uRGVwb3NpdFBsYWNlZAwBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BDHdobwQBMFQ6OkFjY291bnRJZASMVGhlIGFjY291bnQgd2hvIHBsYWNlZCB0aGUgZGVwb3NpdC4BGGFtb3VudFUBATxCYWxhbmNlT2Y8VCwgST4EhFRoZSBhbW91bnQgcGxhY2VkIGJ5IHRoZSBhY2NvdW50LgEElFRoZSBkZWNpc2lvbiBkZXBvc2l0IGhhcyBiZWVuIHBsYWNlZC5cRGVjaXNpb25EZXBvc2l0UmVmdW5kZWQMARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uAQx3aG8EATBUOjpBY2NvdW50SWQEjFRoZSBhY2NvdW50IHdobyBwbGFjZWQgdGhlIGRlcG9zaXQuARhhbW91bnRVAQE8QmFsYW5jZU9mPFQsIEk+BIRUaGUgYW1vdW50IHBsYWNlZCBieSB0aGUgYWNjb3VudC4CBJxUaGUgZGVjaXNpb24gZGVwb3NpdCBoYXMgYmVlbiByZWZ1bmRlZC44RGVwb3NpdFNsYXNoZWQIAQx3aG8EATBUOjpBY2NvdW50SWQEjFRoZSBhY2NvdW50IHdobyBwbGFjZWQgdGhlIGRlcG9zaXQuARhhbW91bnRVAQE8QmFsYW5jZU9mPFQsIEk+BIRUaGUgYW1vdW50IHBsYWNlZCBieSB0aGUgYWNjb3VudC4DBGxBIGRlcG9zaXQgaGFzIGJlZW4gc2xhc2hlZC48RGVjaXNpb25TdGFydGVkEAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdHJhY2vRAwE8VHJhY2tJZE9mPFQsIEk+BCUBVGhlIHRyYWNrIChhbmQgYnkgZXh0ZW5zaW9uIHByb3Bvc2FsIGRpc3BhdGNoIG9yaWdpbikgb2YgdGhpcyByZWZlcmVuZHVtLgEgcHJvcG9zYWztBAFMQm91bmRlZENhbGxPZjxULCBJPgSAVGhlIHByb3Bvc2FsIGZvciB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5GQkBIFQ6OlRhbGx5BLhUaGUgY3VycmVudCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uBAS8QSByZWZlcmVuZHVtIGhhcyBtb3ZlZCBpbnRvIHRoZSBkZWNpZGluZyBwaGFzZS44Q29uZmlybVN0YXJ0ZWQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uBQA4Q29uZmlybUFib3J0ZWQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uBgAkQ29uZmlybWVkCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdGFsbHkZCQEgVDo6VGFsbHkEsFRoZSBmaW5hbCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uBwQhAUEgcmVmZXJlbmR1bSBoYXMgZW5kZWQgaXRzIGNvbmZpcm1hdGlvbiBwaGFzZSBhbmQgaXMgcmVhZHkgZm9yIGFwcHJvdmFsLiBBcHByb3ZlZAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4IBA0BQSByZWZlcmVuZHVtIGhhcyBiZWVuIGFwcHJvdmVkIGFuZCBpdHMgcHJvcG9zYWwgaGFzIGJlZW4gc2NoZWR1bGVkLiBSZWplY3RlZAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5GQkBIFQ6OlRhbGx5BLBUaGUgZmluYWwgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgkErEEgcHJvcG9zYWwgaGFzIGJlZW4gcmVqZWN0ZWQgYnkgcmVmZXJlbmR1bS4gVGltZWRPdXQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxseRkJASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4KBNhBIHJlZmVyZW5kdW0gaGFzIGJlZW4gdGltZWQgb3V0IHdpdGhvdXQgYmVpbmcgZGVjaWRlZC4kQ2FuY2VsbGVkCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdGFsbHkZCQEgVDo6VGFsbHkEsFRoZSBmaW5hbCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uCwSAQSByZWZlcmVuZHVtIGhhcyBiZWVuIGNhbmNlbGxlZC4YS2lsbGVkCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdGFsbHkZCQEgVDo6VGFsbHkEsFRoZSBmaW5hbCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uDAR0QSByZWZlcmVuZHVtIGhhcyBiZWVuIGtpbGxlZC5kU3VibWlzc2lvbkRlcG9zaXRSZWZ1bmRlZAwBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BDHdobwQBMFQ6OkFjY291bnRJZASMVGhlIGFjY291bnQgd2hvIHBsYWNlZCB0aGUgZGVwb3NpdC4BGGFtb3VudFUBATxCYWxhbmNlT2Y8VCwgST4EhFRoZSBhbW91bnQgcGxhY2VkIGJ5IHRoZSBhY2NvdW50Lg0EpFRoZSBzdWJtaXNzaW9uIGRlcG9zaXQgaGFzIGJlZW4gcmVmdW5kZWQuLE1ldGFkYXRhU2V0CAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEQaGFzaDwBHFQ6Okhhc2gEOFByZWltYWdlIGhhc2guDgScTWV0YWRhdGEgZm9yIGEgcmVmZXJlbmR1bSBoYXMgYmVlbiBzZXQuPE1ldGFkYXRhQ2xlYXJlZAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BEGhhc2g8ARxUOjpIYXNoBDhQcmVpbWFnZSBoYXNoLg8ErE1ldGFkYXRhIGZvciBhIHJlZmVyZW5kdW0gaGFzIGJlZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQZCQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nFHR5cGVzFFRhbGx5CBRWb3RlcwFVARRUb3RhbAAADAEQYXllc1UBARRWb3RlcwABEG5heXNVAQEUVm90ZXMAARxzdXBwb3J0VQEBFFZvdGVzAAAdCQxAcGFsbGV0X3doaXRlbGlzdBhwYWxsZXQURXZlbnQEBFQAAQw8Q2FsbFdoaXRlbGlzdGVkBAEkY2FsbF9oYXNoPAEcVDo6SGFzaAAAAFhXaGl0ZWxpc3RlZENhbGxSZW1vdmVkBAEkY2FsbF9oYXNoPAEcVDo6SGFzaAABAGRXaGl0ZWxpc3RlZENhbGxEaXNwYXRjaGVkCAEkY2FsbF9oYXNoPAEcVDo6SGFzaAABGHJlc3VsdCEJAWhEaXNwYXRjaFJlc3VsdFdpdGhQb3N0SW5mbwACAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldCEJBBhSZXN1bHQIBFQBJQkERQEpCQEICE9rBAAlCQAAAAAMRXJyBAApCQAAAQAAJQkMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUG9zdERpc3BhdGNoSW5mbwAACAE0YWN0dWFsX3dlaWdodA0BAThPcHRpb248V2VpZ2h0PgABIHBheXNfZmVl9QcBEFBheXMAACkJCChzcF9ydW50aW1lZERpc3BhdGNoRXJyb3JXaXRoUG9zdEluZm8EEEluZm8BJQkACAEkcG9zdF9pbmZvJQkBEEluZm8AARRlcnJvcvkHATREaXNwYXRjaEVycm9yAAAtCQw8cGFsbGV0X2JvdW50aWVzGHBhbGxldBRFdmVudAgEVAAESQABMDhCb3VudHlQcm9wb3NlZAQBFGluZGV4OAEsQm91bnR5SW5kZXgAAARQTmV3IGJvdW50eSBwcm9wb3NhbC44Qm91bnR5UmVqZWN0ZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEQYm9uZFUBATxCYWxhbmNlT2Y8VCwgST4AAQTMQSBib3VudHkgcHJvcG9zYWwgd2FzIHJlamVjdGVkOyBmdW5kcyB3ZXJlIHNsYXNoZWQuSEJvdW50eUJlY2FtZUFjdGl2ZQQBFGluZGV4OAEsQm91bnR5SW5kZXgAAgS4QSBib3VudHkgcHJvcG9zYWwgaXMgZnVuZGVkIGFuZCBiZWNhbWUgYWN0aXZlLjRCb3VudHlBd2FyZGVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAMElEEgYm91bnR5IGlzIGF3YXJkZWQgdG8gYSBiZW5lZmljaWFyeS40Qm91bnR5Q2xhaW1lZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAARhwYXlvdXRVAQE8QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQABASMQSBib3VudHkgaXMgY2xhaW1lZCBieSBiZW5lZmljaWFyeS44Qm91bnR5Q2FuY2VsZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAUEWEEgYm91bnR5IGlzIGNhbmNlbGxlZC44Qm91bnR5RXh0ZW5kZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAYEcEEgYm91bnR5IGV4cGlyeSBpcyBleHRlbmRlZC44Qm91bnR5QXBwcm92ZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAcEVEEgYm91bnR5IGlzIGFwcHJvdmVkLjxDdXJhdG9yUHJvcG9zZWQIASRib3VudHlfaWQ4ASxCb3VudHlJbmRleAABHGN1cmF0b3IEATBUOjpBY2NvdW50SWQACAR0QSBib3VudHkgY3VyYXRvciBpcyBwcm9wb3NlZC5EQ3VyYXRvclVuYXNzaWduZWQEASRib3VudHlfaWQ4ASxCb3VudHlJbmRleAAJBHxBIGJvdW50eSBjdXJhdG9yIGlzIHVuYXNzaWduZWQuPEN1cmF0b3JBY2NlcHRlZAgBJGJvdW50eV9pZDgBLEJvdW50eUluZGV4AAEcY3VyYXRvcgQBMFQ6OkFjY291bnRJZAAKBHRBIGJvdW50eSBjdXJhdG9yIGlzIGFjY2VwdGVkLjBEZXBvc2l0UG9rZWQQASRib3VudHlfaWQ4ASxCb3VudHlJbmRleAABIHByb3Bvc2VyBAEwVDo6QWNjb3VudElkAAEsb2xkX2RlcG9zaXRVAQE8QmFsYW5jZU9mPFQsIEk+AAEsbmV3X2RlcG9zaXRVAQE8QmFsYW5jZU9mPFQsIEk+AAsEgEEgYm91bnR5IGRlcG9zaXQgaGFzIGJlZW4gcG9rZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0MQkMVHBhbGxldF9jaGlsZF9ib3VudGllcxhwYWxsZXQURXZlbnQEBFQAARAUQWRkZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXg4ASxCb3VudHlJbmRleAAABGBBIGNoaWxkLWJvdW50eSBpcyBhZGRlZC4cQXdhcmRlZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleDgBLEJvdW50eUluZGV4AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQAAQSsQSBjaGlsZC1ib3VudHkgaXMgYXdhcmRlZCB0byBhIGJlbmVmaWNpYXJ5LhxDbGFpbWVkEAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV4OAEsQm91bnR5SW5kZXgAARhwYXlvdXRVAQEwQmFsYW5jZU9mPFQ+AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQAAgSkQSBjaGlsZC1ib3VudHkgaXMgY2xhaW1lZCBieSBiZW5lZmljaWFyeS4gQ2FuY2VsZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXg4ASxCb3VudHlJbmRleAADBHBBIGNoaWxkLWJvdW50eSBpcyBjYW5jZWxsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0NQkMRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBRFdmVudAQEVAABDEBBc3NldFJhdGVDcmVhdGVkCAEoYXNzZXRfa2luZM0EATBUOjpBc3NldEtpbmQAARByYXRlDQUBJEZpeGVkVTEyOAAAAEBBc3NldFJhdGVSZW1vdmVkBAEoYXNzZXRfa2luZM0EATBUOjpBc3NldEtpbmQAAQBAQXNzZXRSYXRlVXBkYXRlZAwBKGFzc2V0X2tpbmTNBAEwVDo6QXNzZXRLaW5kAAEMb2xkDQUBJEZpeGVkVTEyOAABDG5ldw0FASRGaXhlZFUxMjgAAgAEfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQ5CQxscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGHBhbGxldBRFdmVudAgEVAAESQABMDRCb3VudHlDcmVhdGVkBAEUaW5kZXg4ASxCb3VudHlJbmRleAAABOBBIG5ldyBib3VudHkgd2FzIGNyZWF0ZWQgYW5kIGZ1bmRpbmcgaGFzIGJlZW4gaW5pdGlhdGVkLkhDaGlsZEJvdW50eUNyZWF0ZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXg4ASxCb3VudHlJbmRleAABBPhBIG5ldyBjaGlsZC1ib3VudHkgd2FzIGNyZWF0ZWQgYW5kIGZ1bmRpbmcgaGFzIGJlZW4gaW5pdGlhdGVkLkhCb3VudHlCZWNhbWVBY3RpdmUMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjgAUxPcHRpb248Qm91bnR5SW5kZXg+AAEcY3VyYXRvcgQBMFQ6OkFjY291bnRJZAACBOhUaGUgY3VyYXRvciBhY2NlcHRlZCByb2xlIGFuZCBjaGlsZC0vYm91bnR5IGJlY2FtZSBhY3RpdmUuNEJvdW50eUF3YXJkZWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjgAUxPcHRpb248Qm91bnR5SW5kZXg+AAEsYmVuZWZpY2lhcnnRBAE4VDo6QmVuZWZpY2lhcnkAAwS0QSBjaGlsZC0vYm91bnR5IHdhcyBhd2FyZGVkIHRvIGEgYmVuZWZpY2lhcnkuVEJvdW50eVBheW91dFByb2Nlc3NlZBQBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOABTE9wdGlvbjxCb3VudHlJbmRleD4AAShhc3NldF9raW5kzQQBMFQ6OkFzc2V0S2luZAABFHZhbHVlVQEBKFQ6OkJhbGFuY2UAASxiZW5lZmljaWFyedEEAThUOjpCZW5lZmljaWFyeQAEBPRQYXlvdXQgcGF5bWVudCB0byB0aGUgYmVuZWZpY2lhcnkgaGFzIGNvbmNsdWRlZCBzdWNjZXNzZnVsbHkuWEJvdW50eUZ1bmRpbmdQcm9jZXNzZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjgAUxPcHRpb248Qm91bnR5SW5kZXg+AAUErEZ1bmRpbmcgcGF5bWVudCBoYXMgY29uY2x1ZGVkIHN1Y2Nlc3NmdWxseS5UQm91bnR5UmVmdW5kUHJvY2Vzc2VkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV44AFMT3B0aW9uPEJvdW50eUluZGV4PgAGBKhSZWZ1bmQgcGF5bWVudCBoYXMgY29uY2x1ZGVkIHN1Y2Nlc3NmdWxseS44Qm91bnR5Q2FuY2VsZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjgAUxPcHRpb248Qm91bnR5SW5kZXg+AAcEeEEgY2hpbGQtL2JvdW50eSB3YXMgY2FuY2VsbGVkLkRDdXJhdG9yVW5hc3NpZ25lZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOABTE9wdGlvbjxCb3VudHlJbmRleD4ACAScQSBjaGlsZC0vYm91bnR5IGN1cmF0b3Igd2FzIHVuYXNzaWduZWQuPEN1cmF0b3JQcm9wb3NlZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOABTE9wdGlvbjxCb3VudHlJbmRleD4AARxjdXJhdG9yBAEwVDo6QWNjb3VudElkAAkElEEgY2hpbGQtL2JvdW50eSBjdXJhdG9yIHdhcyBwcm9wb3NlZC40UGF5bWVudEZhaWxlZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOABTE9wdGlvbjxCb3VudHlJbmRleD4AAShwYXltZW50X2lkKAFEUGF5bWVudElkT2Y8VCwgST4ACgSQQSBwYXltZW50IGZhaWxlZCBhbmQgY2FuIGJlIHJldHJpZWQuEFBhaWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjgAUxPcHRpb248Qm91bnR5SW5kZXg+AAEocGF5bWVudF9pZCgBRFBheW1lbnRJZE9mPFQsIEk+AAsEmEEgcGF5bWVudCBoYXBwZW5lZCBhbmQgY2FuIGJlIGNoZWNrZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0PQkMKHBhbGxldF9kYXAYcGFsbGV0FEV2ZW50BARUAAEQOElzc3VhbmNlTWludGVkCAEwdG90YWxfbWludGVkVQEBMEJhbGFuY2VPZjxUPgSEVG90YWwgYW1vdW50IG1pbnRlZCBpbiB0aGlzIGRyaXAuAThlbGFwc2VkX21pbGxpcygBDHU2NASIRWxhcHNlZCB0aW1lIChtcykgc2luY2UgbGFzdCBkcmlwLgAE3EluZmxhdGlvbiBkcmlwcGVkIGFuZCBkaXN0cmlidXRlZCB0byBidWRnZXQgcmVjaXBpZW50cy5cQnVkZ2V0QWxsb2NhdGlvblVwZGF0ZWQEASxhbGxvY2F0aW9ucxkFAUxCdWRnZXRBbGxvY2F0aW9uTWFwBHhUaGUgbmV3IGJ1ZGdldCBhbGxvY2F0aW9uIG1hcC4BBLRCdWRnZXQgYWxsb2NhdGlvbiB3YXMgdXBkYXRlZCB2aWEgZ292ZXJuYW5jZS44U3RhZ2luZ0RyYWluZWQEARhhbW91bnRVAQEwQmFsYW5jZU9mPFQ+BDxBbW91bnQgZHJhaW5lZC4CBAEBRnVuZHMgd2VyZSBkcmFpbmVkIGZyb20gdGhlIHN0YWdpbmcgYWNjb3VudCBpbnRvIHRoZSBEQVAgYnVmZmVyLihVbmV4cGVjdGVkBABBCQE4VW5leHBlY3RlZEtpbmQAAwSwQW4gdW5leHBlY3RlZC9kZWZlbnNpdmUgZXZlbnQgd2FzIHRyaWdnZXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRBCQwocGFsbGV0X2RhcBhwYWxsZXQ4VW5leHBlY3RlZEtpbmQAAQgoTWludEZhaWxlZAAAADhFbGFwc2VkQ2xhbXBlZAgBOGFjdHVhbF9lbGFwc2VkKAEMdTY0AAEcY2VpbGluZygBDHU2NAABAABFCQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldBRFdmVudAQEVAABECBNaWdyYXRlZAwBDHRvcDgBDHUzMgABFGNoaWxkOAEMdTMyAAEcY29tcHV0ZUkJAUBNaWdyYXRpb25Db21wdXRlAAAIOQFHaXZlbiBudW1iZXIgb2YgYCh0b3AsIGNoaWxkKWAga2V5cyB3ZXJlIG1pZ3JhdGVkIHJlc3BlY3RpdmVseSwgd2l0aCB0aGUgZ2l2ZW4oYGNvbXB1dGVgLhxTbGFzaGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBMEJhbGFuY2VPZjxUPgABBLRTb21lIGFjY291bnQgZ290IHNsYXNoZWQgYnkgdGhlIGdpdmVuIGFtb3VudC5UQXV0b01pZ3JhdGlvbkZpbmlzaGVkAAIEhFRoZSBhdXRvIG1pZ3JhdGlvbiB0YXNrIGZpbmlzaGVkLhhIYWx0ZWQEARRlcnJvck0JASBFcnJvcjxUPgADBOxNaWdyYXRpb24gZ290IGhhbHRlZCBkdWUgdG8gYW4gZXJyb3Igb3IgbWlzcy1jb25maWd1cmF0aW9uLgRwSW5uZXIgZXZlbnRzIG9mIHRoaXMgcGFsbGV0LkkJDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0QE1pZ3JhdGlvbkNvbXB1dGUAAQgYU2lnbmVkAAAAEEF1dG8AAQAATQkMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQURXJyb3IEBFQAARg8TWF4U2lnbmVkTGltaXRzAAAEgE1heCBzaWduZWQgbGltaXRzIG5vdCByZXNwZWN0ZWQuKEtleVRvb0xvbmcAARy0QSBrZXkgd2FzIGxvbmdlciB0aGFuIHRoZSBjb25maWd1cmVkIG1heGltdW0uABEBVGhpcyBtZWFucyB0aGF0IHRoZSBtaWdyYXRpb24gaGFsdGVkIGF0IHRoZSBjdXJyZW50IFtgUHJvZ3Jlc3NgXSBhbmQBAWNhbiBiZSByZXN1bWVkIHdpdGggYSBsYXJnZXIgW2BjcmF0ZTo6Q29uZmlnOjpNYXhLZXlMZW5gXSB2YWx1ZS4hAVJldHJ5aW5nIHdpdGggdGhlIHNhbWUgW2BjcmF0ZTo6Q29uZmlnOjpNYXhLZXlMZW5gXSB2YWx1ZSB3aWxsIG5vdCB3b3JrLkUBVGhlIHZhbHVlIHNob3VsZCBvbmx5IGJlIGluY3JlYXNlZCB0byBhdm9pZCBhIHN0b3JhZ2UgbWlncmF0aW9uIGZvciB0aGUgY3VycmVudGx5kHN0b3JlZCBbYGNyYXRlOjpQcm9ncmVzczo6TGFzdEtleWBdLjhOb3RFbm91Z2hGdW5kcwACBJRzdWJtaXR0ZXIgZG9lcyBub3QgaGF2ZSBlbm91Z2ggZnVuZHMuKEJhZFdpdG5lc3MAAwRoQmFkIHdpdG5lc3MgZGF0YSBwcm92aWRlZC5kU2lnbmVkTWlncmF0aW9uTm90QWxsb3dlZAAEBCUBU2lnbmVkIG1pZ3JhdGlvbiBpcyBub3QgYWxsb3dlZCBiZWNhdXNlIHRoZSBtYXhpbXVtIGxpbWl0IGlzIG5vdCBzZXQgeWV0LjBCYWRDaGlsZFJvb3QABQRgQmFkIGNoaWxkIHJvb3QgcHJvdmlkZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LlEJDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQURXZlbnQEBFQAAVwcQ3JlYXRlZAgBJGRlcG9zaXRvcgQBMFQ6OkFjY291bnRJZAABHHBvb2xfaWQ4ARhQb29sSWQAAARgQSBwb29sIGhhcyBiZWVuIGNyZWF0ZWQuGEJvbmRlZBABGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABHHBvb2xfaWQ4ARhQb29sSWQAARhib25kZWRVAQEwQmFsYW5jZU9mPFQ+AAEYam9pbmVkWQEBEGJvb2wAAQSUQSBtZW1iZXIgaGFzIGJlY2FtZSBib25kZWQgaW4gYSBwb29sLhxQYWlkT3V0DAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAABGHBheW91dFUBATBCYWxhbmNlT2Y8VD4AAgSMQSBwYXlvdXQgaGFzIGJlZW4gbWFkZSB0byBhIG1lbWJlci4gVW5ib25kZWQUARhtZW1iZXIEATBUOjpBY2NvdW50SWQAARxwb29sX2lkOAEYUG9vbElkAAEcYmFsYW5jZVUBATBCYWxhbmNlT2Y8VD4AARhwb2ludHNVAQEwQmFsYW5jZU9mPFQ+AAEMZXJhOAEgRXJhSW5kZXgAAyyYQSBtZW1iZXIgaGFzIHVuYm9uZGVkIGZyb20gdGhlaXIgcG9vbC4AOQEtIGBiYWxhbmNlYCBpcyB0aGUgY29ycmVzcG9uZGluZyBiYWxhbmNlIG9mIHRoZSBudW1iZXIgb2YgcG9pbnRzIHRoYXQgaGFzIGJlZW5VASAgcmVxdWVzdGVkIHRvIGJlIHVuYm9uZGVkICh0aGUgYXJndW1lbnQgb2YgdGhlIGB1bmJvbmRgIHRyYW5zYWN0aW9uKSBmcm9tIHRoZSBib25kZWQcICBwb29sLkUBLSBgcG9pbnRzYCBpcyB0aGUgbnVtYmVyIG9mIHBvaW50cyB0aGF0IGFyZSBpc3N1ZWQgYXMgYSByZXN1bHQgb2YgYGJhbGFuY2VgIGJlaW5nwGRpc3NvbHZlZCBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIHVuYm9uZGluZyBwb29sLuQtIGBlcmFgIGlzIHRoZSBlcmEgaW4gd2hpY2ggdGhlIGJhbGFuY2Ugd2lsbCBiZSB1bmJvbmRlZC5VAUluIHRoZSBhYnNlbmNlIG9mIHNsYXNoaW5nLCB0aGVzZSB2YWx1ZXMgd2lsbCBtYXRjaC4gSW4gdGhlIHByZXNlbmNlIG9mIHNsYXNoaW5nLCB0aGVNAW51bWJlciBvZiBwb2ludHMgdGhhdCBhcmUgaXNzdWVkIGluIHRoZSB1bmJvbmRpbmcgcG9vbCB3aWxsIGJlIGxlc3MgdGhhbiB0aGUgYW1vdW50ZHJlcXVlc3RlZCB0byBiZSB1bmJvbmRlZC4kV2l0aGRyYXduEAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAABHGJhbGFuY2VVAQEwQmFsYW5jZU9mPFQ+AAEYcG9pbnRzVQEBMEJhbGFuY2VPZjxUPgAEGJxBIG1lbWJlciBoYXMgd2l0aGRyYXduIGZyb20gdGhlaXIgcG9vbC4AIQFUaGUgZ2l2ZW4gbnVtYmVyIG9mIGBwb2ludHNgIGhhdmUgYmVlbiBkaXNzb2x2ZWQgaW4gcmV0dXJuIG9mIGBiYWxhbmNlYC4AWQFTaW1pbGFyIHRvIGBVbmJvbmRlZGAgZXZlbnQsIGluIHRoZSBhYnNlbmNlIG9mIHNsYXNoaW5nLCB0aGUgcmF0aW8gb2YgcG9pbnQgdG8gYmFsYW5jZSh3aWxsIGJlIDEuJERlc3Ryb3llZAQBHHBvb2xfaWQ4ARhQb29sSWQABQRoQSBwb29sIGhhcyBiZWVuIGRlc3Ryb3llZC4wU3RhdGVDaGFuZ2VkCAEccG9vbF9pZDgBGFBvb2xJZAABJG5ld19zdGF0ZU0FASRQb29sU3RhdGUABgR8VGhlIHN0YXRlIG9mIGEgcG9vbCBoYXMgY2hhbmdlZDRNZW1iZXJSZW1vdmVkDAEccG9vbF9pZDgBGFBvb2xJZAABGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABQHJlbGVhc2VkX2JhbGFuY2VVAQEwQmFsYW5jZU9mPFQ+AAcUmEEgbWVtYmVyIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBhIHBvb2wuAFEBVGhlIHJlbW92YWwgY2FuIGJlIHZvbHVudGFyeSAod2l0aGRyYXduIGFsbCB1bmJvbmRlZCBmdW5kcykgb3IgaW52b2x1bnRhcnkgKGtpY2tlZCkuSQFBbnkgZnVuZHMgdGhhdCBhcmUgc3RpbGwgZGVsZWdhdGVkIChpLmUuIGRhbmdsaW5nIGRlbGVnYXRpb24pIGFyZSByZWxlYXNlZCBhbmQgYXJliHJlcHJlc2VudGVkIGJ5IGByZWxlYXNlZF9iYWxhbmNlYC4wUm9sZXNVcGRhdGVkDAEQcm9vdI0BAVBPcHRpb248VDo6QWNjb3VudElkPgABHGJvdW5jZXKNAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AASRub21pbmF0b3KNAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4ACAhVAVRoZSByb2xlcyBvZiBhIHBvb2wgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gdGhlIGdpdmVuIG5ldyByb2xlcy4gTm90ZSB0aGF0IHRoZSBkZXBvc2l0b3JEY2FuIG5ldmVyIGNoYW5nZS4sUG9vbFNsYXNoZWQIARxwb29sX2lkOAEYUG9vbElkAAEcYmFsYW5jZVUBATBCYWxhbmNlT2Y8VD4ACQQNAVRoZSBhY3RpdmUgYmFsYW5jZSBvZiBwb29sIGBwb29sX2lkYCBoYXMgYmVlbiBzbGFzaGVkIHRvIGBiYWxhbmNlYC5QVW5ib25kaW5nUG9vbFNsYXNoZWQMARxwb29sX2lkOAEYUG9vbElkAAEMZXJhOAEgRXJhSW5kZXgAARxiYWxhbmNlVQEBMEJhbGFuY2VPZjxUPgAKBCUBVGhlIHVuYm9uZCBwb29sIGF0IGBlcmFgIG9mIHBvb2wgYHBvb2xfaWRgIGhhcyBiZWVuIHNsYXNoZWQgdG8gYGJhbGFuY2VgLlRQb29sQ29tbWlzc2lvblVwZGF0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEcY3VycmVudGUFAXxPcHRpb248KFBlcmJpbGwsIFQ6OkFjY291bnRJZCk+AAsEtEEgcG9vbCdzIGNvbW1pc3Npb24gc2V0dGluZyBoYXMgYmVlbiBjaGFuZ2VkLmBQb29sTWF4Q29tbWlzc2lvblVwZGF0ZWQIARxwb29sX2lkOAEYUG9vbElkAAE4bWF4X2NvbW1pc3Npb24dBQEcUGVyYmlsbAAMBNRBIHBvb2wncyBtYXhpbXVtIGNvbW1pc3Npb24gc2V0dGluZyBoYXMgYmVlbiBjaGFuZ2VkLnxQb29sQ29tbWlzc2lvbkNoYW5nZVJhdGVVcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABLGNoYW5nZV9yYXRlbQUBnENvbW1pc3Npb25DaGFuZ2VSYXRlPEJsb2NrTnVtYmVyRm9yPFQ+PgANBMxBIHBvb2wncyBjb21taXNzaW9uIGBjaGFuZ2VfcmF0ZWAgaGFzIGJlZW4gY2hhbmdlZC6QUG9vbENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb25VcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABKHBlcm1pc3Npb25xBQG8T3B0aW9uPENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb248VDo6QWNjb3VudElkPj4ADgTIUG9vbCBjb21taXNzaW9uIGNsYWltIHBlcm1pc3Npb24gaGFzIGJlZW4gdXBkYXRlZC5UUG9vbENvbW1pc3Npb25DbGFpbWVkCAEccG9vbF9pZDgBGFBvb2xJZAABKGNvbW1pc3Npb25VAQEwQmFsYW5jZU9mPFQ+AA8EhFBvb2wgY29tbWlzc2lvbiBoYXMgYmVlbiBjbGFpbWVkLmRNaW5CYWxhbmNlRGVmaWNpdEFkanVzdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4AEATIVG9wcGVkIHVwIGRlZmljaXQgaW4gZnJvemVuIEVEIG9mIHRoZSByZXdhcmQgcG9vbC5gTWluQmFsYW5jZUV4Y2Vzc0FkanVzdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4AEQS8Q2xhaW1lZCBleGNlc3MgZnJvemVuIEVEIG9mIGFmIHRoZSByZXdhcmQgcG9vbC5wTWVtYmVyQ2xhaW1QZXJtaXNzaW9uVXBkYXRlZAgBGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABKHBlcm1pc3Npb25hBQE8Q2xhaW1QZXJtaXNzaW9uABIEyEEgcG9vbCBtZW1iZXIncyBjbGFpbSBwZXJtaXNzaW9uIGhhcyBiZWVuIHVwZGF0ZWQuPE1ldGFkYXRhVXBkYXRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARhjYWxsZXIEATBUOjpBY2NvdW50SWQAEwR4QSBwb29sJ3MgbWV0YWRhdGEgd2FzIHVwZGF0ZWQuSFBvb2xOb21pbmF0aW9uTWFkZQgBHHBvb2xfaWQ4ARhQb29sSWQAARhjYWxsZXIEATBUOjpBY2NvdW50SWQAFAhZAUEgcG9vbCdzIG5vbWluYXRpbmcgYWNjb3VudCAob3IgdGhlIHBvb2wncyByb290IGFjY291bnQpIGhhcyBub21pbmF0ZWQgYSB2YWxpZGF0b3Igc2V0WG9uIGJlaGFsZiBvZiB0aGUgcG9vbC5QUG9vbE5vbWluYXRvckNoaWxsZWQIARxwb29sX2lkOAEYUG9vbElkAAEYY2FsbGVyBAEwVDo6QWNjb3VudElkABUEuFRoZSBwb29sIGlzIGNoaWxsZWQgaS5lLiBubyBsb25nZXIgbm9taW5hdGluZy5MR2xvYmFsUGFyYW1zVXBkYXRlZBgBNG1pbl9qb2luX2JvbmRVAQEwQmFsYW5jZU9mPFQ+AAE8bWluX2NyZWF0ZV9ib25kVQEBMEJhbGFuY2VPZjxUPgABJG1heF9wb29sc+ABLE9wdGlvbjx1MzI+AAEsbWF4X21lbWJlcnPgASxPcHRpb248dTMyPgABUG1heF9tZW1iZXJzX3Blcl9wb29s4AEsT3B0aW9uPHUzMj4AAVRnbG9iYWxfbWF4X2NvbW1pc3Npb25VCQE8T3B0aW9uPFBlcmJpbGw+ABYEAQFHbG9iYWwgcGFyYW1ldGVycyByZWd1bGF0aW5nIG5vbWluYXRpb24gcG9vbHMgaGF2ZSBiZWVuIHVwZGF0ZWQuBFhFdmVudHMgb2YgdGhpcyBwYWxsZXQuVQkEGE9wdGlvbgQEVAEdBQEIEE5vbmUAAAAQU29tZQQAHQUAAAEAAFkJDEBwYWxsZXRfYmFnc19saXN0GHBhbGxldBRFdmVudAgEVAAESQABCCBSZWJhZ2dlZAwBDHdobwQBMFQ6OkFjY291bnRJZAABEGZyb20oASBUOjpTY29yZQABCHRvKAEgVDo6U2NvcmUAAASkTW92ZWQgYW4gYWNjb3VudCBmcm9tIG9uZSBiYWcgdG8gYW5vdGhlci4wU2NvcmVVcGRhdGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEkbmV3X3Njb3JlKAEgVDo6U2NvcmUAAQTYVXBkYXRlZCB0aGUgc2NvcmUgb2Ygc29tZSBhY2NvdW50IHRvIHRoZSBnaXZlbiBhbW91bnQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0XQkMYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxhwYWxsZXQURXZlbnQEBFQAARAkRGVsZWdhdGVkDAEUYWdlbnQEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAARhhbW91bnRVAQEwQmFsYW5jZU9mPFQ+AAAEfEZ1bmRzIGRlbGVnYXRlZCBieSBhIGRlbGVnYXRvci4gUmVsZWFzZWQMARRhZ2VudAQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4AAQR4RnVuZHMgcmVsZWFzZWQgdG8gYSBkZWxlZ2F0b3IuHFNsYXNoZWQMARRhZ2VudAQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4AAgR8RnVuZHMgc2xhc2hlZCBmcm9tIGEgZGVsZWdhdG9yLkhNaWdyYXRlZERlbGVnYXRpb24MARRhZ2VudAQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4AAwTEVW5jbGFpbWVkIGRlbGVnYXRpb24gZnVuZHMgbWlncmF0ZWQgdG8gZGVsZWdhdG9yLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldGEJDHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0FEV2ZW50BARUAAEQVFNlc3Npb25SZXBvcnRSZWNlaXZlZBABJGVuZF9pbmRleDgBMFNlc3Npb25JbmRleAABUGFjdGl2YXRpb25fdGltZXN0YW1wjQUBSE9wdGlvbjwodTY0LCB1MzIpPgABXHZhbGlkYXRvcl9wb2ludHNfY291bnRzOAEMdTMyAAEgbGVmdG92ZXJZAQEQYm9vbAAABIxBIHNhaWQgc2Vzc2lvbiByZXBvcnQgd2FzIHJlY2VpdmVkLjxPZmZlbmNlUmVjZWl2ZWQIATRzbGFzaF9zZXNzaW9uOAEwU2Vzc2lvbkluZGV4AAE4b2ZmZW5jZXNfY291bnQ4AQx1MzIAAQRsQSBuZXcgb2ZmZW5jZSB3YXMgcmVwb3J0ZWQuIEZlZXNQYWlkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEQZmVlc1UBATBCYWxhbmNlT2Y8VD4AAgwBAUZlZXMgd2VyZSBjaGFyZ2VkIGZvciBhIHVzZXIgb3BlcmF0aW9uIChzZXRfa2V5cyBvciBwdXJnZV9rZXlzKS4AGQFUaGUgZmVlIGluY2x1ZGVzIGJvdGggWENNIGRlbGl2ZXJ5IGZlZSBhbmQgcmVsYXkgY2hhaW4gZXhlY3V0aW9uIGNvc3QuKFVuZXhwZWN0ZWQEAGUJAThVbmV4cGVjdGVkS2luZAADCA0BU29tZXRoaW5nIG9jY3VycmVkIHRoYXQgc2hvdWxkIG5ldmVyIGhhcHBlbiB1bmRlciBub3JtYWwgb3BlcmF0aW9uLrxMb2dnZWQgYXMgYW4gZXZlbnQgZm9yIGZhaWwtc2FmZSBvYnNlcnZhYmlsaXR5LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldGUJDHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0OFVuZXhwZWN0ZWRLaW5kAAEYcFNlc3Npb25SZXBvcnRJbnRlZ3JpdHlGYWlsZWQAAABsVmFsaWRhdG9yU2V0SW50ZWdyaXR5RmFpbGVkAAEAOFNlc3Npb25Ta2lwcGVkAAIAXFNlc3Npb25BbHJlYWR5UHJvY2Vzc2VkAAMAWFZhbGlkYXRvclNldFNlbmRGYWlsZWQABABMVmFsaWRhdG9yU2V0RHJvcHBlZAAFAABpCQyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHBhbGxldBRFdmVudAQEVAABFERQaGFzZVRyYW5zaXRpb25lZAgBEGZyb22pBQEgUGhhc2U8VD4EQHRoZSBzb3VyY2UgcGhhc2UBCHRvqQUBIFBoYXNlPFQ+BEBUaGUgdGFyZ2V0IHBoYXNlAAhdAUEgcGhhc2UgdHJhbnNpdGlvbiBoYXBwZW5lZC4gT25seSBjaGVja3MgbWFqb3IgY2hhbmdlcyBpbiB0aGUgdmFyaWFudHMsIG5vdCBtaW5vciBpbm5lchx2YWx1ZXMueFVuZXhwZWN0ZWRUYXJnZXRTbmFwc2hvdEZhaWxlZAABBIBUYXJnZXQgc25hcHNob3QgY3JlYXRpb24gZmFpbGVkLnRVbmV4cGVjdGVkVm90ZXJTbmFwc2hvdEZhaWxlZAACBHxWb3RlciBzbmFwc2hvdCBjcmVhdGlvbiBmYWlsZWQukFVuZXhwZWN0ZWRQaGFzZVRyYW5zaXRpb25PdXRPZldlaWdodBABEGZyb22pBQEgUGhhc2U8VD4AAQh0b6kFASBQaGFzZTxUPgABIHJlcXVpcmVkEQEBGFdlaWdodAABDGhhZBEBARhXZWlnaHQAAwT4UGhhc2UgdHJhbnNpdGlvbiBjb3VsZCBub3QgcHJvY2VlZCBkdWUgdG8gYmVpbmcgb3V0IG9mIHdlaWdodC50VW5leHBlY3RlZFBoYXNlVHJhbnNpdGlvbkhhbHQIASByZXF1aXJlZBEBARhXZWlnaHQAAQxoYWQRAQEYV2VpZ2h0AAQEFQFQaGFzZSB0cmFuc2l0aW9uIGNvdWxkIG5vdCBldmVuIGJlZ2luIGJlY2FzZXUgb2YgYmVpbmcgb3V0IG9mIHdlaWdodC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRtCRSQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzGHBhbGxldBRFdmVudAQEVAABDEhWZXJpZmljYXRpb25GYWlsZWQIADgBJFBhZ2VJbmRleAAAcQkBQEZlYXNpYmlsaXR5RXJyb3IAABCgQSB2ZXJpZmljYXRpb24gZmFpbGVkIGF0IHRoZSBnaXZlbiBwYWdlLgBVAU5PVEU6IGlmIHRoZSBpbmRleCBpcyAwLCB0aGVuIHRoaXMgY291bGQgbWVhbiBlaXRoZXIgdGhlIGZlYXNpYmlsaXR5IG9mIHRoZSBsYXN0IHBhZ2UFAXdhcyB3cm9uZywgb3IgdGhlIGZpbmFsIGNoZWNrcyBvZiBgZmluYWxpemVfdmVyaWZpY2F0aW9uYCBmYWlsZWQuIFZlcmlmaWVkCAA4ASRQYWdlSW5kZXgAADgBDHUzMgABCFkBVGhlIGdpdmVuIHBhZ2Ugb2YgYSBzb2x1dGlvbiBoYXMgYmVlbiB2ZXJpZmllZCwgd2l0aCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHdpbm5lcnMgYmVpbmcwZm91bmQgaW4gaXQuGFF1ZXVlZAgA0QUBNEVsZWN0aW9uU2NvcmUAAHkJAVRPcHRpb248RWxlY3Rpb25TY29yZT4AAgQdAUEgc29sdXRpb24gd2l0aCB0aGUgZ2l2ZW4gc2NvcmUgaGFzIHJlcGxhY2VkIG91ciBjdXJyZW50IGJlc3Qgc29sdXRpb24uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0cQkMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllckBGZWFzaWJpbGl0eUVycm9yAAEsQFdyb25nV2lubmVyQ291bnQAAABMU25hcHNob3RVbmF2YWlsYWJsZQABACxJbnZhbGlkVm90ZQACADBJbnZhbGlkVm90ZXIAAwA0SW52YWxpZFdpbm5lcgAEADBJbnZhbGlkU2NvcmUABQAwSW52YWxpZFJvdW5kAAYALFNjb3JlVG9vTG93AAcAUEZhaWxlZFRvQm91bmRTdXBwb3J0AAgAME5wb3NFbGVjdGlvbgQAdQkBYHNwX25wb3NfZWxlY3Rpb25zOjpFcnJvcgAJAChJbmNvbXBsZXRlAAoAAHUJCERzcF9ucG9zX2VsZWN0aW9ucxRFcnJvcgABKFhTb2x1dGlvbldlaWdodE92ZXJmbG93AAAAWFNvbHV0aW9uVGFyZ2V0T3ZlcmZsb3cAAQBQU29sdXRpb25JbnZhbGlkSW5kZXgAAgBgU29sdXRpb25JbnZhbGlkUGFnZUluZGV4AAMAPEFyaXRobWV0aWNFcnJvcgAEAEhJbnZhbGlkU3VwcG9ydEVkZ2UABQA0VG9vTWFueVZvdGVycwAGADhCb3VuZHNFeGNlZWRlZAAHADhEdXBsaWNhdGVWb3RlcgAIADxEdXBsaWNhdGVUYXJnZXQACQAAeQkEGE9wdGlvbgQEVAHRBQEIEE5vbmUAAAAQU29tZQQA0QUAAAEAAH0JEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkGHBhbGxldBRFdmVudAQEVAABHChSZWdpc3RlcmVkDAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAA0QUBNEVsZWN0aW9uU2NvcmUAAARRAVVwY29taW5nIHN1Ym1pc3Npb24gaGFzIGJlZW4gcmVnaXN0ZXJlZCBmb3IgdGhlIGdpdmVuIGFjY291bnQsIHdpdGggdGhlIGdpdmVuIHNjb3JlLhhTdG9yZWQMADgBDHUzMgAABAEwVDo6QWNjb3VudElkAAA4ASRQYWdlSW5kZXgAAQRdAUEgcGFnZSBvZiBzb2x1dGlvbiBzb2x1dGlvbiB3aXRoIHRoZSBnaXZlbiBpbmRleCBoYXMgYmVlbiBzdG9yZWQgZm9yIHRoZSBnaXZlbiBhY2NvdW50LiBSZXdhcmRlZAwAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQAAFUBATBCYWxhbmNlT2Y8VD4AAgToVGhlIGdpdmVuIGFjY291bnQgaGFzIGJlZW4gcmV3YXJkZWQgd2l0aCB0aGUgZ2l2ZW4gYW1vdW50LhxTbGFzaGVkDAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAAVQEBMEJhbGFuY2VPZjxUPgADBORUaGUgZ2l2ZW4gYWNjb3VudCBoYXMgYmVlbiBzbGFzaGVkIHdpdGggdGhlIGdpdmVuIGFtb3VudC4cRWplY3RlZAgAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQABATUVGhlIGdpdmVuIHNvbHV0aW9uLCBmb3IgdGhlIGdpdmVuIHJvdW5kLCB3YXMgZWplY3RlZC4kRGlzY2FyZGVkCAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAFBJRUaGUgZ2l2ZW4gYWNjb3VudCBoYXMgYmVlbiBkaXNjYXJkZWQuGEJhaWxlZAgAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQABgR0VGhlIGdpdmVuIGFjY291bnQgaGFzIGJhaWxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSBCRBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldBRFdmVudAQEVAABbBxFcmFQYWlkDAEkZXJhX2luZGV4OAEgRXJhSW5kZXgAAUB2YWxpZGF0b3JfcGF5b3V0VQEBMEJhbGFuY2VPZjxUPgABJHJlbWFpbmRlclUBATBCYWxhbmNlT2Y8VD4AABRwVGhlIGVyYSBwYXlvdXQgaGFzIGJlZW4gc2V0LgANAUluIG5vbi1taW50aW5nIG1vZGUsIGB2YWxpZGF0b3JfcGF5b3V0YCBpcyB0aGUgc3Rha2VyIHJld2FyZCBidWRnZXQFAXNuYXBzaG90dGVkIGZyb20gdGhlIGdlbmVyYWwgcG90LCBhbmQgYHJlbWFpbmRlcmAgaXMgYWx3YXlzIHplcm8uIQFJbiBsZWdhY3kgbWludGluZyBtb2RlLCBib3RoIGZpZWxkcyByZWZsZWN0IHRoZSBgRXJhUGF5b3V0YCBjb21wdXRhdGlvbi4gUmV3YXJkZWQMARRzdGFzaAQBMFQ6OkFjY291bnRJZAABEGRlc3S9BgF8UmV3YXJkRGVzdGluYXRpb248VDo6QWNjb3VudElkPgABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4AAQQNAVRoZSBub21pbmF0b3IgaGFzIGJlZW4gcmV3YXJkZWQgYnkgdGhpcyBhbW91bnQgdG8gdGhpcyBkZXN0aW5hdGlvbi4cU2xhc2hlZAgBGHN0YWtlcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4AAgQdAUEgc3Rha2VyICh2YWxpZGF0b3Igb3Igbm9taW5hdG9yKSBoYXMgYmVlbiBzbGFzaGVkIGJ5IHRoZSBnaXZlbiBhbW91bnQuaE9sZFNsYXNoaW5nUmVwb3J0RGlzY2FyZGVkBAE0c2Vzc2lvbl9pbmRleDgBMFNlc3Npb25JbmRleAADCBkBQW4gb2xkIHNsYXNoaW5nIHJlcG9ydCBmcm9tIGEgcHJpb3IgZXJhIHdhcyBkaXNjYXJkZWQgYmVjYXVzZSBpdCBjb3VsZERub3QgYmUgcHJvY2Vzc2VkLhhCb25kZWQIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4ABBDQQW4gYWNjb3VudCBoYXMgYm9uZGVkIHRoaXMgYW1vdW50LiBcW3N0YXNoLCBhbW91bnRcXQBNAU5PVEU6IFRoaXMgZXZlbnQgaXMgb25seSBlbWl0dGVkIHdoZW4gZnVuZHMgYXJlIGJvbmRlZCB2aWEgYSBkaXNwYXRjaGFibGUuIE5vdGFibHksIQFpdCB3aWxsIG5vdCBiZSBlbWl0dGVkIGZvciBzdGFraW5nIHJld2FyZHMgd2hlbiB0aGV5IGFyZSBhZGRlZCB0byBzdGFrZS4gVW5ib25kZWQIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4ABQSQQW4gYWNjb3VudCBoYXMgdW5ib25kZWQgdGhpcyBhbW91bnQuJFdpdGhkcmF3bggBFHN0YXNoBAEwVDo6QWNjb3VudElkAAEYYW1vdW50VQEBMEJhbGFuY2VPZjxUPgAGCFkBQW4gYWNjb3VudCBoYXMgY2FsbGVkIGB3aXRoZHJhd191bmJvbmRlZGAgYW5kIHJlbW92ZWQgdW5ib25kaW5nIGNodW5rcyB3b3J0aCBgQmFsYW5jZWBkZnJvbSB0aGUgdW5sb2NraW5nIHF1ZXVlLjRTdGFrZXJSZW1vdmVkBAEUc3Rhc2gEATBUOjpBY2NvdW50SWQABwhVAUEgc3Vic2VxdWVudCBldmVudCBvZiBgV2l0aGRyYXduYCwgaW5kaWNhdGluZyB0aGF0IGBzdGFzaGAgd2FzIGZ1bGx5IHJlbW92ZWQgZnJvbSB0aGUcc3lzdGVtLhhLaWNrZWQIASRub21pbmF0b3IEATBUOjpBY2NvdW50SWQAARRzdGFzaAQBMFQ6OkFjY291bnRJZAAIBLRBIG5vbWluYXRvciBoYXMgYmVlbiBraWNrZWQgZnJvbSBhIHZhbGlkYXRvci4cQ2hpbGxlZAQBFHN0YXNoBAEwVDo6QWNjb3VudElkAAkEIQFBbiBhY2NvdW50IGhhcyBzdG9wcGVkIHBhcnRpY2lwYXRpbmcgYXMgZWl0aGVyIGEgdmFsaWRhdG9yIG9yIG5vbWluYXRvci40UGF5b3V0U3RhcnRlZBABJGVyYV9pbmRleDgBIEVyYUluZGV4AAE8dmFsaWRhdG9yX3N0YXNoBAEwVDo6QWNjb3VudElkAAEQcGFnZTgBEFBhZ2UAARBuZXh04AEwT3B0aW9uPFBhZ2U+AAoEWQFBIFBhZ2Ugb2Ygc3Rha2VycyByZXdhcmRzIGFyZSBnZXR0aW5nIHBhaWQuIGBuZXh0YCBpcyBgTm9uZWAgaWYgYWxsIHBhZ2VzIGFyZSBjbGFpbWVkLkRWYWxpZGF0b3JQcmVmc1NldAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAEUcHJlZnPBBgE4VmFsaWRhdG9yUHJlZnMACwSYQSB2YWxpZGF0b3IgaGFzIHNldCB0aGVpciBwcmVmZXJlbmNlcy5oU25hcHNob3RWb3RlcnNTaXplRXhjZWVkZWQEARBzaXplOAEMdTMyAAwEaFZvdGVycyBzaXplIGxpbWl0IHJlYWNoZWQubFNuYXBzaG90VGFyZ2V0c1NpemVFeGNlZWRlZAQBEHNpemU4AQx1MzIADQRsVGFyZ2V0cyBzaXplIGxpbWl0IHJlYWNoZWQuIEZvcmNlRXJhBAEQbW9kZYUJARxGb3JjaW5nAA4AZENvbnRyb2xsZXJCYXRjaERlcHJlY2F0ZWQEASBmYWlsdXJlczgBDHUzMgAPBKRSZXBvcnQgb2YgYSBjb250cm9sbGVyIGJhdGNoIGRlcHJlY2F0aW9uLkBDdXJyZW5jeU1pZ3JhdGVkCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAAThmb3JjZV93aXRoZHJhd1UBATBCYWxhbmNlT2Y8VD4AEAhVAVN0YWtpbmcgYmFsYW5jZSBtaWdyYXRlZCBmcm9tIGxvY2tzIHRvIGhvbGRzLCB3aXRoIGFueSBiYWxhbmNlIHRoYXQgY291bGQgbm90IGJlIGhlbGRMaXMgZm9yY2Ugd2l0aGRyYXduLlhQYWdlZEVsZWN0aW9uUHJvY2VlZGVkCAEQcGFnZTgBJFBhZ2VJbmRleAABGHJlc3VsdIkJAUBSZXN1bHQ8dTMyLCB1MzI+ABEkQQFBIHBhZ2UgZnJvbSBhIG11bHRpLXBhZ2UgZWxlY3Rpb24gd2FzIGZldGNoZWQuIEEgbnVtYmVyIG9mIHRoZXNlIGFyZSBmb2xsb3dlZCBieURgU3Rha2Vyc0VsZWN0ZWRgLgDwYE9rKGNvdW50KWAgaW5kaWNhdGVzIHRoZSBnaXZlIG51bWJlciBvZiBzdGFzaGVzIHdlcmUgYWRkZWQuBQFgRXJyKGluZGV4KWAgaW5kaWNhdGVzIHRoYXQgdGhlIHN0YXNoZXMgYWZ0ZXIgaW5kZXggd2VyZSBkcm9wcGVkLkEBYEVycigwKWAgaW5kaWNhdGVzIHRoYXQgYW4gZXJyb3IgaGFwcGVuZWQgYnV0IG5vIHN0YXNoZXMgd2VyZSBkcm9wcGVkIG5vciBhZGRlZC4AUQFUaGUgZXJyb3IgaW5kaWNhdGVzIHRoYXQgYSBudW1iZXIgb2YgdmFsaWRhdG9ycyB3ZXJlIGRyb3BwZWQgZHVlIHRvIGV4Y2VzcyBzaXplLCBidXSMdGhlIG92ZXJhbGwgZWxlY3Rpb24gd2lsbCBjb250aW51ZS48T2ZmZW5jZVJlcG9ydGVkDAEsb2ZmZW5jZV9lcmE4ASBFcmFJbmRleAABJHZhbGlkYXRvcgQBMFQ6OkFjY291bnRJZAABIGZyYWN0aW9uHQUBHFBlcmJpbGwAEghNAUFuIG9mZmVuY2UgZm9yIHRoZSBnaXZlbiB2YWxpZGF0b3IsIGZvciB0aGUgZ2l2ZW4gcGVyY2VudGFnZSBvZiB0aGVpciBzdGFrZSwgYXQgdGhlbGdpdmVuIGVyYSBhcyBiZWVuIHJlcG9ydGVkLjRTbGFzaENvbXB1dGVkEAEsb2ZmZW5jZV9lcmE4ASBFcmFJbmRleAABJHNsYXNoX2VyYTgBIEVyYUluZGV4AAEgb2ZmZW5kZXIEATBUOjpBY2NvdW50SWQAARBwYWdlOAEMdTMyABMEMQFBbiBvZmZlbmNlIGhhcyBiZWVuIHByb2Nlc3NlZCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgc2xhc2ggaGFzIGJlZW4gY29tcHV0ZWQuOFNsYXNoQ2FuY2VsbGVkCAEkc2xhc2hfZXJhOAEgRXJhSW5kZXgAASR2YWxpZGF0b3IEATBUOjpBY2NvdW50SWQAFASYQW4gdW5hcHBsaWVkIHNsYXNoIGhhcyBiZWVuIGNhbmNlbGxlZC44U2Vzc2lvblJvdGF0ZWQMAUBzdGFydGluZ19zZXNzaW9uOAEwU2Vzc2lvbkluZGV4AAEoYWN0aXZlX2VyYTgBIEVyYUluZGV4AAEscGxhbm5lZF9lcmE4ASBFcmFJbmRleAAVEIhTZXNzaW9uIGNoYW5nZSBoYXMgYmVlbiB0cmlnZ2VyZWQuAFkBSWYgcGxhbm5lZF9lcmEgaXMgb25lIGVyYSBhaGVhZCBvZiBhY3RpdmVfZXJhLCBpdCBpbXBsaWVzIG5ldyBlcmEgaXMgYmVpbmcgcGxhbm5lZCBhbmRQZWxlY3Rpb24gaXMgb25nb2luZy4oVW5leHBlY3RlZAQAjQkBRFVuZXhwZWN0ZWRLaW5kPFQ+ABYIDQFTb21ldGhpbmcgb2NjdXJyZWQgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuIHVuZGVyIG5vcm1hbCBvcGVyYXRpb24uvExvZ2dlZCBhcyBhbiBldmVudCBmb3IgZmFpbC1zYWZlIG9ic2VydmFiaWxpdHkuNE9mZmVuY2VUb29PbGQMASxvZmZlbmNlX2VyYTgBIEVyYUluZGV4AAEkdmFsaWRhdG9yBAEwVDo6QWNjb3VudElkAAEgZnJhY3Rpb24dBQEcUGVyYmlsbAAXBD0BQW4gb2ZmZW5jZSB3YXMgcmVwb3J0ZWQgdGhhdCB3YXMgdG9vIG9sZCB0byBiZSBwcm9jZXNzZWQsIGFuZCB0aHVzIHdhcyBkcm9wcGVkLiRFcmFQcnVuZWQEARRpbmRleDgBIEVyYUluZGV4ABgErEFuIG9sZCBlcmEgd2l0aCB0aGUgZ2l2ZW4gaW5kZXggd2FzIHBydW5lZC5YVmFsaWRhdG9ySW5jZW50aXZlUGFpZBABDGVyYTgBIEVyYUluZGV4AAE8dmFsaWRhdG9yX3N0YXNoBAEwVDo6QWNjb3VudElkAAEQZGVzdL0GAXxSZXdhcmREZXN0aW5hdGlvbjxUOjpBY2NvdW50SWQ+AAEYYW1vdW50VQEBMEJhbGFuY2VPZjxUPgAZBPRUaGUgdmFsaWRhdG9yIGhhcyBiZWVuIHBhaWQgdGhlaXIgc2VsZi1zdGFrZSBpbmNlbnRpdmUgYm9udXMubFZhbGlkYXRvckluY2VudGl2ZUNvbmZpZ1NldAwBSG9wdGltdW1fc2VsZl9zdGFrZVUBATBCYWxhbmNlT2Y8VD4AAUxoYXJkX2NhcF9zZWxmX3N0YWtlVQEBMEJhbGFuY2VPZjxUPgABMHNsb3BlX2ZhY3Rvch0FARxQZXJiaWxsABoE+FZhbGlkYXRvciBzZWxmLXN0YWtlIGluY2VudGl2ZSBjb25maWd1cmF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0hQkIUHBhbGxldF9zdGFraW5nX2FzeW5jHEZvcmNpbmcAARAoTm90Rm9yY2luZwAAACBGb3JjZU5ldwABACRGb3JjZU5vbmUAAgAsRm9yY2VBbHdheXMAAwAAiQkEGFJlc3VsdAgEVAE4BEUBOAEICE9rBAA4AAAAAAxFcnIEADgAAAEAAI0JEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0OFVuZXhwZWN0ZWRLaW5kBARUAAEYYEVyYUR1cmF0aW9uQm91bmRFeGNlZWRlZAAAAGhVbmtub3duVmFsaWRhdG9yQWN0aXZhdGlvbgABAGBQYWdlZEVsZWN0aW9uT3V0T2ZXZWlnaHQMARBwYWdlOAEkUGFnZUluZGV4AAEgcmVxdWlyZWQRAQEYV2VpZ2h0AAEMaGFkEQEBGFdlaWdodAACADBNaXNzaW5nUGF5ZWUIAQxlcmE4ASBFcmFJbmRleAABFHN0YXNoBAEwVDo6QWNjb3VudElkAAMAgFZhbGlkYXRvckluY2VudGl2ZVdlaWdodE1pc21hdGNoBAEMZXJhOAEgRXJhSW5kZXgABACAVmFsaWRhdG9ySW5jZW50aXZlVHJhbnNmZXJGYWlsZWQEAQxlcmE4ASBFcmFJbmRleAAFAACRCQx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchhwYWxsZXQURXZlbnQEBFQAARhQUmluZ1Jvb3RzSW5pdGlhbGl6ZWQIARRjb3VudDgBDHUzMgSETnVtYmVyIG9mIHJpbmcgcm9vdHMgaW5pdGlhbGl6ZWQuASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyBLBTZXF1ZW5jZSBudW1iZXIgb2YgdGhlIGluaXRpYWxpemF0aW9uIGJhdGNoLgAEzFJpbmcgcm9vdHMgaGF2ZSBiZWVuIGluaXRpYWxpemVkIGZyb20gdGhlIG5vdGlmaWVyLkBSaW5nUm9vdHNVcGRhdGVkCAEUY291bnQ4AQx1MzIEcE51bWJlciBvZiB1cGRhdGVzIHByb2Nlc3NlZC4BIHNlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIEdFNlcXVlbmNlIG51bWJlciBvZiB0aGUgYmF0Y2guAQSYUmluZyByb290IHVwZGF0ZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZC5YU3Vic2NyaXB0aW9uVGVybWluYXRlZAQBRG5vdGlmaWVyX25vdGlmaWVkWQEBEGJvb2wE0FdoZXRoZXIgdGhlIHVuc3Vic2NyaWJlIFhDTSB3YXMgc3VjY2Vzc2Z1bGx5IHF1ZXVlZC4CBIRTdWJzY3JpcHRpb24gaGFzIGJlZW4gdGVybWluYXRlZC5QTWlzc2luZ1JpbmdzRGV0ZWN0ZWQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgRsUmluZyBjb2xsZWN0aW9uIGlkZW50aWZpZXIuARRjb3VudDgBDHUzMgS4TnVtYmVyIG9mIG5ld2x5IGRldGVjdGVkIG1pc3NpbmcgcmluZyBpbmRpY2VzLgME4E5ldyBtaXNzaW5nIHJpbmcgcm9vdHMgZGV0ZWN0ZWQgZHVyaW5nIGJhdGNoIHByb2Nlc3NpbmcuRFJlcGxheVJlcXVlc3RTZW50CAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIEbFJpbmcgY29sbGVjdGlvbiBpZGVudGlmaWVyLgE0aW5kaWNlc19jb3VudDgBDHUzMgSgTnVtYmVyIG9mIG1pc3NpbmcgaW5kaWNlcyBpbiB0aGlzIGNodW5rLgQEtFJlcGxheSByZXF1ZXN0IHN1Y2Nlc3NmdWxseSBzZW50IHRvIG5vdGlmaWVyLmBEZWxldGVkSW5kaWNlc0F0Q2FwYWNpdHkEAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgRsUmluZyBjb2xsZWN0aW9uIGlkZW50aWZpZXIuBQQNAU1pc3NpbmcgcmluZyBzY2FuIHNraXBwZWQgYmVjYXVzZSBkZWxldGVkX2luZGljZXMgcmVhY2hlZCBjYXBhY2l0eS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSVCQxsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzGHBhbGxldBRFdmVudAQEVAABEDxBbGlhc0FjY291bnRTZXQMARxhY2NvdW50BAEwVDo6QWNjb3VudElkBHBUaGUgYWNjb3VudCB0aGF0IHdhcyBsaW5rZWQuAShjb2xsZWN0aW9uCAEoSWRlbnRpZmllcgRoVGhlIGNvbGxlY3Rpb24gaWRlbnRpZmllci4BFGFsaWFzCAEUQWxpYXMEVFRoZSBjb250ZXh0dWFsIGFsaWFzLgAEpEFuIGFsaWFzIGFjY291bnQgaGFzIGJlZW4gc2V0IG9yIHVwZGF0ZWQuREFsaWFzQWNjb3VudFVuc2V0BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAR4VGhlIGFjY291bnQgdGhhdCB3YXMgdW5saW5rZWQuAQSIQW4gYWxpYXMgYWNjb3VudCBoYXMgYmVlbiByZW1vdmVkLkxTdGFsZUFsaWFzQ2xlYW5lZFVwDAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAR4VGhlIGFjY291bnQgdGhhdCB3YXMgdW5saW5rZWQuAShjb2xsZWN0aW9uCAEoSWRlbnRpZmllcgRoVGhlIGNvbGxlY3Rpb24gaWRlbnRpZmllci4BFGFsaWFzCAEUQWxpYXMEVFRoZSBjb250ZXh0dWFsIGFsaWFzLgIElEEgc3RhbGUgYWxpYXMgbWFwcGluZyB3YXMgY2xlYW5lZCB1cC4sQWxpYXNGZWVTZXQEAQxmZWVVAQEwQmFsYW5jZU9mPFQ+AAMExFRoZSBQR0FTIGZlZSBmb3IgYWxpYXMgcmVnaXN0cmF0aW9ucyB3YXMgY2hhbmdlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSZCQxEaW5kaXZfcGFsbGV0X3BnYXMYcGFsbGV0FEV2ZW50BARUAAEMLFBnYXNDbGFpbWVkFAEUYWxpYXMIARRBbGlhcwABGHRhcmdldAQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBASEBPDxUIGFzIENvbmZpZz46OkZ1bmdpYmxlcyBhcyBmdW5naWJsZXM6Okluc3BlY3Q8VDo6QWNjb3VudElkPj46OgpCYWxhbmNlAAEoY29sbGVjdGlvbv0DAThQZ2FzQ29sbGVjdGlvbgABDGRheTgBDHUzMgAABHRQR0FTIHdhcyBjbGFpbWVkIGJ5IGEgcGVyc29uLkBQZ2FzQXNzZXRDcmVhdGVkAAEEbFRoZSBQR0FTIGFzc2V0IHdhcyBjcmVhdGVkLlxQZ2FzQ2xhaW1SZWNvcmRzQ2xlYW5lZAgBJGRheV9pbmRleDgBDHUzMgABFGNvdW50OAEMdTMyAAIEnE9sZCBQR0FTIGNsYWltIHJlY29yZHMgd2VyZSBjbGVhbmVkIHVwLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJ0JDDRwYWxsZXRfcmV2aXZlGHBhbGxldBRFdmVudAQEVAABDDxDb250cmFjdEVtaXR0ZWQMASBjb250cmFjdDkHARBIMTYwBJBUaGUgY29udHJhY3QgdGhhdCBlbWl0dGVkIHRoZSBldmVudC4BEGRhdGEYARxWZWM8dTg+CDUBRGF0YSBzdXBwbGllZCBieSB0aGUgY29udHJhY3QuIE1ldGFkYXRhIGdlbmVyYXRlZCBkdXJpbmcgY29udHJhY3QgY29tcGlsYXRpb25caXMgbmVlZGVkIHRvIGRlY29kZSBpdC4BGHRvcGljc8ABJFZlYzxIMjU2PgikQSBsaXN0IG9mIHRvcGljcyB1c2VkIHRvIGluZGV4IHRoZSBldmVudC7sTnVtYmVyIG9mIHRvcGljcyBpcyBjYXBwZWQgYnkgW2BsaW1pdHM6Ok5VTV9FVkVOVF9UT1BJQ1NgXS4ABJxBIGN1c3RvbSBldmVudCBlbWl0dGVkIGJ5IHRoZSBjb250cmFjdC4wSW5zdGFudGlhdGVkCAEgZGVwbG95ZXI5BwEQSDE2MAABIGNvbnRyYWN0OQcBEEgxNjAAAQTcQ29udHJhY3QgZGVwbG95ZWQgYnkgZGVwbG95ZXIgYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLkhFdGhFeHRyaW5zaWNSZXZlcnQEAThkaXNwYXRjaF9lcnJvcvkHATREaXNwYXRjaEVycm9yAAIYtEVtaXR0ZWQgd2hlbiBhbiBFdGhlcmV1bSB0cmFuc2FjdGlvbiByZXZlcnRzLgApAUV0aGVyZXVtIHRyYW5zYWN0aW9ucyBhbHdheXMgY29tcGxldGUgc3VjY2Vzc2Z1bGx5IGF0IHRoZSBleHRyaW5zaWMgbGV2ZWws2GFzIGV2ZW4gcmV2ZXJ0ZWQgY2FsbHMgbXVzdCBzdG9yZSB0aGVpciBgUmVjZWlwdEluZm9gLiUBVG8gZGlzdGluZ3Vpc2ggcmV2ZXJ0ZWQgY2FsbHMgZnJvbSBzdWNjZXNzZnVsIG9uZXMsIHRoaXMgZXZlbnQgaXMgZW1pdHRlZIRmb3IgZmFpbGVkIEV0aGVyZXVtIHRyYW5zYWN0aW9ucy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXShCQxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkYcGFsbGV0FEV2ZW50BARUAAEUME5hbWVSZXNlcnZlZBQBJGNhbmRpZGF0ZQQBMFQ6OkFjY291bnRJZASYVGhlIGNhbmRpZGF0ZSB3aG9zZSBuYW1lIHdhcyByZXNlcnZlZC4BIGF0dGVzdGVyBAEwVDo6QWNjb3VudElkBKxUaGUgYXR0ZXN0ZXIgd2hvIHBlcmZvcm1lZCB0aGUgcmVzZXJ2YXRpb24uAShsaXRlX2xhYmVsTQcBJEJhc2VMYWJlbAS4VGhlIGxpdGUtcGVyc29uIGxhYmVsIChgPGRucy1zdGVtPi48ZGlnaXRzPmApLgEgY2hhdF9rZXlRBwEcQ2hhdEtleQTkVGhlIEVDREggY2hhdCBrZXkgc3RvcmVkIGFsb25nc2lkZSB0aGUgbGl0ZS1wZXJzb24gbGFiZWwuAUxyZXNlcnZlZF9iYXNlX2xhYmVsVQcBRE9wdGlvbjxCYXNlTGFiZWw+BAUBVGhlIG9wdGlvbmFsIGJhc2UgbGFiZWwgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSBmdWxsLXBlcnNvbiBjbGFpbWluZy4ABPBBIHVzZXJuYW1lIGhhcyBiZWVuIHJlc2VydmVkIGZvciBhIGNhbmRpZGF0ZSBieSBhbiBhdHRlc3Rlci44TmFtZVJlZ2lzdGVyZWQQARRhbGlhcwgBFEFsaWFzBJhUaGUgYWxpYXMgZGVyaXZlZCBmcm9tIHRoZSByaW5nIHByb29mLgEcYWNjb3VudAQBMFQ6OkFjY291bnRJZASwVGhlIGFjY291bnQgdGhhdCBpbml0aWF0ZWQgdGhlIHJlZ2lzdHJhdGlvbi4BFGxhYmVsTQcBJEJhc2VMYWJlbASEVGhlIHJlZ2lzdGVyZWQgZnVsbC1wZXJzb24gbGFiZWwuARBsaW5rWQcBEExpbmsE5EhvdyB0aGUgZnVsbC1wZXJzb24gbGFiZWwgcmVsYXRlcyB0byBhIGxpdGUtcGVyc29uIGxhYmVsLgEE0EEgdXNlcm5hbWUgaGFzIGJlZW4gcmVnaXN0ZXJlZCBieSBhIHZlcmlmaWVkIHBlcnNvbi50QXR0ZXN0YXRpb25BbGxvd2FuY2VJbmNyZWFzZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkBFRUaGUgYXR0ZXN0ZXIgYWNjb3VudC4BFGNvdW50OAEMdTMyBIRUaGUgbnVtYmVyIG9mIGF0dGVzdGF0aW9ucyBhZGRlZC4CBMxBdHRlc3RhdGlvbiBhbGxvd2FuY2Ugd2FzIGluY3JlYXNlZCBmb3IgYW4gYWNjb3VudC54QWxsQXR0ZXN0YXRpb25BbGxvd2FuY2VDbGVhcmVkBAEgYXR0ZXN0ZXIEATBUOjpBY2NvdW50SWQEVFRoZSBhdHRlc3RlciBhY2NvdW50LgME8EFsbCBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgaGFzIGJlZW4gcmVtb3ZlZCBmb3IgdGhlIGF0dGVzdGVyLlBEaXNwYXRjaGVyQWRkcmVzc1NldAQBHGFkZHJlc3M5BwEQSDE2MARkVGhlIG5ldyBjb250cmFjdCBhZGRyZXNzLgQE1FRoZSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYCBjb250cmFjdCBhZGRyZXNzIHdhcyBzZXQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0pQkMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0FEV2ZW50BARUAAEEMFVzYWdlQ2xlYW5lZAQBGGVudGl0eWEHAUxUOjpSZXN0cmljdGVkRW50aXR5AAAEfFVzYWdlIGZvciBhbiBlbnRpdHkgaXMgY2xlYW5lZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSpCQwscGFsbGV0X3N1ZG8YcGFsbGV0FEV2ZW50BARUAAEQFFN1ZGlkBAEsc3Vkb19yZXN1bHQdCAE4RGlzcGF0Y2hSZXN1bHQEtFRoZSByZXN1bHQgb2YgdGhlIGNhbGwgbWFkZSBieSB0aGUgc3VkbyB1c2VyLgAEcEEgc3VkbyBjYWxsIGp1c3QgdG9vayBwbGFjZS4oS2V5Q2hhbmdlZAgBDG9sZI0BAVBPcHRpb248VDo6QWNjb3VudElkPgS0VGhlIG9sZCBzdWRvIGtleSAoaWYgb25lIHdhcyBwcmV2aW91c2x5IHNldCkuAQxuZXcEATBUOjpBY2NvdW50SWQEiFRoZSBuZXcgc3VkbyBrZXkgKGlmIG9uZSB3YXMgc2V0KS4BBHhUaGUgc3VkbyBrZXkgaGFzIGJlZW4gdXBkYXRlZC4oS2V5UmVtb3ZlZAACBIBUaGUga2V5IHdhcyBwZXJtYW5lbnRseSByZW1vdmVkLihTdWRvQXNEb25lBAEsc3Vkb19yZXN1bHQdCAE4RGlzcGF0Y2hSZXN1bHQEtFRoZSByZXN1bHQgb2YgdGhlIGNhbGwgbWFkZSBieSB0aGUgc3VkbyB1c2VyLgMEyEEgW3N1ZG9fYXNdKFBhbGxldDo6c3Vkb19hcykgY2FsbCBqdXN0IHRvb2sgcGxhY2UuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0rQkMVHBhbGxldF9wZ2FzX2FsbG93YW5jZRhwYWxsZXQURXZlbnQEBFQAAQQsUEdBU0ZlZVBhaWQIAQx3aG8EATBUOjpBY2NvdW50SWQAAShhY3R1YWxfZmVlVQEBMEJhbGFuY2VPZjxUPgAACEUBQSB0cmFuc2FjdGlvbiBmZWUgYGFjdHVhbF9mZWVgIGhhcyBiZWVuIHBhaWQgYnkgYHdob2AgaW4gUEdBUyBhbmQgYnVybmVkLiBNaXJyb3Jz6FtgcGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQ6OkV2ZW50OjpUcmFuc2FjdGlvbkZlZVBhaWRgXS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSxCQgwZnJhbWVfc3lzdGVtFFBoYXNlAAEMOEFwcGx5RXh0cmluc2ljBAA4AQx1MzIAAAAwRmluYWxpemF0aW9uAAEAOEluaXRpYWxpemF0aW9uAAIAALUJAAACzAC5CQgwZnJhbWVfc3lzdGVtWExhc3RSdW50aW1lVXBncmFkZUluZm8AAAgBMHNwZWNfdmVyc2lvbmABTGNvZGVjOjpDb21wYWN0PHUzMj4AASRzcGVjX25hbWW9CQFEQ293PCdzdGF0aWMsIHN0cj4AAL0JBAxDb3cEBFQBwQkABADBCQAAAMEJAAAFAgDFCQgwZnJhbWVfc3lzdGVtYENvZGVVcGdyYWRlQXV0aG9yaXphdGlvbgQEVAAACAEkY29kZV9oYXNoPAEcVDo6SGFzaAABNGNoZWNrX3ZlcnNpb25ZAQEQYm9vbAAAyQkMMGZyYW1lX3N5c3RlbRhsaW1pdHMwQmxvY2tXZWlnaHRzAAAMAShiYXNlX2Jsb2NrEQEBGFdlaWdodAABJG1heF9ibG9jaxEBARhXZWlnaHQAASRwZXJfY2xhc3PNCQGEUGVyRGlzcGF0Y2hDbGFzczxXZWlnaHRzUGVyQ2xhc3M+AADNCQw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUAdEJAAwBGG5vcm1hbNEJAQRUAAEsb3BlcmF0aW9uYWzRCQEEVAABJG1hbmRhdG9yedEJAQRUAADRCQwwZnJhbWVfc3lzdGVtGGxpbWl0czxXZWlnaHRzUGVyQ2xhc3MAABABOGJhc2VfZXh0cmluc2ljEQEBGFdlaWdodAABNG1heF9leHRyaW5zaWMNAQE4T3B0aW9uPFdlaWdodD4AASRtYXhfdG90YWwNAQE4T3B0aW9uPFdlaWdodD4AASByZXNlcnZlZA0BAThPcHRpb248V2VpZ2h0PgAA1QkMMGZyYW1lX3N5c3RlbRhsaW1pdHMsQmxvY2tMZW5ndGgAAAgBDG1heNkJAVRQZXJEaXNwYXRjaENsYXNzPHUzMj4AATxtYXhfaGVhZGVyX3NpemXgASxPcHRpb248dTMyPgAA2QkMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAE4AAwBGG5vcm1hbDgBBFQAASxvcGVyYXRpb25hbDgBBFQAASRtYW5kYXRvcnk4AQRUAADdCQgoc3Bfd2VpZ2h0czxSdW50aW1lRGJXZWlnaHQAAAgBEHJlYWQoAQx1NjQAARR3cml0ZSgBDHU2NAAA4QkIKHNwX3ZlcnNpb244UnVudGltZVZlcnNpb24AACABJHNwZWNfbmFtZb0JAURDb3c8J3N0YXRpYywgc3RyPgABJGltcGxfbmFtZb0JAURDb3c8J3N0YXRpYywgc3RyPgABRGF1dGhvcmluZ192ZXJzaW9uOAEMdTMyAAEwc3BlY192ZXJzaW9uOAEMdTMyAAEwaW1wbF92ZXJzaW9uOAEMdTMyAAEQYXBpc+UJARxBcGlzVmVjAAFMdHJhbnNhY3Rpb25fdmVyc2lvbjgBDHUzMgABOHN5c3RlbV92ZXJzaW9uDAEIdTgAAOUJBAxDb3cEBFQB6QkABADpCQAAAOkJAAAC7QkA7QkAAAQIWQI4APEJDDBmcmFtZV9zeXN0ZW0YcGFsbGV0FEVycm9yBARUAAEkPEludmFsaWRTcGVjTmFtZQAACBEBVGhlIG5hbWUgb2Ygc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBtYXRjaCBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS5oU3BlY1ZlcnNpb25OZWVkc1RvSW5jcmVhc2UAAQhBAVRoZSBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaXMgbm90IGFsbG93ZWQgdG8gZGVjcmVhc2UgYmV0d2VlbiB0aGUgY3VycmVudCBydW50aW1lUGFuZCB0aGUgbmV3IHJ1bnRpbWUudEZhaWxlZFRvRXh0cmFjdFJ1bnRpbWVWZXJzaW9uAAIM7EZhaWxlZCB0byBleHRyYWN0IHRoZSBydW50aW1lIHZlcnNpb24gZnJvbSB0aGUgbmV3IHJ1bnRpbWUuAAkBRWl0aGVyIGNhbGxpbmcgYENvcmVfdmVyc2lvbmAgb3IgZGVjb2RpbmcgYFJ1bnRpbWVWZXJzaW9uYCBmYWlsZWQuTE5vbkRlZmF1bHRDb21wb3NpdGUAAwT8U3VpY2lkZSBjYWxsZWQgd2hlbiB0aGUgYWNjb3VudCBoYXMgbm9uLWRlZmF1bHQgY29tcG9zaXRlIGRhdGEuPE5vblplcm9SZWZDb3VudAAEBDUBVGhlcmUgaXMgYSBub24temVybyByZWZlcmVuY2UgY291bnQgcHJldmVudGluZyB0aGUgYWNjb3VudCBmcm9tIGJlaW5nIHB1cmdlZC4wQ2FsbEZpbHRlcmVkAAUE0FRoZSBvcmlnaW4gZmlsdGVyIHByZXZlbnQgdGhlIGNhbGwgdG8gYmUgZGlzcGF0Y2hlZC5sTXVsdGlCbG9ja01pZ3JhdGlvbnNPbmdvaW5nAAYEVQFBIG11bHRpLWJsb2NrIG1pZ3JhdGlvbiBpcyBvbmdvaW5nIGFuZCBwcmV2ZW50cyB0aGUgY3VycmVudCBjb2RlIGZyb20gYmVpbmcgcmVwbGFjZWQuRE5vdGhpbmdBdXRob3JpemVkAAcEWE5vIHVwZ3JhZGUgYXV0aG9yaXplZC4wVW5hdXRob3JpemVkAAgElFRoZSBzdWJtaXR0ZWQgY29kZSBpcyBub3QgYXV0aG9yaXplZC4EbEVycm9yIGZvciB0aGUgU3lzdGVtIHBhbGxldPUJEChzcF9ydW50aW1lHGdlbmVyaWMUYmxvY2sUQmxvY2sIGEhlYWRlcgFcJEV4dHJpbnNpYwH5CQAIARhoZWFkZXJcARhIZWFkZXIAAShleHRyaW5zaWNzCQoBOFZlYzxFeHRyaW5zaWM+AAD5CRAoc3BfcnVudGltZRxnZW5lcmljTHVuY2hlY2tlZF9leHRyaW5zaWNIVW5jaGVja2VkRXh0cmluc2ljEBxBZGRyZXNzAQAQQ2FsbAEgJFNpZ25hdHVyZQGhBBRFeHRyYQH9CQAEABgAAAD9CQh0Y3VtdWx1c19wYWxsZXRfd2VpZ2h0X3JlY2xhaW1QU3RvcmFnZVdlaWdodFJlY2xhaW0IBFQABFMBAQoABAABCgEEUwAAAQoAAAQwBQqZB50HoQelB6kHrQe1B7kHvQfBB8kHAAUKAAAEFGkHcQd1B4EHjQcACQoAAAL5CQANCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbTBibG9ja193ZWlnaHQ8QmxvY2tXZWlnaHRNb2RlBARUAAEMIEZ1bGxDb3JlBAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAAARFBvdGVudGlhbEZ1bGxDb3JlDAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAFcZmlyc3RfdHJhbnNhY3Rpb25faW5kZXjgASxPcHRpb248dTMyPgABNHRhcmdldF93ZWlnaHQRAQEYV2VpZ2h0AAEAOEZyYWN0aW9uT2ZDb3JlCAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAFcZmlyc3RfdHJhbnNhY3Rpb25faW5kZXjgASxPcHRpb248dTMyPgACAAARCgAAAhUKABUKDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudCBBbmNlc3RvcgQESAE8AAwBOHVzZWRfYmFuZHdpZHRoGQoBNFVzZWRCYW5kd2lkdGgAAThwYXJhX2hlYWRfaGFzaPkEASRPcHRpb248SD4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWwtCgGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AABkKDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudDRVc2VkQmFuZHdpZHRoAAAMATR1bXBfbXNnX2NvdW50OAEMdTMyAAE8dW1wX3RvdGFsX2J5dGVzOAEMdTMyAAE0aHJtcF9vdXRnb2luZx0KAYxCVHJlZU1hcDxQYXJhSWQsIEhybXBDaGFubmVsVXBkYXRlPgAAHQoEIEJUcmVlTWFwCARLAZwEVgEhCgAEACUKAAAAIQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50REhybXBDaGFubmVsVXBkYXRlAAAIASRtc2dfY291bnQ4AQx1MzIAASx0b3RhbF9ieXRlczgBDHUzMgAAJQoAAAIpCgApCgAABAicIQoALQoEGE9wdGlvbgQEVAExCgEIEE5vbmUAAAAQU29tZQQAMQoAAAEAADEKDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5OFVwZ3JhZGVHb0FoZWFkAAEIFEFib3J0AAAAHEdvQWhlYWQAAQAANQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50OFNlZ21lbnRUcmFja2VyBARIATwADAE4dXNlZF9iYW5kd2lkdGgZCgE0VXNlZEJhbmR3aWR0aAABOGhybXBfd2F0ZXJtYXJr4AGAT3B0aW9uPHJlbGF5X2NoYWluOjpCbG9ja051bWJlcj4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWwtCgGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AADkKBBhPcHRpb24EBFQBPQoBCBBOb25lAAAAEFNvbWUEAD0KAAABAAA9CgxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUhVcGdyYWRlUmVzdHJpY3Rpb24AAQQcUHJlc2VudAAAAABBCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdFhNZXNzYWdpbmdTdGF0ZVNuYXBzaG90AAAQATBkbXFfbXFjX2hlYWQ8AURyZWxheV9jaGFpbjo6SGFzaAABnHJlbGF5X2Rpc3BhdGNoX3F1ZXVlX3JlbWFpbmluZ19jYXBhY2l0eUUKAYxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQABQGluZ3Jlc3NfY2hhbm5lbHNJCgGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgABPGVncmVzc19jaGFubmVsc0kKAYhWZWM8KFBhcmFJZCwgQWJyaWRnZWRIcm1wQ2hhbm5lbCk+AABFCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdIxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQAACAE8cmVtYWluaW5nX2NvdW50OAEMdTMyAAE4cmVtYWluaW5nX3NpemU4AQx1MzIAAEkKAAACTQoATQoAAAQInFEKAFEKDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5TEFicmlkZ2VkSHJtcENoYW5uZWwAABgBMG1heF9jYXBhY2l0eTgBDHUzMgABOG1heF90b3RhbF9zaXplOAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZTgBDHUzMgABJG1zZ19jb3VudDgBDHUzMgABKHRvdGFsX3NpemU4AQx1MzIAASBtcWNfaGVhZPkEATBPcHRpb248SGFzaD4AAFUKDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5ZEFicmlkZ2VkSG9zdENvbmZpZ3VyYXRpb24AACgBNG1heF9jb2RlX3NpemU4AQx1MzIAAUhtYXhfaGVhZF9kYXRhX3NpemU4AQx1MzIAAVhtYXhfdXB3YXJkX3F1ZXVlX2NvdW50OAEMdTMyAAFUbWF4X3Vwd2FyZF9xdWV1ZV9zaXplOAEMdTMyAAFcbWF4X3Vwd2FyZF9tZXNzYWdlX3NpemU4AQx1MzIAAZBtYXhfdXB3YXJkX21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGU4AQx1MzIAAYhocm1wX21heF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAFsdmFsaWRhdGlvbl91cGdyYWRlX2Nvb2xkb3duOAEsQmxvY2tOdW1iZXIAAWB2YWxpZGF0aW9uX3VwZ3JhZGVfZGVsYXk4ASxCbG9ja051bWJlcgABUGFzeW5jX2JhY2tpbmdfcGFyYW1zWQoBSEFzeW5jQmFja2luZ1BhcmFtcwAAWQoQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk0YXN5bmNfYmFja2luZ0hBc3luY0JhY2tpbmdQYXJhbXMAAAgBTG1heF9jYW5kaWRhdGVfZGVwdGg4AQx1MzIAAVBhbGxvd2VkX2FuY2VzdHJ5X2xlbjgBDHUzMgAAXQoIlGN1bXVsdXNfcHJpbWl0aXZlc19wYXJhY2hhaW5faW5oZXJlbnRETWVzc2FnZVF1ZXVlQ2hhaW4AAAQAPAEkUmVsYXlIYXNoAABhCgQgQlRyZWVNYXAIBEsBnARWAV0KAAQAZQoAAABlCgAAAmkKAGkKAAAECJxdCgBtCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRASW5ib3VuZE1lc3NhZ2VJZAAACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEscmV2ZXJzZV9pZHg4AQx1MzIAAHEKAAACdQoAdQoIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0xPdXRib3VuZEhybXBNZXNzYWdlBAhJZAGcAAgBJHJlY2lwaWVudJwBCElkAAEQZGF0YRgBTGFsbG9jOjp2ZWM6OlZlYzx1OD4AAHkKCHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtLFBvVk1lc3NhZ2VzAAAYAWhyZWxheV9zdG9yYWdlX3Jvb3Rfb3JfaGFzaDwBRHJlbGF5X2NoYWluOjpIYXNoAAE0Y29yZV9zZWxlY3RvcgwBCHU4AAEwYnVuZGxlX2luZGV4DAEIdTgAATR1bXBfbXNnX2NvdW50OAEMdTMyAAFMaHJtcF9vdXRib3VuZF9jb3VudDgBDHUzMgABYGhybXBfb3V0Ym91bmRfcmVjaXBpZW50c30KASxWZWM8UGFyYUlkPgAAfQoAAAKcAIEKDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFcnJvcgQEVAABGExPdmVybGFwcGluZ1VwZ3JhZGVzAAAEGQFBdHRlbXB0IHRvIHVwZ3JhZGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3aGlsZSBleGlzdGluZyB1cGdyYWRlIHBlbmRpbmcuUFByb2hpYml0ZWRCeVBvbGthZG90AAEETQFQb2xrYWRvdCBjdXJyZW50bHkgcHJvaGliaXRzIHRoaXMgcGFyYWNoYWluIGZyb20gdXBncmFkaW5nIGl0cyB2YWxpZGF0aW9uIGZ1bmN0aW9uLhhUb29CaWcAAghFAVRoZSBzdXBwbGllZCB2YWxpZGF0aW9uIGZ1bmN0aW9uIGhhcyBjb21waWxlZCBpbnRvIGEgYmxvYiBsYXJnZXIgdGhhbiBQb2xrYWRvdCBpczx3aWxsaW5nIHRvIHJ1bi5oVmFsaWRhdGlvbkRhdGFOb3RBdmFpbGFibGUAAwQdAVRoZSBpbmhlcmVudCB3aGljaCBzdXBwbGllcyB0aGUgdmFsaWRhdGlvbiBkYXRhIGRpZCBub3QgcnVuIHRoaXMgYmxvY2sudEhvc3RDb25maWd1cmF0aW9uTm90QXZhaWxhYmxlAAQEKQFUaGUgaW5oZXJlbnQgd2hpY2ggc3VwcGxpZXMgdGhlIGhvc3QgY29uZmlndXJhdGlvbiBkaWQgbm90IHJ1biB0aGlzIGJsb2NrLjBOb3RTY2hlZHVsZWQABQTYTm8gdmFsaWRhdGlvbiBmdW5jdGlvbiB1cGdyYWRlIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LoUKCDxwYWxsZXRfcHJlaW1hZ2VAT2xkUmVxdWVzdFN0YXR1cwgkQWNjb3VudElkAQQcQmFsYW5jZQFVAQEILFVucmVxdWVzdGVkCAEcZGVwb3NpdMUFAVAoQWNjb3VudElkLCBCYWxhbmNlKQABDGxlbjgBDHUzMgAAACRSZXF1ZXN0ZWQMARxkZXBvc2l0iQoBcE9wdGlvbjwoQWNjb3VudElkLCBCYWxhbmNlKT4AARRjb3VudDgBDHUzMgABDGxlbuABLE9wdGlvbjx1MzI+AAEAAIkKBBhPcHRpb24EBFQBxQUBCBBOb25lAAAAEFNvbWUEAMUFAAABAACNCgg8cGFsbGV0X3ByZWltYWdlNFJlcXVlc3RTdGF0dXMIJEFjY291bnRJZAEEGFRpY2tldAGRCgEILFVucmVxdWVzdGVkCAEYdGlja2V0lQoBTChBY2NvdW50SWQsIFRpY2tldCkAAQxsZW44AQx1MzIAAAAkUmVxdWVzdGVkDAEwbWF5YmVfdGlja2V0mQoBbE9wdGlvbjwoQWNjb3VudElkLCBUaWNrZXQpPgABFGNvdW50OAEMdTMyAAEkbWF5YmVfbGVu4AEsT3B0aW9uPHUzMj4AAQAAkQoUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQAVQEBKEY6OkJhbGFuY2UAAJUKAAAECASRCgCZCgQYT3B0aW9uBARUAZUKAQgQTm9uZQAAABBTb21lBACVCgAAAQAAnQoAAAQIPDgAoQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAClCgw8cGFsbGV0X3ByZWltYWdlGHBhbGxldBRFcnJvcgQEVAABIBhUb29CaWcAAASgUHJlaW1hZ2UgaXMgdG9vIGxhcmdlIHRvIHN0b3JlIG9uLWNoYWluLjBBbHJlYWR5Tm90ZWQAAQSkUHJlaW1hZ2UgaGFzIGFscmVhZHkgYmVlbiBub3RlZCBvbi1jaGFpbi40Tm90QXV0aG9yaXplZAACBMhUaGUgdXNlciBpcyBub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgYWN0aW9uLiBOb3ROb3RlZAADBPxUaGUgcHJlaW1hZ2UgY2Fubm90IGJlIHJlbW92ZWQgc2luY2UgaXQgaGFzIG5vdCB5ZXQgYmVlbiBub3RlZC4kUmVxdWVzdGVkAAQECQFBIHByZWltYWdlIG1heSBub3QgYmUgcmVtb3ZlZCB3aGVuIHRoZXJlIGFyZSBvdXRzdGFuZGluZyByZXF1ZXN0cy4wTm90UmVxdWVzdGVkAAUELQFUaGUgcHJlaW1hZ2UgcmVxdWVzdCBjYW5ub3QgYmUgcmVtb3ZlZCBzaW5jZSBubyBvdXRzdGFuZGluZyByZXF1ZXN0cyBleGlzdC4cVG9vTWFueQAGBFUBTW9yZSB0aGFuIGBNQVhfSEFTSF9VUEdSQURFX0JVTEtfQ09VTlRgIGhhc2hlcyB3ZXJlIHJlcXVlc3RlZCB0byBiZSB1cGdyYWRlZCBhdCBvbmNlLhhUb29GZXcABwTkVG9vIGZldyBoYXNoZXMgd2VyZSByZXF1ZXN0ZWQgdG8gYmUgdXBncmFkZWQgKGkuZS4gemVybykuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LqkKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBrQoEUwAABAC1CgEYVmVjPFQ+AACtCgQYT3B0aW9uBARUAbEKAQgQTm9uZQAAABBTb21lBACxCgAAAQAAsQoIQHBhbGxldF9zY2hlZHVsZXIkU2NoZWR1bGVkFBBOYW1lAQgQQ2FsbAHtBCxCbG9ja051bWJlcgE4NFBhbGxldHNPcmlnaW4B1QMkQWNjb3VudElkAQQAFAEgbWF5YmVfaWQ9BwEwT3B0aW9uPE5hbWU+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxs7QQBEENhbGwAAThtYXliZV9wZXJpb2RpY8gBlE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyPj4AARhvcmlnaW7VAwE0UGFsbGV0c09yaWdpbgAAtQoAAAKtCgC5CghAcGFsbGV0X3NjaGVkdWxlcixSZXRyeUNvbmZpZwQYUGVyaW9kATgADAE0dG90YWxfcmV0cmllcwwBCHU4AAEkcmVtYWluaW5nDAEIdTgAARhwZXJpb2Q4ARhQZXJpb2QAAL0KDEBwYWxsZXRfc2NoZWR1bGVyGHBhbGxldBRFcnJvcgQEVAABFEBGYWlsZWRUb1NjaGVkdWxlAAAEZEZhaWxlZCB0byBzY2hlZHVsZSBhIGNhbGwgTm90Rm91bmQAAQR8Q2Fubm90IGZpbmQgdGhlIHNjaGVkdWxlZCBjYWxsLlxUYXJnZXRCbG9ja051bWJlckluUGFzdAACBKRHaXZlbiB0YXJnZXQgYmxvY2sgbnVtYmVyIGlzIGluIHRoZSBwYXN0LkhSZXNjaGVkdWxlTm9DaGFuZ2UAAwTwUmVzY2hlZHVsZSBmYWlsZWQgYmVjYXVzZSBpdCBkb2VzIG5vdCBjaGFuZ2Ugc2NoZWR1bGVkIHRpbWUuFE5hbWVkAAQE0EF0dGVtcHQgdG8gdXNlIGEgbm9uLW5hbWVkIGZ1bmN0aW9uIG9uIGEgbmFtZWQgdGFzay4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuwQoMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFcnJvcgQEVAABBBxPbmdvaW5nAAAE6FRoZSBvcGVyYXRpb24gY2Fubm90IGNvbXBsZXRlIHNpbmNlIHNvbWUgTUJNcyBhcmUgb25nb2luZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuxQoIRHBhbGxldF9taWdyYXRpb25zME1ibUlzT25nb2luZwABDAxZZXMAAAAITm8AAQAUU3R1Y2sAAgAAyQoEGE9wdGlvbgQEVAHNCgEIEE5vbmUAAAAQU29tZQQAzQoAAAEAAM0KCERwYWxsZXRfbWlncmF0aW9ucyxNYm1Qcm9ncmVzcwAAEAFEY3VycmVudF9taWdyYXRpb244AQx1MzIAAUB0b3RhbF9taWdyYXRpb25zOAEMdTMyAAFcY3VycmVudF9taWdyYXRpb25fc3RlcHM4AQx1MzIAAWxjdXJyZW50X21pZ3JhdGlvbl9tYXhfc3RlcHPgASxPcHRpb248dTMyPgAA0QoIRHBhbGxldF9taWdyYXRpb25zJE1ibVN0YXR1cwAADAEcb25nb2luZ8UKATBNYm1Jc09uZ29pbmcAASBwcm9ncmVzc8kKAUxPcHRpb248TWJtUHJvZ3Jlc3M+AAEgcHJlZml4ZXM0ATBWZWM8VmVjPHU4Pj4AANUKDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQB2QoEUwAABADhCgEYVmVjPFQ+AADZCgw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLEJhbGFuY2VMb2NrBBxCYWxhbmNlAVUBAAwBCGlkWQIBOExvY2tJZGVudGlmaWVyAAEYYW1vdW50VQEBHEJhbGFuY2UAARxyZWFzb25z3QoBHFJlYXNvbnMAAN0KDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMcUmVhc29ucwABDAxGZWUAAAAQTWlzYwABAAxBbGwAAgAA4QoAAALZCgDlCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAekKBFMAAAQA7QoBGFZlYzxUPgAA6QoMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxSZXNlcnZlRGF0YQhEUmVzZXJ2ZUlkZW50aWZpZXIBWQIcQmFsYW5jZQFVAQAIAQhpZFkCAURSZXNlcnZlSWRlbnRpZmllcgABGGFtb3VudFUBARxCYWxhbmNlAADtCgAAAukKAPEKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB9QoEUwAABAD5CgEYVmVjPFQ+AAD1ChQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2MgSWRBbW91bnQICElkAVUIHEJhbGFuY2UBVQEACAEIaWRVCAEISWQAARhhbW91bnRVAQEcQmFsYW5jZQAA+QoAAAL1CgD9CgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQELBFMAAAQAEQsBGFZlYzxUPgAAAQsUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjIElkQW1vdW50CAhJZAEFCxxCYWxhbmNlAVUBAAgBCGlkBQsBCElkAAEYYW1vdW50VQEBHEJhbGFuY2UAAAULCHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lTFJ1bnRpbWVGcmVlemVSZWFzb24AAQg8Tm9taW5hdGlvblBvb2xzBAAJCwGUcGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkZyZWV6ZVJlYXNvbgBQABhSZXZpdmUEAA0LAWxwYWxsZXRfcmV2aXZlOjpGcmVlemVSZWFzb24AZAAACQsMXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldDBGcmVlemVSZWFzb24AAQQ4UG9vbE1pbkJhbGFuY2UAAAAADQsMNHBhbGxldF9yZXZpdmUYcGFsbGV0MEZyZWV6ZVJlYXNvbgABBDhQR2FzTWluQmFsYW5jZQAAAAARCwAAAgELABULDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0FEVycm9yCARUAARJAAEwOFZlc3RpbmdCYWxhbmNlAAAEnFZlc3RpbmcgYmFsYW5jZSB0b28gaGlnaCB0byBzZW5kIHZhbHVlLlRMaXF1aWRpdHlSZXN0cmljdGlvbnMAAQTIQWNjb3VudCBsaXF1aWRpdHkgcmVzdHJpY3Rpb25zIHByZXZlbnQgd2l0aGRyYXdhbC5MSW5zdWZmaWNpZW50QmFsYW5jZQACBHhCYWxhbmNlIHRvbyBsb3cgdG8gc2VuZCB2YWx1ZS5IRXhpc3RlbnRpYWxEZXBvc2l0AAME7FZhbHVlIHRvbyBsb3cgdG8gY3JlYXRlIGFjY291bnQgZHVlIHRvIGV4aXN0ZW50aWFsIGRlcG9zaXQuNEV4cGVuZGFiaWxpdHkABASQVHJhbnNmZXIvcGF5bWVudCB3b3VsZCBraWxsIGFjY291bnQuXEV4aXN0aW5nVmVzdGluZ1NjaGVkdWxlAAUEzEEgdmVzdGluZyBzY2hlZHVsZSBhbHJlYWR5IGV4aXN0cyBmb3IgdGhpcyBhY2NvdW50LixEZWFkQWNjb3VudAAGBIxCZW5lZmljaWFyeSBhY2NvdW50IG11c3QgcHJlLWV4aXN0LjxUb29NYW55UmVzZXJ2ZXMABwS4TnVtYmVyIG9mIG5hbWVkIHJlc2VydmVzIGV4Y2VlZCBgTWF4UmVzZXJ2ZXNgLjBUb29NYW55SG9sZHMACAT4TnVtYmVyIG9mIGhvbGRzIGV4Y2VlZCBgVmFyaWFudENvdW50T2Y8VDo6UnVudGltZUhvbGRSZWFzb24+YC44VG9vTWFueUZyZWV6ZXMACQSYTnVtYmVyIG9mIGZyZWV6ZXMgZXhjZWVkIGBNYXhGcmVlemVzYC5MSXNzdWFuY2VEZWFjdGl2YXRlZAAKBAEBVGhlIGlzc3VhbmNlIGNhbm5vdCBiZSBtb2RpZmllZCBzaW5jZSBpdCBpcyBhbHJlYWR5IGRlYWN0aXZhdGVkLiREZWx0YVplcm8ACwRkVGhlIGRlbHRhIGNhbm5vdCBiZSB6ZXJvLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4ZCwhocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQgUmVsZWFzZXMAAQgkVjFBbmNpZW50AAAACFYyAAEAAB0LEDRmcmFtZV9zdXBwb3J0GHRyYWl0cxxzdG9yYWdlGE5vRHJvcAQEVAEhCwAEACELAQRUAAAhCxg0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlJGltYmFsYW5jZSRJbWJhbGFuY2UMBEIBVQEYT25Ecm9wADhPcHBvc2l0ZU9uRHJvcAAABAEYYW1vdW50VQEBBEIAACULDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBaQEEUwAABAApCwEYVmVjPFQ+AAApCwAAAmkBAC0LCDhwYWxsZXRfdmVzdGluZyBSZWxlYXNlcwABCAhWMAAAAAhWMQABAAAxCww4cGFsbGV0X3Zlc3RpbmcYcGFsbGV0FEVycm9yBARUAAEUKE5vdFZlc3RpbmcAAASEVGhlIGFjY291bnQgZ2l2ZW4gaXMgbm90IHZlc3RpbmcuVEF0TWF4VmVzdGluZ1NjaGVkdWxlcwABCCUBVGhlIGFjY291bnQgYWxyZWFkeSBoYXMgYE1heFZlc3RpbmdTY2hlZHVsZXNgIGNvdW50IG9mIHNjaGVkdWxlcyBhbmQgdGh1c1EBY2Fubm90IGFkZCBhbm90aGVyIG9uZS4gQ29uc2lkZXIgbWVyZ2luZyBleGlzdGluZyBzY2hlZHVsZXMgaW4gb3JkZXIgdG8gYWRkIGFub3RoZXIuJEFtb3VudExvdwACBAUBQW1vdW50IGJlaW5nIHRyYW5zZmVycmVkIGlzIHRvbyBsb3cgdG8gY3JlYXRlIGEgdmVzdGluZyBzY2hlZHVsZS5gU2NoZWR1bGVJbmRleE91dE9mQm91bmRzAAME0EFuIGluZGV4IHdhcyBvdXQgb2YgYm91bmRzIG9mIHRoZSB2ZXN0aW5nIHNjaGVkdWxlcy5USW52YWxpZFNjaGVkdWxlUGFyYW1zAAQEDQFGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHNjaGVkdWxlIGJlY2F1c2Ugc29tZSBwYXJhbWV0ZXIgd2FzIGludmFsaWQuBHRFcnJvciBmb3IgdGhlIHZlc3RpbmcgcGFsbGV0LjULEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXMYcGFsbGV0FEVycm9yBARUAAEYYEludmFsaWRFdGhlcmV1bVNpZ25hdHVyZQAABGxJbnZhbGlkIEV0aGVyZXVtIHNpZ25hdHVyZS5AU2lnbmVySGFzTm9DbGFpbQABBHhFdGhlcmV1bSBhZGRyZXNzIGhhcyBubyBjbGFpbS5AU2VuZGVySGFzTm9DbGFpbQACBLBBY2NvdW50IElEIHNlbmRpbmcgdHJhbnNhY3Rpb24gaGFzIG5vIGNsYWltLjBQb3RVbmRlcmZsb3cAAwhJAVRoZXJlJ3Mgbm90IGVub3VnaCBpbiB0aGUgcG90IHRvIHBheSBvdXQgc29tZSB1bnZlc3RlZCBhbW91bnQuIEdlbmVyYWxseSBpbXBsaWVzIGEwbG9naWMgZXJyb3IuQEludmFsaWRTdGF0ZW1lbnQABASQQSBuZWVkZWQgc3RhdGVtZW50IHdhcyBub3QgaW5jbHVkZWQuTFZlc3RlZEJhbGFuY2VFeGlzdHMABQSkVGhlIGFjY291bnQgYWxyZWFkeSBoYXMgYSB2ZXN0ZWQgYmFsYW5jZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuOQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAXQEBGFZlYzxUPgAAPQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFBCwRTAAAEAEULARhWZWM8VD4AAEELDGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldDRDYW5kaWRhdGVJbmZvCCRBY2NvdW50SWQBBBxCYWxhbmNlAVUBAAgBDHdobwQBJEFjY291bnRJZAABHGRlcG9zaXRVAQEcQmFsYW5jZQAARQsAAAJBCwBJCwg0ZnJhbWVfc3VwcG9ydCBQYWxsZXRJZAAABABZAgEcW3U4OyA4XQAATQsMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEVycm9yBARUAAFERFRvb01hbnlDYW5kaWRhdGVzAAAEjFRoZSBwYWxsZXQgaGFzIHRvbyBtYW55IGNhbmRpZGF0ZXMuXFRvb0Zld0VsaWdpYmxlQ29sbGF0b3JzAAEErExlYXZpbmcgd291bGQgcmVzdWx0IGluIHRvbyBmZXcgY2FuZGlkYXRlcy5AQWxyZWFkeUNhbmRpZGF0ZQACBHxBY2NvdW50IGlzIGFscmVhZHkgYSBjYW5kaWRhdGUuME5vdENhbmRpZGF0ZQADBGxBY2NvdW50IGlzIG5vdCBhIGNhbmRpZGF0ZS5QVG9vTWFueUludnVsbmVyYWJsZXMABASEVGhlcmUgYXJlIHRvbyBtYW55IEludnVsbmVyYWJsZXMuTEFscmVhZHlJbnZ1bG5lcmFibGUABQSMQWNjb3VudCBpcyBhbHJlYWR5IGFuIEludnVsbmVyYWJsZS48Tm90SW52dWxuZXJhYmxlAAYEfEFjY291bnQgaXMgbm90IGFuIEludnVsbmVyYWJsZS5cTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQABwScQWNjb3VudCBoYXMgbm8gYXNzb2NpYXRlZCB2YWxpZGF0b3IgSUQuWFZhbGlkYXRvck5vdFJlZ2lzdGVyZWQACASMVmFsaWRhdG9yIElEIGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZC5sSW5zZXJ0VG9DYW5kaWRhdGVMaXN0RmFpbGVkAAkEnENvdWxkIG5vdCBpbnNlcnQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LnRSZW1vdmVGcm9tQ2FuZGlkYXRlTGlzdEZhaWxlZAAKBKRDb3VsZCBub3QgcmVtb3ZlIGZyb20gdGhlIGNhbmRpZGF0ZSBsaXN0LjREZXBvc2l0VG9vTG93AAsE9E5ldyBkZXBvc2l0IGFtb3VudCB3b3VsZCBiZSBiZWxvdyB0aGUgbWluaW11bSBjYW5kaWRhY3kgYm9uZC5kVXBkYXRlQ2FuZGlkYXRlTGlzdEZhaWxlZAAMBJBDb3VsZCBub3QgdXBkYXRlIHRoZSBjYW5kaWRhdGUgbGlzdC5ASW5zdWZmaWNpZW50Qm9uZAANBCkBRGVwb3NpdCBhbW91bnQgaXMgdG9vIGxvdyB0byB0YWtlIHRoZSB0YXJnZXQncyBzbG90IGluIHRoZSBjYW5kaWRhdGUgbGlzdC5QVGFyZ2V0SXNOb3RDYW5kaWRhdGUADgQtAVRoZSB0YXJnZXQgYWNjb3VudCB0byBiZSByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgaXMgbm90IGEgY2FuZGlkYXRlLkBJZGVudGljYWxEZXBvc2l0AA8EDQFUaGUgdXBkYXRlZCBkZXBvc2l0IGFtb3VudCBpcyBlcXVhbCB0byB0aGUgYW1vdW50IGFscmVhZHkgcmVzZXJ2ZWQuQEludmFsaWRVbnJlc2VydmUAEAQ9AUNhbm5vdCBsb3dlciBjYW5kaWRhY3kgYm9uZCB3aGlsZSBvY2N1cHlpbmcgYSBmdXR1cmUgY29sbGF0b3Igc2xvdCBpbiB0aGUgbGlzdC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuUQsAAAJVCwBVCwAABAgEmQEAWQsAAAJdCwBdCwAABAg4YQsAYQsMKHNwX3N0YWtpbmccb2ZmZW5jZTxPZmZlbmNlU2V2ZXJpdHkAAAQAHQUBHFBlcmJpbGwAAGULAAAECGkLGABpCwwcc3BfY29yZRhjcnlwdG8kS2V5VHlwZUlkAAAEAHABHFt1ODsgNF0AAG0LDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXJyb3IEBFQAARQwSW52YWxpZFByb29mAAAEYEludmFsaWQgb3duZXJzaGlwIHByb29mLlxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAABBJxObyBhc3NvY2lhdGVkIHZhbGlkYXRvciBJRCBmb3IgYWNjb3VudC40RHVwbGljYXRlZEtleQACBGRSZWdpc3RlcmVkIGR1cGxpY2F0ZSBrZXkuGE5vS2V5cwADBKRObyBrZXlzIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBhY2NvdW50LiROb0FjY291bnQABAQZAUtleSBzZXR0aW5nIGFjY291bnQgaXMgbm90IGxpdmUsIHNvIGl0J3MgaW1wb3NzaWJsZSB0byBhc3NvY2lhdGUga2V5cy4EdEVycm9yIGZvciB0aGUgc2Vzc2lvbiBwYWxsZXQucQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGdAQRTAAAEAHULARhWZWM8VD4AAHULAAACnQEAeQsISHNwX2NvbnNlbnN1c19zbG90cxBTbG90AAAEACgBDHU2NAAAfQsAAAQIeQs4AIELDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAGcBFMAAAQAhQsBLEJUcmVlU2V0PFQ+AACFCwQgQlRyZWVTZXQEBFQBnAAEAH0KAAAAiQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGNCwRTAAAEAJkLARhWZWM8VD4AAI0LCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlWE91dGJvdW5kQ2hhbm5lbERldGFpbHMAABgBJHJlY2lwaWVudJwBGFBhcmFJZAABFHN0YXRlkQsBNE91dGJvdW5kU3RhdGUAATRzaWduYWxzX2V4aXN0WQEBEGJvb2wAASxmaXJzdF9pbmRleNEDAQx1MTYAAShsYXN0X2luZGV40QMBDHUxNgABFGZsYWdzlQsBUE91dGJvdW5kQ2hhbm5lbEZsYWdzAACRCwhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTRPdXRib3VuZFN0YXRlAAEICE9rAAAAJFN1c3BlbmRlZAABAACVCwhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZVBPdXRib3VuZENoYW5uZWxGbGFncwAABAEQYml0czgBDHUzMgAAmQsAAAKNCwCdCwAABAic0QMAoQsMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAClCwhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTxRdWV1ZUNvbmZpZ0RhdGEAAAwBRHN1c3BlbmRfdGhyZXNob2xkOAEMdTMyAAE4ZHJvcF90aHJlc2hvbGQ4AQx1MzIAAUByZXN1bWVfdGhyZXNob2xkOAEMdTMyAACpCwxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQURXJyb3IEBFQAARQ4QmFkUXVldWVDb25maWcAAAQRAVNldHRpbmcgdGhlIHF1ZXVlIGNvbmZpZyBmYWlsZWQgc2luY2Ugb25lIG9mIGl0cyB2YWx1ZXMgd2FzIGludmFsaWQuQEFscmVhZHlTdXNwZW5kZWQAAQSMVGhlIGV4ZWN1dGlvbiBpcyBhbHJlYWR5IHN1c3BlbmRlZC44QWxyZWFkeVJlc3VtZWQAAgSEVGhlIGV4ZWN1dGlvbiBpcyBhbHJlYWR5IHJlc3VtZWQudFRvb01hbnlBY3RpdmVPdXRib3VuZENoYW5uZWxzAAMEsFRoZXJlIGFyZSB0b28gbWFueSBhY3RpdmUgb3V0Ym91bmQgY2hhbm5lbHMuGFRvb0JpZwAEBFxUaGUgbWVzc2FnZSBpcyB0b28gYmlnLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6tCwwocGFsbGV0X3hjbRhwYWxsZXQsUXVlcnlTdGF0dXMELEJsb2NrTnVtYmVyATgBDBxQZW5kaW5nEAEkcmVzcG9uZGVyqQEBRFZlcnNpb25lZExvY2F0aW9uAAFMbWF5YmVfbWF0Y2hfcXVlcmllcrELAWRPcHRpb248VmVyc2lvbmVkTG9jYXRpb24+AAEwbWF5YmVfbm90aWZ5tQsBQE9wdGlvbjwodTgsIHU4KT4AARx0aW1lb3V0OAEsQmxvY2tOdW1iZXIAAAA8VmVyc2lvbk5vdGlmaWVyCAEYb3JpZ2luqQEBRFZlcnNpb25lZExvY2F0aW9uAAEkaXNfYWN0aXZlWQEBEGJvb2wAAQAUUmVhZHkIASByZXNwb25zZb0LAURWZXJzaW9uZWRSZXNwb25zZQABCGF0OAEsQmxvY2tOdW1iZXIAAgAAsQsEGE9wdGlvbgQEVAGpAQEIEE5vbmUAAAAQU29tZQQAqQEAAAEAALULBBhPcHRpb24EBFQBuQsBCBBOb25lAAAAEFNvbWUEALkLAAABAAC5CwAABAgMDAC9CwgMeGNtRFZlcnNpb25lZFJlc3BvbnNlAAEMCFYzBABhAgEwdjM6OlJlc3BvbnNlAAMACFY0BADNAgEwdjQ6OlJlc3BvbnNlAAQACFY1BAAZAwEwdjU6OlJlc3BvbnNlAAUAAMELAAAECDipAQDFCwAABAwoEQE4AMkLDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBzQsEUwAABADRCwEYVmVjPFQ+AADNCwAABAipATgA0QsAAALNCwDVCwwocGFsbGV0X3hjbRhwYWxsZXRUVmVyc2lvbk1pZ3JhdGlvblN0YWdlAAEQXE1pZ3JhdGVTdXBwb3J0ZWRWZXJzaW9uAAAAXE1pZ3JhdGVWZXJzaW9uTm90aWZpZXJzAAEAUE5vdGlmeUN1cnJlbnRUYXJnZXRzBABJAQE8T3B0aW9uPFZlYzx1OD4+AAIAaE1pZ3JhdGVBbmROb3RpZnlPbGRUYXJnZXRzAAMAANkLAAAEDDgEoQMA3QsMKHBhbGxldF94Y20YcGFsbGV0aFJlbW90ZUxvY2tlZEZ1bmdpYmxlUmVjb3JkCEhDb25zdW1lcklkZW50aWZpZXIBEDBNYXhDb25zdW1lcnMAABABGGFtb3VudFUBARB1MTI4AAEUb3duZXKpAQFEVmVyc2lvbmVkTG9jYXRpb24AARhsb2NrZXKpAQFEVmVyc2lvbmVkTG9jYXRpb24AASRjb25zdW1lcnPhCwHQQm91bmRlZFZlYzwoQ29uc3VtZXJJZGVudGlmaWVyLCB1MTI4KSwgTWF4Q29uc3VtZXJzPgAA4QsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHlCwRTAAAEAOkLARhWZWM8VD4AAOULAAAECBBVAQDpCwAAAuULAO0LDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB8QsEUwAABAD1CwEYVmVjPFQ+AADxCwAABAhVAakBAPULAAAC8QsA+QsIKHBhbGxldF94Y21YQXV0aG9yaXplZEFsaWFzZXNFbnRyeQgYVGlja2V0Af0LDE1BWAEBDAAIASBhbGlhc2VycwUMAXhCb3VuZGVkVmVjPE9yaWdpbkFsaWFzZXIsIE1BWD4AARh0aWNrZXT9CwEYVGlja2V0AAD9CxQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlREhvbGRDb25zaWRlcmF0aW9uFARBAARGAARSAAREAAhGcAAABABVAQEoRjo6QmFsYW5jZQAAAQwMKHBhbGxldF94Y20YcGFsbGV0UE1heEF1dGhvcml6ZWRBbGlhc2VzAAAAAAUMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCQwEUwAABAANDAEYVmVjPFQ+AAAJDAxAeGNtX3J1bnRpbWVfYXBpc0hhdXRob3JpemVkX2FsaWFzZXM0T3JpZ2luQWxpYXNlcgAACAEgbG9jYXRpb26pAQFEVmVyc2lvbmVkTG9jYXRpb24AARhleHBpcnn8ASxPcHRpb248dTY0PgAADQwAAAIJDAARDAwocGFsbGV0X3hjbRhwYWxsZXQURXJyb3IEBFQAAXAsVW5yZWFjaGFibGUAAAhdAVRoZSBkZXNpcmVkIGRlc3RpbmF0aW9uIHdhcyB1bnJlYWNoYWJsZSwgZ2VuZXJhbGx5IGJlY2F1c2UgdGhlcmUgaXMgYSBubyB3YXkgb2Ygcm91dGluZxh0byBpdC4sU2VuZEZhaWx1cmUAAQhBAVRoZXJlIHdhcyBzb21lIG90aGVyIGlzc3VlIChpLmUuIG5vdCB0byBkbyB3aXRoIHJvdXRpbmcpIGluIHNlbmRpbmcgdGhlIG1lc3NhZ2UuyFBlcmhhcHMgYSBsYWNrIG9mIHNwYWNlIGZvciBidWZmZXJpbmcgdGhlIG1lc3NhZ2UuIEZpbHRlcmVkAAIEnFRoZSBtZXNzYWdlIGV4ZWN1dGlvbiBmYWlscyB0aGUgZmlsdGVyLkhVbndlaWdoYWJsZU1lc3NhZ2UAAwS0VGhlIG1lc3NhZ2UncyB3ZWlnaHQgY291bGQgbm90IGJlIGRldGVybWluZWQuYERlc3RpbmF0aW9uTm90SW52ZXJ0aWJsZQAEBNxUaGUgZGVzdGluYXRpb24gYExvY2F0aW9uYCBwcm92aWRlZCBjYW5ub3QgYmUgaW52ZXJ0ZWQuFEVtcHR5AAUEgFRoZSBhc3NldHMgdG8gYmUgc2VudCBhcmUgZW1wdHkuOENhbm5vdFJlYW5jaG9yAAYENQFDb3VsZCBub3QgcmUtYW5jaG9yIHRoZSBhc3NldHMgdG8gZGVjbGFyZSB0aGUgZmVlcyBmb3IgdGhlIGRlc3RpbmF0aW9uIGNoYWluLjRUb29NYW55QXNzZXRzAAcExFRvbyBtYW55IGFzc2V0cyBoYXZlIGJlZW4gYXR0ZW1wdGVkIGZvciB0cmFuc2Zlci40SW52YWxpZE9yaWdpbgAIBHhPcmlnaW4gaXMgaW52YWxpZCBmb3Igc2VuZGluZy4oQmFkVmVyc2lvbgAJBCEBVGhlIHZlcnNpb24gb2YgdGhlIGBWZXJzaW9uZWRgIHZhbHVlIHVzZWQgaXMgbm90IGFibGUgdG8gYmUgaW50ZXJwcmV0ZWQuLEJhZExvY2F0aW9uAAoIQQFUaGUgZ2l2ZW4gbG9jYXRpb24gY291bGQgbm90IGJlIHVzZWQgKGUuZy4gYmVjYXVzZSBpdCBjYW5ub3QgYmUgZXhwcmVzc2VkIGluIHRoZWBkZXNpcmVkIHZlcnNpb24gb2YgWENNKS44Tm9TdWJzY3JpcHRpb24ACwS8VGhlIHJlZmVyZW5jZWQgc3Vic2NyaXB0aW9uIGNvdWxkIG5vdCBiZSBmb3VuZC5EQWxyZWFkeVN1YnNjcmliZWQADAQRAVRoZSBsb2NhdGlvbiBpcyBpbnZhbGlkIHNpbmNlIGl0IGFscmVhZHkgaGFzIGEgc3Vic2NyaXB0aW9uIGZyb20gdXMuWENhbm5vdENoZWNrT3V0VGVsZXBvcnQADQQpAUNvdWxkIG5vdCBjaGVjay1vdXQgdGhlIGFzc2V0cyBmb3IgdGVsZXBvcnRhdGlvbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4uKExvd0JhbGFuY2UADgRBAVRoZSBvd25lciBkb2VzIG5vdCBvd24gKGFsbCkgb2YgdGhlIGFzc2V0IHRoYXQgdGhleSB3aXNoIHRvIGRvIHRoZSBvcGVyYXRpb24gb24uMFRvb01hbnlMb2NrcwAPBMBUaGUgYXNzZXQgb3duZXIgaGFzIHRvbyBtYW55IGxvY2tzIG9uIHRoZSBhc3NldC5MQWNjb3VudE5vdFNvdmVyZWlnbgAQBDEBVGhlIGdpdmVuIGFjY291bnQgaXMgbm90IGFuIGlkZW50aWZpYWJsZSBzb3ZlcmVpZ24gYWNjb3VudCBmb3IgYW55IGxvY2F0aW9uLihGZWVzTm90TWV0ABEEKQFUaGUgb3BlcmF0aW9uIHJlcXVpcmVkIGZlZXMgdG8gYmUgcGFpZCB3aGljaCB0aGUgaW5pdGlhdG9yIGNvdWxkIG5vdCBtZWV0LjBMb2NrTm90Rm91bmQAEgT0QSByZW1vdGUgbG9jayB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGRhdGEgY291bGQgbm90IGJlIGZvdW5kLhRJblVzZQATBEkBVGhlIHVubG9jayBvcGVyYXRpb24gY2Fubm90IHN1Y2NlZWQgYmVjYXVzZSB0aGVyZSBhcmUgc3RpbGwgY29uc3VtZXJzIG9mIHRoZSBsb2NrLmhJbnZhbGlkQXNzZXRVbmtub3duUmVzZXJ2ZQAVBPBJbnZhbGlkIGFzc2V0LCByZXNlcnZlIGNoYWluIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIGZvciBpdC54SW52YWxpZEFzc2V0VW5zdXBwb3J0ZWRSZXNlcnZlABYERQFJbnZhbGlkIGFzc2V0LCBkbyBub3Qgc3VwcG9ydCByZW1vdGUgYXNzZXQgcmVzZXJ2ZXMgd2l0aCBkaWZmZXJlbnQgZmVlcyByZXNlcnZlcy48VG9vTWFueVJlc2VydmVzABcESQFUb28gbWFueSBhc3NldHMgd2l0aCBkaWZmZXJlbnQgcmVzZXJ2ZSBsb2NhdGlvbnMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuYExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZQAYBHxMb2NhbCBYQ00gZXhlY3V0aW9uIGluY29tcGxldGUuYFRvb01hbnlBdXRob3JpemVkQWxpYXNlcwAZBLhUb28gbWFueSBsb2NhdGlvbnMgYXV0aG9yaXplZCB0byBhbGlhcyBvcmlnaW4uNEV4cGlyZXNJblBhc3QAGgSMRXhwaXJ5IGJsb2NrIG51bWJlciBpcyBpbiB0aGUgcGFzdC40QWxpYXNOb3RGb3VuZAAbBNBUaGUgYWxpYXMgdG8gcmVtb3ZlIGF1dGhvcml6YXRpb24gZm9yIHdhcyBub3QgZm91bmQuhExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZVdpdGhFcnJvcggBFGluZGV4DAFASW5zdHJ1Y3Rpb25JbmRleAABFGVycm9yFQwBOEV4ZWN1dGlvbkVycm9yABwINQFMb2NhbCBYQ00gZXhlY3V0aW9uIGluY29tcGxldGUgd2l0aCB0aGUgYWN0dWFsIFhDTSBlcnJvciBhbmQgdGhlIGluZGV4IG9mIHRoZYhpbnN0cnVjdGlvbiB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LhUMDChwYWxsZXRfeGNtGGVycm9yczhFeGVjdXRpb25FcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIANFRvb01hbnlBc3NldHMAIwBMVW5oYW5kbGVkWGNtVmVyc2lvbgAkAEhXZWlnaHRMaW1pdFJlYWNoZWQAJQAcQmFycmllcgAmAExXZWlnaHROb3RDb21wdXRhYmxlACcAREV4Y2VlZHNTdGFja0xpbWl0ACgAABkMCGBicF94Y21fYnJpZGdlX2h1Yl9yb3V0ZXIsQnJpZGdlU3RhdGUAAAgBTGRlbGl2ZXJ5X2ZlZV9mYWN0b3INBQEkRml4ZWRVMTI4AAEwaXNfY29uZ2VzdGVkWQEBEGJvb2wAAB0MCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZSRCb29rU3RhdGUENE1lc3NhZ2VPcmlnaW4BsQMAGAEUYmVnaW44ASRQYWdlSW5kZXgAAQxlbmQ4ASRQYWdlSW5kZXgAARRjb3VudDgBJFBhZ2VJbmRleAABQHJlYWR5X25laWdoYm91cnMhDAGET3B0aW9uPE5laWdoYm91cnM8TWVzc2FnZU9yaWdpbj4+AAE0bWVzc2FnZV9jb3VudCgBDHU2NAABEHNpemUoAQx1NjQAACEMBBhPcHRpb24EBFQBJQwBCBBOb25lAAAAEFNvbWUEACUMAAABAAAlDAhQcGFsbGV0X21lc3NhZ2VfcXVldWUoTmVpZ2hib3VycwQ0TWVzc2FnZU9yaWdpbgGxAwAIARBwcmV2sQMBNE1lc3NhZ2VPcmlnaW4AARBuZXh0sQMBNE1lc3NhZ2VPcmlnaW4AACkMAAAECLEDOAAtDAhQcGFsbGV0X21lc3NhZ2VfcXVldWUQUGFnZQgQU2l6ZQE4IEhlYXBTaXplAAAYASRyZW1haW5pbmc4ARBTaXplAAE4cmVtYWluaW5nX3NpemU4ARBTaXplAAEsZmlyc3RfaW5kZXg4ARBTaXplAAEUZmlyc3Q4ARBTaXplAAEQbGFzdDgBEFNpemUAARBoZWFwMQwBnEJvdW5kZWRWZWM8dTgsIEludG9VMzI8SGVhcFNpemUsIFNpemU+PgAAMQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAA1DAxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0FEVycm9yBARUAAEkLE5vdFJlYXBhYmxlAAAISQFQYWdlIGlzIG5vdCByZWFwYWJsZSBiZWNhdXNlIGl0IGhhcyBpdGVtcyByZW1haW5pbmcgdG8gYmUgcHJvY2Vzc2VkIGFuZCBpcyBub3Qgb2xkHGVub3VnaC4YTm9QYWdlAAEEhFBhZ2UgdG8gYmUgcmVhcGVkIGRvZXMgbm90IGV4aXN0LiROb01lc3NhZ2UAAgSoVGhlIHJlZmVyZW5jZWQgbWVzc2FnZSBjb3VsZCBub3QgYmUgZm91bmQuQEFscmVhZHlQcm9jZXNzZWQAAwQBAVRoZSBtZXNzYWdlIHdhcyBhbHJlYWR5IHByb2Nlc3NlZCBhbmQgY2Fubm90IGJlIHByb2Nlc3NlZCBhZ2Fpbi4YUXVldWVkAAQErFRoZSBtZXNzYWdlIGlzIHF1ZXVlZCBmb3IgZnV0dXJlIGV4ZWN1dGlvbi5ISW5zdWZmaWNpZW50V2VpZ2h0AAUEGQFUaGVyZSBpcyB0ZW1wb3JhcmlseSBub3QgZW5vdWdoIHdlaWdodCB0byBjb250aW51ZSBzZXJ2aWNpbmcgbWVzc2FnZXMuYFRlbXBvcmFyaWx5VW5wcm9jZXNzYWJsZQAGEKhUaGlzIG1lc3NhZ2UgaXMgdGVtcG9yYXJpbHkgdW5wcm9jZXNzYWJsZS4AWQFTdWNoIGVycm9ycyBhcmUgZXhwZWN0ZWQsIGJ1dCBub3QgZ3VhcmFudGVlZCwgdG8gcmVzb2x2ZSB0aGVtc2VsdmVzIGV2ZW50dWFsbHkgdGhyb3VnaCRyZXRyeWluZy4sUXVldWVQYXVzZWQABwzsVGhlIHF1ZXVlIGlzIHBhdXNlZCBhbmQgbm8gbWVzc2FnZSBjYW4gYmUgZXhlY3V0ZWQgZnJvbSBpdC4AHQFUaGlzIGNhbiBjaGFuZ2UgYXQgYW55IHRpbWUgYW5kIG1heSByZXNvbHZlIGluIHRoZSBmdXR1cmUgYnkgcmUtdHJ5aW5nLkxSZWN1cnNpdmVEaXNhbGxvd2VkAAgEMQFBbm90aGVyIGNhbGwgaXMgaW4gcHJvZ3Jlc3MgYW5kIG5lZWRzIHRvIGZpbmlzaCBiZWZvcmUgdGhpcyBjYWxsIGNhbiBoYXBwZW4uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LjkMDIRzbm93YnJpZGdlX3BhbGxldF9zeXN0ZW1fZnJvbnRlbmQYcGFsbGV0FEVycm9yBARUAAE0aFVuc3VwcG9ydGVkTG9jYXRpb25WZXJzaW9uAAAEiENvbnZlcnQgdmVyc2lvbmVkIGxvY2F0aW9uIGZhaWx1cmVESW52YWxpZEFzc2V0T3duZXIAAQQZAUNoZWNrIGxvY2F0aW9uIGZhaWx1cmUsIHNob3VsZCBzdGFydCBmcm9tIHRoZSBkaXNwYXRjaCBvcmlnaW4gYXMgb3duZXIsU2VuZEZhaWx1cmUAAgRgU2VuZCB4Y20gbWVzc2FnZSBmYWlsdXJlKEZlZXNOb3RNZXQAAwRoV2l0aGRyYXcgZmVlIGFzc2V0IGZhaWx1cmVgTG9jYXRpb25Db252ZXJzaW9uRmFpbGVkAAQEmENvbnZlcnQgdG8gcmVhbmNob3JlZCBsb2NhdGlvbiBmYWlsdXJlGEhhbHRlZAAFBGBNZXNzYWdlIGV4cG9ydCBpcyBoYWx0ZWQsVW5yZWFjaGFibGUABghdAVRoZSBkZXNpcmVkIGRlc3RpbmF0aW9uIHdhcyB1bnJlYWNoYWJsZSwgZ2VuZXJhbGx5IGJlY2F1c2UgdGhlcmUgaXMgYSBubyB3YXkgb2Ygcm91dGluZxh0byBpdC5AVW5zdXBwb3J0ZWRBc3NldAAHBLhUaGUgYXNzZXQgcHJvdmlkZWQgZm9yIHRoZSB0aXAgaXMgdW5zdXBwb3J0ZWQuNFdpdGhkcmF3RXJyb3IACARkVW5hYmxlIHRvIHdpdGhkcmF3IGFzc2V0LjhJbnZhbGlkQWNjb3VudAAJBLRBY2NvdW50IGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBsb2NhdGlvbi4kU3dhcEVycm9yAAoEyFByb3ZpZGVkIHRpcCBhc3NldCBjb3VsZCBub3QgYmUgc3dhcHBlZCBmb3IgZXRoZXIuJEJ1cm5FcnJvcgALBGhFdGhlciBjb3VsZCBub3QgYmUgYnVybmVkLjRUaXBBbW91bnRaZXJvAAwEZFRoZSB0aXAgcHJvdmlkZWQgaXMgemVyby4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuPQwMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFcnJvcgQEVAABBDBUb29NYW55Q2FsbHMAAARcVG9vIG1hbnkgY2FsbHMgYmF0Y2hlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuQQwAAAQIBAgARQwIPHBhbGxldF9tdWx0aXNpZyBNdWx0aXNpZxAsQmxvY2tOdW1iZXIBOBxCYWxhbmNlAVUBJEFjY291bnRJZAEEME1heEFwcHJvdmFscwAAEAEQd2hlbhUEAVhUaW1lcG9pbnQ8QmxvY2tOdW1iZXI+AAEcZGVwb3NpdFUBARxCYWxhbmNlAAEkZGVwb3NpdG9yBAEkQWNjb3VudElkAAEkYXBwcm92YWxzSQwBjEJvdW5kZWRWZWM8QWNjb3VudElkLCBNYXhBcHByb3ZhbHM+AABJDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABABdAQEYVmVjPFQ+AABNDAw8cGFsbGV0X211bHRpc2lnGHBhbGxldBRFcnJvcgQEVAABOEBNaW5pbXVtVGhyZXNob2xkAAAEfFRocmVzaG9sZCBtdXN0IGJlIDIgb3IgZ3JlYXRlci48QWxyZWFkeUFwcHJvdmVkAAEErENhbGwgaXMgYWxyZWFkeSBhcHByb3ZlZCBieSB0aGlzIHNpZ25hdG9yeS5ETm9BcHByb3ZhbHNOZWVkZWQAAgScQ2FsbCBkb2Vzbid0IG5lZWQgYW55IChtb3JlKSBhcHByb3ZhbHMuRFRvb0Zld1NpZ25hdG9yaWVzAAMEqFRoZXJlIGFyZSB0b28gZmV3IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LkhUb29NYW55U2lnbmF0b3JpZXMABASsVGhlcmUgYXJlIHRvbyBtYW55IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LlRTaWduYXRvcmllc091dE9mT3JkZXIABQQNAVRoZSBzaWduYXRvcmllcyB3ZXJlIHByb3ZpZGVkIG91dCBvZiBvcmRlcjsgdGhleSBzaG91bGQgYmUgb3JkZXJlZC5MU2VuZGVySW5TaWduYXRvcmllcwAGBA0BVGhlIHNlbmRlciB3YXMgY29udGFpbmVkIGluIHRoZSBvdGhlciBzaWduYXRvcmllczsgaXQgc2hvdWxkbid0IGJlLiBOb3RGb3VuZAAHBKBNdWx0aXNpZyBvcGVyYXRpb24gbm90IGZvdW5kIGluIHN0b3JhZ2UuIE5vdE93bmVyAAgIUQFPbmx5IHRoZSBhY2NvdW50IHRoYXQgb3JpZ2luYWxseSBjcmVhdGVkIHRoZSBtdWx0aXNpZyBpcyBhYmxlIHRvIGNhbmNlbCBpdCBvciB1cGRhdGU0aXRzIGRlcG9zaXRzLixOb1RpbWVwb2ludAAJBB0BTm8gdGltZXBvaW50IHdhcyBnaXZlbiwgeWV0IHRoZSBtdWx0aXNpZyBvcGVyYXRpb24gaXMgYWxyZWFkeSB1bmRlcndheS44V3JvbmdUaW1lcG9pbnQACgQtAUEgZGlmZmVyZW50IHRpbWVwb2ludCB3YXMgZ2l2ZW4gdG8gdGhlIG11bHRpc2lnIG9wZXJhdGlvbiB0aGF0IGlzIHVuZGVyd2F5LkxVbmV4cGVjdGVkVGltZXBvaW50AAsE9EEgdGltZXBvaW50IHdhcyBnaXZlbiwgeWV0IG5vIG11bHRpc2lnIG9wZXJhdGlvbiBpcyB1bmRlcndheS48TWF4V2VpZ2h0VG9vTG93AAwE0FRoZSBtYXhpbXVtIHdlaWdodCBpbmZvcm1hdGlvbiBwcm92aWRlZCB3YXMgdG9vIGxvdy40QWxyZWFkeVN0b3JlZAANBKBUaGUgZGF0YSB0byBiZSBzdG9yZWQgaXMgYWxyZWFkeSBzdG9yZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LlEMAAAECFUMVQEAVQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFZDARTAAAEAF0MARhWZWM8VD4AAFkMCDBwYWxsZXRfcHJveHk8UHJveHlEZWZpbml0aW9uDCRBY2NvdW50SWQBBCRQcm94eVR5cGUBIQQsQmxvY2tOdW1iZXIBOAAMASBkZWxlZ2F0ZQQBJEFjY291bnRJZAABKHByb3h5X3R5cGUhBAEkUHJveHlUeXBlAAEUZGVsYXk4ASxCbG9ja051bWJlcgAAXQwAAAJZDABhDAAABAhlDFUBAGUMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBaQwEUwAABABtDAEYVmVjPFQ+AABpDAgwcGFsbGV0X3Byb3h5MEFubm91bmNlbWVudAwkQWNjb3VudElkAQQQSGFzaAE8LEJsb2NrTnVtYmVyATgADAEQcmVhbAQBJEFjY291bnRJZAABJGNhbGxfaGFzaDwBEEhhc2gAARhoZWlnaHQ4ASxCbG9ja051bWJlcgAAbQwAAAJpDABxDAwwcGFsbGV0X3Byb3h5GHBhbGxldBRFcnJvcgQEVAABIBxUb29NYW55AAAEIQFUaGVyZSBhcmUgdG9vIG1hbnkgcHJveGllcyByZWdpc3RlcmVkIG9yIHRvbyBtYW55IGFubm91bmNlbWVudHMgcGVuZGluZy4gTm90Rm91bmQAAQR0UHJveHkgcmVnaXN0cmF0aW9uIG5vdCBmb3VuZC4gTm90UHJveHkAAgTMU2VuZGVyIGlzIG5vdCBhIHByb3h5IG9mIHRoZSBhY2NvdW50IHRvIGJlIHByb3hpZWQuLFVucHJveHlhYmxlAAMEIQFBIGNhbGwgd2hpY2ggaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIHByb3h5IHR5cGUncyBmaWx0ZXIgd2FzIGF0dGVtcHRlZC4kRHVwbGljYXRlAAQEbEFjY291bnQgaXMgYWxyZWFkeSBhIHByb3h5LjBOb1Blcm1pc3Npb24ABQQVAUNhbGwgbWF5IG5vdCBiZSBtYWRlIGJ5IHByb3h5IGJlY2F1c2UgaXQgbWF5IGVzY2FsYXRlIGl0cyBwcml2aWxlZ2VzLixVbmFubm91bmNlZAAGBNBBbm5vdW5jZW1lbnQsIGlmIG1hZGUgYXQgYWxsLCB3YXMgbWFkZSB0b28gcmVjZW50bHkuLE5vU2VsZlByb3h5AAcEZENhbm5vdCBhZGQgc2VsZiBhcyBwcm94eS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQudQwAAAQMBFUBWQEAeQwMOHBhbGxldF9pbmRpY2VzGHBhbGxldBRFcnJvcgQEVAABFCxOb3RBc3NpZ25lZAAABIxUaGUgaW5kZXggd2FzIG5vdCBhbHJlYWR5IGFzc2lnbmVkLiBOb3RPd25lcgABBKRUaGUgaW5kZXggaXMgYXNzaWduZWQgdG8gYW5vdGhlciBhY2NvdW50LhRJblVzZQACBHBUaGUgaW5kZXggd2FzIG5vdCBhdmFpbGFibGUuLE5vdFRyYW5zZmVyAAMEyFRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFjY291bnRzIGFyZSBpZGVudGljYWwuJFBlcm1hbmVudAAEBNBUaGUgaW5kZXggaXMgcGVybWFuZW50IGFuZCBtYXkgbm90IGJlIGZyZWVkL2NoYW5nZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Ln0MDDRwYWxsZXRfYXNzZXRzFHR5cGVzMEFzc2V0RGV0YWlscwwcQmFsYW5jZQFVASRBY2NvdW50SWQBBDhEZXBvc2l0QmFsYW5jZQFVAQAwARRvd25lcgQBJEFjY291bnRJZAABGGlzc3VlcgQBJEFjY291bnRJZAABFGFkbWluBAEkQWNjb3VudElkAAEcZnJlZXplcgQBJEFjY291bnRJZAABGHN1cHBseVUBARxCYWxhbmNlAAEcZGVwb3NpdFUBAThEZXBvc2l0QmFsYW5jZQABLG1pbl9iYWxhbmNlVQEBHEJhbGFuY2UAATRpc19zdWZmaWNpZW50WQEBEGJvb2wAASBhY2NvdW50czgBDHUzMgABLHN1ZmZpY2llbnRzOAEMdTMyAAEkYXBwcm92YWxzOAEMdTMyAAEYc3RhdHVzgQwBLEFzc2V0U3RhdHVzAACBDAw0cGFsbGV0X2Fzc2V0cxR0eXBlcyxBc3NldFN0YXR1cwABDBBMaXZlAAAAGEZyb3plbgABAChEZXN0cm95aW5nAAIAAIUMAAAECDgEAIkMDDRwYWxsZXRfYXNzZXRzFHR5cGVzMEFzc2V0QWNjb3VudBAcQmFsYW5jZQFVAThEZXBvc2l0QmFsYW5jZQFVARRFeHRyYQEQJEFjY291bnRJZAEEABABHGJhbGFuY2VVAQEcQmFsYW5jZQABGHN0YXR1c40MATRBY2NvdW50U3RhdHVzAAEYcmVhc29ukQwBqEV4aXN0ZW5jZVJlYXNvbjxEZXBvc2l0QmFsYW5jZSwgQWNjb3VudElkPgABFGV4dHJhEAEURXh0cmEAAI0MDDRwYWxsZXRfYXNzZXRzFHR5cGVzNEFjY291bnRTdGF0dXMAAQwYTGlxdWlkAAAAGEZyb3plbgABABxCbG9ja2VkAAIAAJEMDDRwYWxsZXRfYXNzZXRzFHR5cGVzPEV4aXN0ZW5jZVJlYXNvbggcQmFsYW5jZQFVASRBY2NvdW50SWQBBAEUIENvbnN1bWVyAAAAKFN1ZmZpY2llbnQAAQAsRGVwb3NpdEhlbGQEAFUBARxCYWxhbmNlAAIAPERlcG9zaXRSZWZ1bmRlZAADACxEZXBvc2l0RnJvbQgABAEkQWNjb3VudElkAABVAQEcQmFsYW5jZQAEAACVDAAABAw4BAQAmQwMNHBhbGxldF9hc3NldHMUdHlwZXMgQXBwcm92YWwIHEJhbGFuY2UBVQE4RGVwb3NpdEJhbGFuY2UBVQEACAEYYW1vdW50VQEBHEJhbGFuY2UAARxkZXBvc2l0VQEBOERlcG9zaXRCYWxhbmNlAACdDAw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBc3NldE1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQFVATRCb3VuZGVkU3RyaW5nAaEMABQBHGRlcG9zaXRVAQE4RGVwb3NpdEJhbGFuY2UAARBuYW1loQwBNEJvdW5kZWRTdHJpbmcAARhzeW1ib2yhDAE0Qm91bmRlZFN0cmluZwABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5ZAQEQYm9vbAAAoQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAClDAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXJyb3IIBFQABEkAAWAoQmFsYW5jZUxvdwAABBUBQWNjb3VudCBiYWxhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0cmFuc2ZlciBhbW91bnQuJE5vQWNjb3VudAABBJBUaGUgYWNjb3VudCB0byBhbHRlciBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4cVW5rbm93bgADBHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi4YRnJvemVuAAQEdFRoZSBvcmlnaW4gYWNjb3VudCBpcyBmcm96ZW4uFEluVXNlAAUEeFRoZSBhc3NldCBJRCBpcyBhbHJlYWR5IHRha2VuLihCYWRXaXRuZXNzAAYEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLjhNaW5CYWxhbmNlWmVybwAHBIxNaW5pbXVtIGJhbGFuY2Ugc2hvdWxkIGJlIG5vbi16ZXJvLkxVbmF2YWlsYWJsZUNvbnN1bWVyAAgMWQFVbmFibGUgdG8gaW5jcmVtZW50IHRoZSBjb25zdW1lciByZWZlcmVuY2UgY291bnRlcnMgb24gdGhlIGFjY291bnQuIEVpdGhlciBubyBwcm92aWRlck0BcmVmZXJlbmNlIGV4aXN0cyB0byBhbGxvdyBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgYSBub24tc2VsZi1zdWZmaWNpZW50IGFzc2V0LCBvciBvbmXwZmV3ZXIgdGhlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGhhcyBiZWVuIHJlYWNoZWQuLEJhZE1ldGFkYXRhAAkEXEludmFsaWQgbWV0YWRhdGEgZ2l2ZW4uKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLiBXb3VsZERpZQALBDUBVGhlIHNvdXJjZSBhY2NvdW50IHdvdWxkIG5vdCBzdXJ2aXZlIHRoZSB0cmFuc2ZlciBhbmQgaXQgbmVlZHMgdG8gc3RheSBhbGl2ZS40QWxyZWFkeUV4aXN0cwAMBIRUaGUgYXNzZXQtYWNjb3VudCBhbHJlYWR5IGV4aXN0cy4kTm9EZXBvc2l0AA0E1FRoZSBhc3NldC1hY2NvdW50IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRlcG9zaXQuJFdvdWxkQnVybgAOBMRUaGUgb3BlcmF0aW9uIHdvdWxkIHJlc3VsdCBpbiBmdW5kcyBiZWluZyBidXJuZWQuJExpdmVBc3NldAAPCFkBVGhlIGFzc2V0IGlzIGEgbGl2ZSBhc3NldCBhbmQgaXMgYWN0aXZlbHkgYmVpbmcgdXNlZC4gVXN1YWxseSBlbWl0IGZvciBvcGVyYXRpb25zIHN1Y2gdAWFzIGBzdGFydF9kZXN0cm95YCB3aGljaCByZXF1aXJlIHRoZSBhc3NldCB0byBiZSBpbiBhIGRlc3Ryb3lpbmcgc3RhdGUuMEFzc2V0Tm90TGl2ZQAQBMhUaGUgYXNzZXQgaXMgbm90IGxpdmUsIGFuZCBsaWtlbHkgYmVpbmcgZGVzdHJveWVkLjxJbmNvcnJlY3RTdGF0dXMAEQSwVGhlIGFzc2V0IHN0YXR1cyBpcyBub3QgdGhlIGV4cGVjdGVkIHN0YXR1cy4kTm90RnJvemVuABIE2FRoZSBhc3NldCBzaG91bGQgYmUgZnJvemVuIGJlZm9yZSB0aGUgZ2l2ZW4gb3BlcmF0aW9uLjhDYWxsYmFja0ZhaWxlZAATBIRDYWxsYmFjayBhY3Rpb24gcmVzdWx0ZWQgaW4gZXJyb3IoQmFkQXNzZXRJZAAUBMhUaGUgYXNzZXQgSUQgbXVzdCBiZSBlcXVhbCB0byB0aGUgW2BOZXh0QXNzZXRJZGBdLjxDb250YWluc0ZyZWV6ZXMAFQRNAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGZyZWV6ZXMuNENvbnRhaW5zSG9sZHMAFgRFAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGhvbGRzLjxUb29NYW55UmVzZXJ2ZXMAFwSAVHJpZWQgc2V0dGluZyB0b28gbWFueSByZXNlcnZlcy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuqQwEGE9wdGlvbgQEVAF9DAEIEE5vbmUAAAAQU29tZQQAfQwAAAEAAK0MBBhPcHRpb24EBFQBnQwBCBBOb25lAAAAEFNvbWUEAJ0MAAABAACxDAw4cGFsbGV0X3VuaXF1ZXMUdHlwZXNEQ29sbGVjdGlvbkRldGFpbHMIJEFjY291bnRJZAEEOERlcG9zaXRCYWxhbmNlAVUBACgBFG93bmVyBAEkQWNjb3VudElkAAEYaXNzdWVyBAEkQWNjb3VudElkAAEUYWRtaW4EASRBY2NvdW50SWQAARxmcmVlemVyBAEkQWNjb3VudElkAAE0dG90YWxfZGVwb3NpdFUBAThEZXBvc2l0QmFsYW5jZQABMGZyZWVfaG9sZGluZ1kBARBib29sAAEUaXRlbXM4AQx1MzIAAThpdGVtX21ldGFkYXRhczgBDHUzMgABKGF0dHJpYnV0ZXM4AQx1MzIAASRpc19mcm96ZW5ZAQEQYm9vbAAAtQwAAAQMBDg4ALkMDDhwYWxsZXRfdW5pcXVlcxR0eXBlcyxJdGVtRGV0YWlscwgkQWNjb3VudElkAQQ4RGVwb3NpdEJhbGFuY2UBVQEAEAEUb3duZXIEASRBY2NvdW50SWQAASBhcHByb3ZlZI0BAURPcHRpb248QWNjb3VudElkPgABJGlzX2Zyb3plblkBARBib29sAAEcZGVwb3NpdFUBAThEZXBvc2l0QmFsYW5jZQAAvQwMOHBhbGxldF91bmlxdWVzFHR5cGVzSENvbGxlY3Rpb25NZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBVQEsU3RyaW5nTGltaXQAAAwBHGRlcG9zaXRVAQE4RGVwb3NpdEJhbGFuY2UAARBkYXRhRQQBbEJvdW5kZWRWZWM8dTgsIFN0cmluZ0xpbWl0PgABJGlzX2Zyb3plblkBARBib29sAADBDAw4cGFsbGV0X3VuaXF1ZXMUdHlwZXMwSXRlbU1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQFVASxTdHJpbmdMaW1pdAAADAEcZGVwb3NpdFUBAThEZXBvc2l0QmFsYW5jZQABEGRhdGFFBAFsQm91bmRlZFZlYzx1OCwgU3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuWQEBEGJvb2wAAMUMAAAEDDjgwQMAyQwAAAQIeFUBAM0MAAAECFUBjQEA0QwMOHBhbGxldF91bmlxdWVzGHBhbGxldBRFcnJvcggEVAAESQABWDBOb1Blcm1pc3Npb24AAAToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLkRVbmtub3duQ29sbGVjdGlvbgABBHRUaGUgZ2l2ZW4gaXRlbSBJRCBpcyB1bmtub3duLjRBbHJlYWR5RXhpc3RzAAIEuFRoZSBpdGVtIElEIGhhcyBhbHJlYWR5IGJlZW4gdXNlZCBmb3IgYW4gaXRlbS4oV3JvbmdPd25lcgADBOhUaGUgb3duZXIgdHVybmVkIG91dCB0byBiZSBkaWZmZXJlbnQgdG8gd2hhdCB3YXMgZXhwZWN0ZWQuKEJhZFdpdG5lc3MABARsSW52YWxpZCB3aXRuZXNzIGRhdGEgZ2l2ZW4uFEluVXNlAAUEdFRoZSBpdGVtIElEIGlzIGFscmVhZHkgdGFrZW4uGEZyb3plbgAGBIRUaGUgaXRlbSBvciBjb2xsZWN0aW9uIGlzIGZyb3plbi40V3JvbmdEZWxlZ2F0ZQAHBPRUaGUgZGVsZWdhdGUgdHVybmVkIG91dCB0byBiZSBkaWZmZXJlbnQgdG8gd2hhdCB3YXMgZXhwZWN0ZWQuKE5vRGVsZWdhdGUACAR4VGhlcmUgaXMgbm8gZGVsZWdhdGUgYXBwcm92ZWQuKFVuYXBwcm92ZWQACQTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLihVbmFjY2VwdGVkAAoEJQFUaGUgbmFtZWQgb3duZXIgaGFzIG5vdCBzaWduZWQgb3duZXJzaGlwIG9mIHRoZSBjb2xsZWN0aW9uIGlzIGFjY2VwdGFibGUuGExvY2tlZAALBExUaGUgaXRlbSBpcyBsb2NrZWQuQE1heFN1cHBseVJlYWNoZWQADARsQWxsIGl0ZW1zIGhhdmUgYmVlbiBtaW50ZWQuTE1heFN1cHBseUFscmVhZHlTZXQADQSQVGhlIG1heCBzdXBwbHkgaGFzIGFscmVhZHkgYmVlbiBzZXQuRE1heFN1cHBseVRvb1NtYWxsAA4EQQFUaGUgcHJvdmlkZWQgbWF4IHN1cHBseSBpcyBsZXNzIHRvIHRoZSBhbW91bnQgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGFscmVhZHkgaGFzLixVbmtub3duSXRlbQAPBHRUaGUgZ2l2ZW4gaXRlbSBJRCBpcyB1bmtub3duLihOb3RGb3JTYWxlABAEVEl0ZW0gaXMgbm90IGZvciBzYWxlLiRCaWRUb29Mb3cAEQRwVGhlIHByb3ZpZGVkIGJpZCBpcyB0b28gbG93LihOb01ldGFkYXRhABIEVE5vIG1ldGFkYXRhIGlzIGZvdW5kLjRXcm9uZ01ldGFkYXRhABMEoFdyb25nIG1ldGFkYXRhIGtleS92YWx1ZSBieXRlcyBzdXBwbGllZC5EQXR0cmlidXRlTm90Rm91bmQAFARoQW4gYXR0cmlidXRlIGlzIG5vdCBmb3VuZC44V3JvbmdBdHRyaWJ1dGUAFQSkV3JvbmcgYXR0cmlidXRlIGtleS92YWx1ZSBieXRlcyBzdXBwbGllZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu1QwMLHBhbGxldF9uZnRzFHR5cGVzRENvbGxlY3Rpb25EZXRhaWxzCCRBY2NvdW50SWQBBDhEZXBvc2l0QmFsYW5jZQFVAQAYARRvd25lcgQBJEFjY291bnRJZAABNG93bmVyX2RlcG9zaXRVAQE4RGVwb3NpdEJhbGFuY2UAARRpdGVtczgBDHUzMgABOGl0ZW1fbWV0YWRhdGFzOAEMdTMyAAEwaXRlbV9jb25maWdzOAEMdTMyAAEoYXR0cmlidXRlczgBDHUzMgAA2QwMLHBhbGxldF9uZnRzFHR5cGVzIEJpdEZsYWdzBARUAd0MAAQADAE4Q29sbGVjdGlvblJvbGUAAN0MDCxwYWxsZXRfbmZ0cxR0eXBlczhDb2xsZWN0aW9uUm9sZQABDBhJc3N1ZXIAAQAcRnJlZXplcgACABRBZG1pbgAEAADhDAwscGFsbGV0X25mdHMUdHlwZXMsSXRlbURldGFpbHMMJEFjY291bnRJZAEEHERlcG9zaXQB5QwkQXBwcm92YWxzAekMAAwBFG93bmVyBAEkQWNjb3VudElkAAEkYXBwcm92YWxz6QwBJEFwcHJvdmFscwABHGRlcG9zaXTlDAEcRGVwb3NpdAAA5QwMLHBhbGxldF9uZnRzFHR5cGVzLEl0ZW1EZXBvc2l0CDhEZXBvc2l0QmFsYW5jZQFVASRBY2NvdW50SWQBBAAIARxhY2NvdW50BAEkQWNjb3VudElkAAEYYW1vdW50VQEBOERlcG9zaXRCYWxhbmNlAADpDAxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX21hcDxCb3VuZGVkQlRyZWVNYXAMBEsBBARWAeAEUwAABADtDAE4QlRyZWVNYXA8SywgVj4AAO0MBCBCVHJlZU1hcAgESwEEBFYB4AAEAPEMAAAA8QwAAAL1DAD1DAAABAgE4AD5DAwscGFsbGV0X25mdHMUdHlwZXNIQ29sbGVjdGlvbk1ldGFkYXRhCBxEZXBvc2l0AVUBLFN0cmluZ0xpbWl0AAAIARxkZXBvc2l0VQEBHERlcG9zaXQAARBkYXRhQQEBbEJvdW5kZWRWZWM8dTgsIFN0cmluZ0xpbWl0PgAA/QwMLHBhbGxldF9uZnRzFHR5cGVzMEl0ZW1NZXRhZGF0YQgcRGVwb3NpdAEBDSxTdHJpbmdMaW1pdAAACAEcZGVwb3NpdAENARxEZXBvc2l0AAEQZGF0YUEBAWxCb3VuZGVkVmVjPHU4LCBTdHJpbmdMaW1pdD4AAAENDCxwYWxsZXRfbmZ0cxR0eXBlc0xJdGVtTWV0YWRhdGFEZXBvc2l0CDhEZXBvc2l0QmFsYW5jZQFVASRBY2NvdW50SWQBBAAIARxhY2NvdW50jQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEYYW1vdW50VQEBOERlcG9zaXRCYWxhbmNlAAAFDQAABBA44H0EeAAJDQAABAhBAQ0NAA0NDCxwYWxsZXRfbmZ0cxR0eXBlc0BBdHRyaWJ1dGVEZXBvc2l0CDhEZXBvc2l0QmFsYW5jZQFVASRBY2NvdW50SWQBBAAIARxhY2NvdW50jQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEYYW1vdW50VQEBOERlcG9zaXRCYWxhbmNlAAARDQxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX3NldDxCb3VuZGVkQlRyZWVTZXQIBFQBBARTAAAEABUNASxCVHJlZVNldDxUPgAAFQ0EIEJUcmVlU2V0BARUAQQABABdAQAAABkNDCxwYWxsZXRfbmZ0cxR0eXBlcyxQZW5kaW5nU3dhcBAwQ29sbGVjdGlvbklkATgYSXRlbUlkAThYSXRlbVByaWNlV2l0aERpcmVjdGlvbgGVBCBEZWFkbGluZQE4ABABSGRlc2lyZWRfY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABMGRlc2lyZWRfaXRlbeABOE9wdGlvbjxJdGVtSWQ+AAEUcHJpY2WRBAF4T3B0aW9uPEl0ZW1QcmljZVdpdGhEaXJlY3Rpb24+AAEgZGVhZGxpbmU4ASBEZWFkbGluZQAAHQ0MLHBhbGxldF9uZnRzFHR5cGVzIEJpdEZsYWdzBARUASENAAQAKAE0UGFsbGV0RmVhdHVyZQAAIQ0MLHBhbGxldF9uZnRzFHR5cGVzNFBhbGxldEZlYXR1cmUAARAcVHJhZGluZwABAChBdHRyaWJ1dGVzAAIAJEFwcHJvdmFscwAEABRTd2FwcwAIAAAlDQwscGFsbGV0X25mdHMYcGFsbGV0FEVycm9yCARUAARJAAG0ME5vUGVybWlzc2lvbgAABOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uRFVua25vd25Db2xsZWN0aW9uAAEEdFRoZSBnaXZlbiBpdGVtIElEIGlzIHVua25vd24uNEFscmVhZHlFeGlzdHMAAgS4VGhlIGl0ZW0gSUQgaGFzIGFscmVhZHkgYmVlbiB1c2VkIGZvciBhbiBpdGVtLjxBcHByb3ZhbEV4cGlyZWQAAwQ5AVRoZSBhcHByb3ZhbCBoYWQgYSBkZWFkbGluZSB0aGF0IGV4cGlyZWQsIHNvIHRoZSBhcHByb3ZhbCBpc24ndCB2YWxpZCBhbnltb3JlLihXcm9uZ093bmVyAAQE6FRoZSBvd25lciB0dXJuZWQgb3V0IHRvIGJlIGRpZmZlcmVudCB0byB3aGF0IHdhcyBleHBlY3RlZC4oQmFkV2l0bmVzcwAFBBUBVGhlIHdpdG5lc3MgZGF0YSBnaXZlbiBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgY2hhaW4uRENvbGxlY3Rpb25JZEluVXNlAAYEfENvbGxlY3Rpb24gSUQgaXMgYWxyZWFkeSB0YWtlbi5QSXRlbXNOb25UcmFuc2ZlcmFibGUABwTISXRlbXMgd2l0aGluIHRoYXQgY29sbGVjdGlvbiBhcmUgbm9uLXRyYW5zZmVyYWJsZS4sTm90RGVsZWdhdGUACAScVGhlIHByb3ZpZGVkIGFjY291bnQgaXMgbm90IGEgZGVsZWdhdGUuNFdyb25nRGVsZWdhdGUACQT0VGhlIGRlbGVnYXRlIHR1cm5lZCBvdXQgdG8gYmUgZGlmZmVyZW50IHRvIHdoYXQgd2FzIGV4cGVjdGVkLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4oVW5hY2NlcHRlZAALBBkBVGhlIG5hbWVkIG93bmVyIGhhcyBub3Qgc2lnbmVkIG93bmVyc2hpcCBhY2NlcHRhbmNlIG9mIHRoZSBjb2xsZWN0aW9uLihJdGVtTG9ja2VkAAwEmFRoZSBpdGVtIGlzIGxvY2tlZCAobm9uLXRyYW5zZmVyYWJsZSkuUExvY2tlZEl0ZW1BdHRyaWJ1dGVzAA0EdEl0ZW0ncyBhdHRyaWJ1dGVzIGFyZSBsb2NrZWQuaExvY2tlZENvbGxlY3Rpb25BdHRyaWJ1dGVzAA4EjENvbGxlY3Rpb24ncyBhdHRyaWJ1dGVzIGFyZSBsb2NrZWQuSExvY2tlZEl0ZW1NZXRhZGF0YQAPBGhJdGVtJ3MgbWV0YWRhdGEgaXMgbG9ja2VkLmBMb2NrZWRDb2xsZWN0aW9uTWV0YWRhdGEAEASAQ29sbGVjdGlvbidzIG1ldGFkYXRhIGlzIGxvY2tlZC5ATWF4U3VwcGx5UmVhY2hlZAARBGxBbGwgaXRlbXMgaGF2ZSBiZWVuIG1pbnRlZC48TWF4U3VwcGx5TG9ja2VkABIEuFRoZSBtYXggc3VwcGx5IGlzIGxvY2tlZCBhbmQgY2FuJ3QgYmUgY2hhbmdlZC5ETWF4U3VwcGx5VG9vU21hbGwAEwRJAVRoZSBwcm92aWRlZCBtYXggc3VwcGx5IGlzIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBhbHJlYWR5IGhhcy4sVW5rbm93bkl0ZW0AFAR0VGhlIGdpdmVuIGl0ZW0gSUQgaXMgdW5rbm93bi4sVW5rbm93blN3YXAAFQRMU3dhcCBkb2Vzbid0IGV4aXN0LkBNZXRhZGF0YU5vdEZvdW5kABYEjFRoZSBnaXZlbiBpdGVtIGhhcyBubyBtZXRhZGF0YSBzZXQuREF0dHJpYnV0ZU5vdEZvdW5kABcEmFRoZSBwcm92aWRlZCBhdHRyaWJ1dGUgY2FuJ3QgYmUgZm91bmQuKE5vdEZvclNhbGUAGARUSXRlbSBpcyBub3QgZm9yIHNhbGUuJEJpZFRvb0xvdwAZBHBUaGUgcHJvdmlkZWQgYmlkIGlzIHRvbyBsb3cuUFJlYWNoZWRBcHByb3ZhbExpbWl0ABoEoFRoZSBpdGVtIGhhcyByZWFjaGVkIGl0cyBhcHByb3ZhbCBsaW1pdC48RGVhZGxpbmVFeHBpcmVkABsEhFRoZSBkZWFkbGluZSBoYXMgYWxyZWFkeSBleHBpcmVkLjRXcm9uZ0R1cmF0aW9uABwEMQFUaGUgZHVyYXRpb24gcHJvdmlkZWQgc2hvdWxkIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTWF4RGVhZGxpbmVEdXJhdGlvbmAuOE1ldGhvZERpc2FibGVkAB0EqFRoZSBtZXRob2QgaXMgZGlzYWJsZWQgYnkgc3lzdGVtIHNldHRpbmdzLjBXcm9uZ1NldHRpbmcAHgSIVGhlIHByb3ZpZGVkIHNldHRpbmcgY2FuJ3QgYmUgc2V0LlhJbmNvbnNpc3RlbnRJdGVtQ29uZmlnAB8EFQFJdGVtJ3MgY29uZmlnIGFscmVhZHkgZXhpc3RzIGFuZCBzaG91bGQgYmUgZXF1YWwgdG8gdGhlIHByb3ZpZGVkIG9uZS4gTm9Db25maWcAIATIQ29uZmlnIGZvciBhIGNvbGxlY3Rpb24gb3IgYW4gaXRlbSBjYW4ndCBiZSBmb3VuZC48Um9sZXNOb3RDbGVhcmVkACEEcFNvbWUgcm9sZXMgd2VyZSBub3QgY2xlYXJlZC44TWludE5vdFN0YXJ0ZWQAIgRkTWludCBoYXMgbm90IHN0YXJ0ZWQgeWV0LiRNaW50RW5kZWQAIwRcTWludCBoYXMgYWxyZWFkeSBlbmRlZC44QWxyZWFkeUNsYWltZWQAJATAVGhlIHByb3ZpZGVkIEl0ZW0gd2FzIGFscmVhZHkgdXNlZCBmb3IgY2xhaW1pbmcuNEluY29ycmVjdERhdGEAJQR8VGhlIHByb3ZpZGVkIGRhdGEgaXMgaW5jb3JyZWN0LixXcm9uZ09yaWdpbgAmBKxUaGUgZXh0cmluc2ljIHdhcyBzZW50IGJ5IHRoZSB3cm9uZyBvcmlnaW4uOFdyb25nU2lnbmF0dXJlACcEkFRoZSBwcm92aWRlZCBzaWduYXR1cmUgaXMgaW5jb3JyZWN0LkRJbmNvcnJlY3RNZXRhZGF0YQAoBKBUaGUgcHJvdmlkZWQgbWV0YWRhdGEgbWlnaHQgYmUgdG9vIGxvbmcuZE1heEF0dHJpYnV0ZXNMaW1pdFJlYWNoZWQAKQScQ2FuJ3Qgc2V0IG1vcmUgYXR0cmlidXRlcyBwZXIgb25lIGNhbGwuOFdyb25nTmFtZXNwYWNlACoE0FRoZSBwcm92aWRlZCBuYW1lc3BhY2UgaXNuJ3Qgc3VwcG9ydGVkIGluIHRoaXMgY2FsbC5IQ29sbGVjdGlvbk5vdEVtcHR5ACsEjENhbid0IGRlbGV0ZSBub24tZW1wdHkgY29sbGVjdGlvbnMuPFdpdG5lc3NSZXF1aXJlZAAsBJBUaGUgd2l0bmVzcyBkYXRhIHNob3VsZCBiZSBwcm92aWRlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuKQ0AAAQI/QEEAC0NAAAEDP0BBAQAMQ0MNHBhbGxldF9hc3NldHMUdHlwZXM0QXNzZXRNZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBVQE0Qm91bmRlZFN0cmluZwE1DQAUARxkZXBvc2l0VQEBOERlcG9zaXRCYWxhbmNlAAEQbmFtZTUNATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9sNQ0BNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVuWQEBEGJvb2wAADUNDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAOQ0MNHBhbGxldF9hc3NldHMYcGFsbGV0FEVycm9yCARUAARJAAFgKEJhbGFuY2VMb3cAAAQVAUFjY291bnQgYmFsYW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdHJhbnNmZXIgYW1vdW50LiROb0FjY291bnQAAQSQVGhlIGFjY291bnQgdG8gYWx0ZXIgZG9lcyBub3QgZXhpc3QuME5vUGVybWlzc2lvbgACBOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uHFVua25vd24AAwR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uGEZyb3plbgAEBHRUaGUgb3JpZ2luIGFjY291bnQgaXMgZnJvemVuLhRJblVzZQAFBHhUaGUgYXNzZXQgSUQgaXMgYWxyZWFkeSB0YWtlbi4oQmFkV2l0bmVzcwAGBGxJbnZhbGlkIHdpdG5lc3MgZGF0YSBnaXZlbi44TWluQmFsYW5jZVplcm8ABwSMTWluaW11bSBiYWxhbmNlIHNob3VsZCBiZSBub24temVyby5MVW5hdmFpbGFibGVDb25zdW1lcgAIDFkBVW5hYmxlIHRvIGluY3JlbWVudCB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIGNvdW50ZXJzIG9uIHRoZSBhY2NvdW50LiBFaXRoZXIgbm8gcHJvdmlkZXJNAXJlZmVyZW5jZSBleGlzdHMgdG8gYWxsb3cgYSBub24temVybyBiYWxhbmNlIG9mIGEgbm9uLXNlbGYtc3VmZmljaWVudCBhc3NldCwgb3Igb25l8GZld2VyIHRoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBoYXMgYmVlbiByZWFjaGVkLixCYWRNZXRhZGF0YQAJBFxJbnZhbGlkIG1ldGFkYXRhIGdpdmVuLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4gV291bGREaWUACwQ1AVRoZSBzb3VyY2UgYWNjb3VudCB3b3VsZCBub3Qgc3Vydml2ZSB0aGUgdHJhbnNmZXIgYW5kIGl0IG5lZWRzIHRvIHN0YXkgYWxpdmUuNEFscmVhZHlFeGlzdHMADASEVGhlIGFzc2V0LWFjY291bnQgYWxyZWFkeSBleGlzdHMuJE5vRGVwb3NpdAANBNRUaGUgYXNzZXQtYWNjb3VudCBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBkZXBvc2l0LiRXb3VsZEJ1cm4ADgTEVGhlIG9wZXJhdGlvbiB3b3VsZCByZXN1bHQgaW4gZnVuZHMgYmVpbmcgYnVybmVkLiRMaXZlQXNzZXQADwhZAVRoZSBhc3NldCBpcyBhIGxpdmUgYXNzZXQgYW5kIGlzIGFjdGl2ZWx5IGJlaW5nIHVzZWQuIFVzdWFsbHkgZW1pdCBmb3Igb3BlcmF0aW9ucyBzdWNoHQFhcyBgc3RhcnRfZGVzdHJveWAgd2hpY2ggcmVxdWlyZSB0aGUgYXNzZXQgdG8gYmUgaW4gYSBkZXN0cm95aW5nIHN0YXRlLjBBc3NldE5vdExpdmUAEATIVGhlIGFzc2V0IGlzIG5vdCBsaXZlLCBhbmQgbGlrZWx5IGJlaW5nIGRlc3Ryb3llZC48SW5jb3JyZWN0U3RhdHVzABEEsFRoZSBhc3NldCBzdGF0dXMgaXMgbm90IHRoZSBleHBlY3RlZCBzdGF0dXMuJE5vdEZyb3plbgASBNhUaGUgYXNzZXQgc2hvdWxkIGJlIGZyb3plbiBiZWZvcmUgdGhlIGdpdmVuIG9wZXJhdGlvbi44Q2FsbGJhY2tGYWlsZWQAEwSEQ2FsbGJhY2sgYWN0aW9uIHJlc3VsdGVkIGluIGVycm9yKEJhZEFzc2V0SWQAFATIVGhlIGFzc2V0IElEIG11c3QgYmUgZXF1YWwgdG8gdGhlIFtgTmV4dEFzc2V0SWRgXS48Q29udGFpbnNGcmVlemVzABUETQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBmcmVlemVzLjRDb250YWluc0hvbGRzABYERQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBob2xkcy48VG9vTWFueVJlc2VydmVzABcEgFRyaWVkIHNldHRpbmcgdG9vIG1hbnkgcmVzZXJ2ZXMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lj0NBBhPcHRpb24EBFQBMQ0BCBBOb25lAAAAEFNvbWUEADENAAABAABBDQw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBc3NldE1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQFVATRCb3VuZGVkU3RyaW5nAUUNABQBHGRlcG9zaXRVAQE4RGVwb3NpdEJhbGFuY2UAARBuYW1lRQ0BNEJvdW5kZWRTdHJpbmcAARhzeW1ib2xFDQE0Qm91bmRlZFN0cmluZwABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5ZAQEQYm9vbAAARQ0MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABJDQw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXJyb3IIBFQABEkAAWAoQmFsYW5jZUxvdwAABBUBQWNjb3VudCBiYWxhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0cmFuc2ZlciBhbW91bnQuJE5vQWNjb3VudAABBJBUaGUgYWNjb3VudCB0byBhbHRlciBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4cVW5rbm93bgADBHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi4YRnJvemVuAAQEdFRoZSBvcmlnaW4gYWNjb3VudCBpcyBmcm96ZW4uFEluVXNlAAUEeFRoZSBhc3NldCBJRCBpcyBhbHJlYWR5IHRha2VuLihCYWRXaXRuZXNzAAYEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLjhNaW5CYWxhbmNlWmVybwAHBIxNaW5pbXVtIGJhbGFuY2Ugc2hvdWxkIGJlIG5vbi16ZXJvLkxVbmF2YWlsYWJsZUNvbnN1bWVyAAgMWQFVbmFibGUgdG8gaW5jcmVtZW50IHRoZSBjb25zdW1lciByZWZlcmVuY2UgY291bnRlcnMgb24gdGhlIGFjY291bnQuIEVpdGhlciBubyBwcm92aWRlck0BcmVmZXJlbmNlIGV4aXN0cyB0byBhbGxvdyBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgYSBub24tc2VsZi1zdWZmaWNpZW50IGFzc2V0LCBvciBvbmXwZmV3ZXIgdGhlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGhhcyBiZWVuIHJlYWNoZWQuLEJhZE1ldGFkYXRhAAkEXEludmFsaWQgbWV0YWRhdGEgZ2l2ZW4uKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLiBXb3VsZERpZQALBDUBVGhlIHNvdXJjZSBhY2NvdW50IHdvdWxkIG5vdCBzdXJ2aXZlIHRoZSB0cmFuc2ZlciBhbmQgaXQgbmVlZHMgdG8gc3RheSBhbGl2ZS40QWxyZWFkeUV4aXN0cwAMBIRUaGUgYXNzZXQtYWNjb3VudCBhbHJlYWR5IGV4aXN0cy4kTm9EZXBvc2l0AA0E1FRoZSBhc3NldC1hY2NvdW50IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRlcG9zaXQuJFdvdWxkQnVybgAOBMRUaGUgb3BlcmF0aW9uIHdvdWxkIHJlc3VsdCBpbiBmdW5kcyBiZWluZyBidXJuZWQuJExpdmVBc3NldAAPCFkBVGhlIGFzc2V0IGlzIGEgbGl2ZSBhc3NldCBhbmQgaXMgYWN0aXZlbHkgYmVpbmcgdXNlZC4gVXN1YWxseSBlbWl0IGZvciBvcGVyYXRpb25zIHN1Y2gdAWFzIGBzdGFydF9kZXN0cm95YCB3aGljaCByZXF1aXJlIHRoZSBhc3NldCB0byBiZSBpbiBhIGRlc3Ryb3lpbmcgc3RhdGUuMEFzc2V0Tm90TGl2ZQAQBMhUaGUgYXNzZXQgaXMgbm90IGxpdmUsIGFuZCBsaWtlbHkgYmVpbmcgZGVzdHJveWVkLjxJbmNvcnJlY3RTdGF0dXMAEQSwVGhlIGFzc2V0IHN0YXR1cyBpcyBub3QgdGhlIGV4cGVjdGVkIHN0YXR1cy4kTm90RnJvemVuABIE2FRoZSBhc3NldCBzaG91bGQgYmUgZnJvemVuIGJlZm9yZSB0aGUgZ2l2ZW4gb3BlcmF0aW9uLjhDYWxsYmFja0ZhaWxlZAATBIRDYWxsYmFjayBhY3Rpb24gcmVzdWx0ZWQgaW4gZXJyb3IoQmFkQXNzZXRJZAAUBMhUaGUgYXNzZXQgSUQgbXVzdCBiZSBlcXVhbCB0byB0aGUgW2BOZXh0QXNzZXRJZGBdLjxDb250YWluc0ZyZWV6ZXMAFQRNAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGZyZWV6ZXMuNENvbnRhaW5zSG9sZHMAFgRFAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGhvbGRzLjxUb29NYW55UmVzZXJ2ZXMAFwSAVHJpZWQgc2V0dGluZyB0b28gbWFueSByZXNlcnZlcy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuTQ0EGE9wdGlvbgQEVAFBDQEIEE5vbmUAAAAQU29tZQQAQQ0AAAEAAFENDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhR0eXBlcyBQb29sSW5mbwQsUG9vbEFzc2V0SWQBOAAEASBscF90b2tlbjgBLFBvb2xBc3NldElkAABVDQxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24YcGFsbGV0FEVycm9yBARUAAFgQEludmFsaWRBc3NldFBhaXIAAAS4UHJvdmlkZWQgYXNzZXQgcGFpciBpcyBub3Qgc3VwcG9ydGVkIGZvciBwb29sLihQb29sRXhpc3RzAAEEUFBvb2wgYWxyZWFkeSBleGlzdHMuSFdyb25nRGVzaXJlZEFtb3VudAACBHREZXNpcmVkIGFtb3VudCBjYW4ndCBiZSB6ZXJvLmBBbW91bnRPbmVMZXNzVGhhbk1pbmltYWwAAwhJAVByb3ZpZGVkIGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0L2Fzc2V0J3M8bWluaW1hbCBhbW91bnQuYEFtb3VudFR3b0xlc3NUaGFuTWluaW1hbAAECEkBUHJvdmlkZWQgYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQvYXNzZXQnczxtaW5pbWFsIGFtb3VudC5oUmVzZXJ2ZUxlZnRMZXNzVGhhbk1pbmltYWwABQhNAVJlc2VydmUgbmVlZHMgdG8gYWx3YXlzIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdC9hc3NldCdzPG1pbmltYWwgYW1vdW50LkBBbW91bnRPdXRUb29IaWdoAAYEyERlc2lyZWQgYW1vdW50IGNhbid0IGJlIGVxdWFsIHRvIHRoZSBwb29sIHJlc2VydmUuMFBvb2xOb3RGb3VuZAAHBFxUaGUgcG9vbCBkb2Vzbid0IGV4aXN0LiBPdmVyZmxvdwAIBFRBbiBvdmVyZmxvdyBoYXBwZW5lZC6AQXNzZXRPbmVEZXBvc2l0RGlkTm90TWVldE1pbmltdW0ACQQpAVRoZSBtaW5pbWFsIGFtb3VudCByZXF1aXJlbWVudCBmb3IgdGhlIGZpcnN0IHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQugEFzc2V0VHdvRGVwb3NpdERpZE5vdE1lZXRNaW5pbXVtAAoELQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBzZWNvbmQgdG9rZW4gaW4gdGhlIHBhaXIgd2Fzbid0IG1ldC6MQXNzZXRPbmVXaXRoZHJhd2FsRGlkTm90TWVldE1pbmltdW0ACwQpAVRoZSBtaW5pbWFsIGFtb3VudCByZXF1aXJlbWVudCBmb3IgdGhlIGZpcnN0IHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQujEFzc2V0VHdvV2l0aGRyYXdhbERpZE5vdE1lZXRNaW5pbXVtAAwELQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBzZWNvbmQgdG9rZW4gaW4gdGhlIHBhaXIgd2Fzbid0IG1ldC5wT3B0aW1hbEFtb3VudExlc3NUaGFuRGVzaXJlZAANBLxPcHRpbWFsIGNhbGN1bGF0ZWQgYW1vdW50IGlzIGxlc3MgdGhhbiBkZXNpcmVkLmxJbnN1ZmZpY2llbnRMaXF1aWRpdHlNaW50ZWQADgR4SW5zdWZmaWNpZW50IGxpcXVpZGl0eSBtaW50ZWQuNFplcm9MaXF1aWRpdHkADwSIUmVxdWVzdGVkIGxpcXVpZGl0eSBjYW4ndCBiZSB6ZXJvLihaZXJvQW1vdW50ABAEVEFtb3VudCBjYW4ndCBiZSB6ZXJvLoxQcm92aWRlZE1pbmltdW1Ob3RTdWZmaWNpZW50Rm9yU3dhcAARBOxDYWxjdWxhdGVkIGFtb3VudCBvdXQgaXMgbGVzcyB0aGFuIHByb3ZpZGVkIG1pbmltdW0gYW1vdW50LoxQcm92aWRlZE1heGltdW1Ob3RTdWZmaWNpZW50Rm9yU3dhcAASBMxQcm92aWRlZCBtYXhpbXVtIGFtb3VudCBpcyBub3Qgc3VmZmljaWVudCBmb3Igc3dhcC4sSW52YWxpZFBhdGgAEwTUVGhlIHByb3ZpZGVkIHBhdGggbXVzdCBjb25zaXN0cyBvZiAyIGFzc2V0cyBhdCBsZWFzdC40Tm9uVW5pcXVlUGF0aAAUBMRUaGUgcHJvdmlkZWQgcGF0aCBtdXN0IGNvbnNpc3RzIG9mIHVuaXF1ZSBhc3NldHMuUEluY29ycmVjdFBvb2xBc3NldElkABUE7El0IHdhcyBub3QgcG9zc2libGUgdG8gZ2V0IG9yIGluY3JlbWVudCB0aGUgSWQgb2YgdGhlIHBvb2wuMEJlbG93TWluaW11bQAWBPBUaGUgZGVzdGluYXRpb24gYWNjb3VudCBjYW5ub3QgZXhpc3Qgd2l0aCB0aGUgc3dhcHBlZCBmdW5kcy4kUG9vbEVtcHR5ABcEMQFUaGUgcG9vbCBleGlzdHMgYnV0IGhhcyBubyBsaXF1aWRpdHkgKGF0IGxlYXN0IG9uZSBvZiB0aGUgcmVzZXJ2ZXMgaXMgemVybykuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LlkNBBhSZXN1bHQIBFQBXQ0ERQFVDQEICE9rBABdDQAAAAAMRXJyBABVDQAAAQAAXQ0AAAQIVQFVAQBhDQxUcGFsbGV0X2Fzc2V0c19mcmVlemVyGHBhbGxldBRFcnJvcggEVAAESQABBDhUb29NYW55RnJlZXplcwAABOhOdW1iZXIgb2YgZnJlZXplcyBvbiBhbiBhY2NvdW50IHdvdWxkIGV4Y2VlZCBgTWF4RnJlZXplc2AuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmUNDFBwYWxsZXRfYXNzZXRzX2hvbGRlchhwYWxsZXQURXJyb3IIBFQABEkAAQQwVG9vTWFueUhvbGRzAAAEMQFOdW1iZXIgb2YgaG9sZHMgb24gYW4gYWNjb3VudCB3b3VsZCBleGNlZWQgdGhlIGNvdW50IG9mIGBSdW50aW1lSG9sZFJlYXNvbmAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmkNCDxwYWxsZXRfdHJlYXN1cnkgUHJvcG9zYWwIJEFjY291bnRJZAEEHEJhbGFuY2UBVQEAEAEgcHJvcG9zZXIEASRBY2NvdW50SWQAARR2YWx1ZVUBARxCYWxhbmNlAAEsYmVuZWZpY2lhcnkEASRBY2NvdW50SWQAARBib25kVQEBHEJhbGFuY2UAAG0NDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAEEEARhWZWM8VD4AAHENCDxwYWxsZXRfdHJlYXN1cnksU3BlbmRTdGF0dXMUJEFzc2V0S2luZAHNBDBBc3NldEJhbGFuY2UBVQEsQmVuZWZpY2lhcnkB0QQsQmxvY2tOdW1iZXIBOCRQYXltZW50SWQBKAAYAShhc3NldF9raW5kzQQBJEFzc2V0S2luZAABGGFtb3VudFUBATBBc3NldEJhbGFuY2UAASxiZW5lZmljaWFyedEEASxCZW5lZmljaWFyeQABKHZhbGlkX2Zyb204ASxCbG9ja051bWJlcgABJGV4cGlyZV9hdDgBLEJsb2NrTnVtYmVyAAEYc3RhdHVzdQ0BXFBheW1lbnRTdGF0ZTxQYXltZW50SWQ+AAB1DQg8cGFsbGV0X3RyZWFzdXJ5MFBheW1lbnRTdGF0ZQQISWQBKAEMHFBlbmRpbmcAAAAkQXR0ZW1wdGVkBAEIaWQoAQhJZAABABhGYWlsZWQAAgAAeQ0MPHBhbGxldF90cmVhc3VyeRhwYWxsZXQURXJyb3IIBFQABEkAASwwSW52YWxpZEluZGV4AAAErE5vIHByb3Bvc2FsLCBib3VudHkgb3Igc3BlbmQgYXQgdGhhdCBpbmRleC5AVG9vTWFueUFwcHJvdmFscwABBIBUb28gbWFueSBhcHByb3ZhbHMgaW4gdGhlIHF1ZXVlLlhJbnN1ZmZpY2llbnRQZXJtaXNzaW9uAAIIRQFUaGUgc3BlbmQgb3JpZ2luIGlzIHZhbGlkIGJ1dCB0aGUgYW1vdW50IGl0IGlzIGFsbG93ZWQgdG8gc3BlbmQgaXMgbG93ZXIgdGhhbiB0aGVMYW1vdW50IHRvIGJlIHNwZW50LkxQcm9wb3NhbE5vdEFwcHJvdmVkAAMEfFByb3Bvc2FsIGhhcyBub3QgYmVlbiBhcHByb3ZlZC5YRmFpbGVkVG9Db252ZXJ0QmFsYW5jZQAEBFEBVGhlIGJhbGFuY2Ugb2YgdGhlIGFzc2V0IGtpbmQgaXMgbm90IGNvbnZlcnRpYmxlIHRvIHRoZSBiYWxhbmNlIG9mIHRoZSBuYXRpdmUgYXNzZXQuMFNwZW5kRXhwaXJlZAAFBLBUaGUgc3BlbmQgaGFzIGV4cGlyZWQgYW5kIGNhbm5vdCBiZSBjbGFpbWVkLixFYXJseVBheW91dAAGBKRUaGUgc3BlbmQgaXMgbm90IHlldCBlbGlnaWJsZSBmb3IgcGF5b3V0LkBBbHJlYWR5QXR0ZW1wdGVkAAcEnFRoZSBwYXltZW50IGhhcyBhbHJlYWR5IGJlZW4gYXR0ZW1wdGVkLixQYXlvdXRFcnJvcgAIBMxUaGVyZSB3YXMgc29tZSBpc3N1ZSB3aXRoIHRoZSBtZWNoYW5pc20gb2YgcGF5bWVudC4wTm90QXR0ZW1wdGVkAAkEpFRoZSBwYXlvdXQgd2FzIG5vdCB5ZXQgYXR0ZW1wdGVkL2NsYWltZWQuMEluY29uY2x1c2l2ZQAKBMRUaGUgcGF5bWVudCBoYXMgbmVpdGhlciBmYWlsZWQgbm9yIHN1Y2NlZWRlZCB5ZXQuBHhFcnJvciBmb3IgdGhlIHRyZWFzdXJ5IHBhbGxldC59DQAABAgE0QMAgQ0MYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlGFZvdGluZxQcQmFsYW5jZQFVASRBY2NvdW50SWQBBCxCbG9ja051bWJlcgE4JFBvbGxJbmRleAE4IE1heFZvdGVzAAEIHENhc3RpbmcEAIUNAchDYXN0aW5nPEJhbGFuY2UsIEJsb2NrTnVtYmVyLCBQb2xsSW5kZXgsIE1heFZvdGVzPgAAAChEZWxlZ2F0aW5nBACdDQGsRGVsZWdhdGluZzxCYWxhbmNlLCBBY2NvdW50SWQsIEJsb2NrTnVtYmVyPgABAACFDQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUcQ2FzdGluZxAcQmFsYW5jZQFVASxCbG9ja051bWJlcgE4JFBvbGxJbmRleAE4IE1heFZvdGVzAAAMARR2b3Rlc4kNAdxCb3VuZGVkVmVjPChQb2xsSW5kZXgsIEFjY291bnRWb3RlPEJhbGFuY2U+KSwgTWF4Vm90ZXM+AAEsZGVsZWdhdGlvbnOVDQFQRGVsZWdhdGlvbnM8QmFsYW5jZT4AARRwcmlvcpkNAXxQcmlvckxvY2s8QmxvY2tOdW1iZXIsIEJhbGFuY2U+AACJDQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAY0NBFMAAAQAkQ0BGFZlYzxUPgAAjQ0AAAQIONkEAJENAAACjQ0AlQ0MYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxR0eXBlcyxEZWxlZ2F0aW9ucwQcQmFsYW5jZQFVAQAIARR2b3Rlc1UBARxCYWxhbmNlAAEcY2FwaXRhbFUBARxCYWxhbmNlAACZDQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUkUHJpb3JMb2NrCCxCbG9ja051bWJlcgE4HEJhbGFuY2UBVQEACAA4ASxCbG9ja051bWJlcgAAVQEBHEJhbGFuY2UAAJ0NDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZShEZWxlZ2F0aW5nDBxCYWxhbmNlAVUBJEFjY291bnRJZAEELEJsb2NrTnVtYmVyATgAFAEcYmFsYW5jZVUBARxCYWxhbmNlAAEYdGFyZ2V0BAEkQWNjb3VudElkAAEoY29udmljdGlvbuEEAShDb252aWN0aW9uAAEsZGVsZWdhdGlvbnOVDQFQRGVsZWdhdGlvbnM8QmFsYW5jZT4AARRwcmlvcpkNAXxQcmlvckxvY2s8QmxvY2tOdW1iZXIsIEJhbGFuY2U+AAChDQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAaUNBFMAAAQAqQ0BGFZlYzxUPgAApQ0AAAQI0QNVAQCpDQAAAqUNAK0NDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcYcGFsbGV0FEVycm9yCARUAARJAAEwKE5vdE9uZ29pbmcAAARQUG9sbCBpcyBub3Qgb25nb2luZy4gTm90Vm90ZXIAAQSsVGhlIGdpdmVuIGFjY291bnQgZGlkIG5vdCB2b3RlIG9uIHRoZSBwb2xsLjBOb1Blcm1pc3Npb24AAgTIVGhlIGFjdG9yIGhhcyBubyBwZXJtaXNzaW9uIHRvIGNvbmR1Y3QgdGhlIGFjdGlvbi48Tm9QZXJtaXNzaW9uWWV0AAMEWQFUaGUgYWN0b3IgaGFzIG5vIHBlcm1pc3Npb24gdG8gY29uZHVjdCB0aGUgYWN0aW9uIHJpZ2h0IG5vdyBidXQgd2lsbCBkbyBpbiB0aGUgZnV0dXJlLkRBbHJlYWR5RGVsZWdhdGluZwAEBIhUaGUgYWNjb3VudCBpcyBhbHJlYWR5IGRlbGVnYXRpbmcuNEFscmVhZHlWb3RpbmcABQhVAVRoZSBhY2NvdW50IGN1cnJlbnRseSBoYXMgdm90ZXMgYXR0YWNoZWQgdG8gaXQgYW5kIHRoZSBvcGVyYXRpb24gY2Fubm90IHN1Y2NlZWQgdW50aWygdGhlc2UgYXJlIHJlbW92ZWQgdGhyb3VnaCBgcmVtb3ZlX3ZvdGVgLkRJbnN1ZmZpY2llbnRGdW5kcwAGBPxUb28gaGlnaCBhIGJhbGFuY2Ugd2FzIHByb3ZpZGVkIHRoYXQgdGhlIGFjY291bnQgY2Fubm90IGFmZm9yZC40Tm90RGVsZWdhdGluZwAHBKBUaGUgYWNjb3VudCBpcyBub3QgY3VycmVudGx5IGRlbGVnYXRpbmcuIE5vbnNlbnNlAAgElERlbGVnYXRpb24gdG8gb25lc2VsZiBtYWtlcyBubyBzZW5zZS48TWF4Vm90ZXNSZWFjaGVkAAkEgE1heGltdW0gbnVtYmVyIG9mIHZvdGVzIHJlYWNoZWQuLENsYXNzTmVlZGVkAAoEOQFUaGUgY2xhc3MgbXVzdCBiZSBzdXBwbGllZCBzaW5jZSBpdCBpcyBub3QgZWFzaWx5IGRldGVybWluYWJsZSBmcm9tIHRoZSBzdGF0ZS4gQmFkQ2xhc3MACwSEVGhlIGNsYXNzIElEIHN1cHBsaWVkIGlzIGludmFsaWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LrENDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzOFJlZmVyZW5kdW1JbmZvIBxUcmFja0lkAdEDNFJ1bnRpbWVPcmlnaW4B1QMYTW9tZW50ATgQQ2FsbAHtBBxCYWxhbmNlAVUBFFRhbGx5ARkJJEFjY291bnRJZAEEPFNjaGVkdWxlQWRkcmVzcwHMARgcT25nb2luZwQAtQ0BjQFSZWZlcmVuZHVtU3RhdHVzPFRyYWNrSWQsIFJ1bnRpbWVPcmlnaW4sIE1vbWVudCwgQ2FsbCwgQmFsYW5jZSwgVGFsbHksCkFjY291bnRJZCwgU2NoZWR1bGVBZGRyZXNzLD4AAAAgQXBwcm92ZWQMADgBGE1vbWVudAAAvQ0BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAC9DQGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAQAgUmVqZWN0ZWQMADgBGE1vbWVudAAAvQ0BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAC9DQGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAgAkQ2FuY2VsbGVkDAA4ARhNb21lbnQAAL0NAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAAvQ0BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAMAIFRpbWVkT3V0DAA4ARhNb21lbnQAAL0NAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAAvQ0BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAQAGEtpbGxlZAQAOAEYTW9tZW50AAUAALUNDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzQFJlZmVyZW5kdW1TdGF0dXMgHFRyYWNrSWQB0QM0UnVudGltZU9yaWdpbgHVAxhNb21lbnQBOBBDYWxsAe0EHEJhbGFuY2UBVQEUVGFsbHkBGQkkQWNjb3VudElkAQQ8U2NoZWR1bGVBZGRyZXNzAcwALAEUdHJhY2vRAwEcVHJhY2tJZAABGG9yaWdpbtUDATRSdW50aW1lT3JpZ2luAAEgcHJvcG9zYWztBAEQQ2FsbAABJGVuYWN0bWVudPUEAVBEaXNwYXRjaFRpbWU8TW9tZW50PgABJHN1Ym1pdHRlZDgBGE1vbWVudAABSHN1Ym1pc3Npb25fZGVwb3NpdLkNAWxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4AAUBkZWNpc2lvbl9kZXBvc2l0vQ0BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAEgZGVjaWRpbmfBDQF4T3B0aW9uPERlY2lkaW5nU3RhdHVzPE1vbWVudD4+AAEUdGFsbHkZCQEUVGFsbHkAASBpbl9xdWV1ZVkBARBib29sAAEUYWxhcm3JDQGET3B0aW9uPChNb21lbnQsIFNjaGVkdWxlQWRkcmVzcyk+AAC5DQxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlcxxEZXBvc2l0CCRBY2NvdW50SWQBBBxCYWxhbmNlAVUBAAgBDHdobwQBJEFjY291bnRJZAABGGFtb3VudFUBARxCYWxhbmNlAAC9DQQYT3B0aW9uBARUAbkNAQgQTm9uZQAAABBTb21lBAC5DQAAAQAAwQ0EGE9wdGlvbgQEVAHFDQEIEE5vbmUAAAAQU29tZQQAxQ0AAAEAAMUNDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzOERlY2lkaW5nU3RhdHVzBCxCbG9ja051bWJlcgE4AAgBFHNpbmNlOAEsQmxvY2tOdW1iZXIAAShjb25maXJtaW5n4AFMT3B0aW9uPEJsb2NrTnVtYmVyPgAAyQ0EGE9wdGlvbgQEVAHNDQEIEE5vbmUAAAAQU29tZQQAzQ0AAAEAAM0NAAAECDjMANENDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB1Q0EUwAABADZDQEYVmVjPFQ+AADVDQAABAg4VQEA2Q0AAALVDQDdDQAAAuENAOENAAAECNED5Q0A5Q0MQHBhbGxldF9yZWZlcmVuZGEUdHlwZXMwVHJhY2tEZXRhaWxzDBxCYWxhbmNlAVUBGE1vbWVudAE4EE5hbWUBwQkAJAEQbmFtZcEJARBOYW1lAAEwbWF4X2RlY2lkaW5nOAEMdTMyAAFAZGVjaXNpb25fZGVwb3NpdFUBARxCYWxhbmNlAAE4cHJlcGFyZV9wZXJpb2Q4ARhNb21lbnQAATxkZWNpc2lvbl9wZXJpb2Q4ARhNb21lbnQAAThjb25maXJtX3BlcmlvZDgBGE1vbWVudAABUG1pbl9lbmFjdG1lbnRfcGVyaW9kOAEYTW9tZW50AAEwbWluX2FwcHJvdmFs6Q0BFEN1cnZlAAEsbWluX3N1cHBvcnTpDQEUQ3VydmUAAOkNDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzFEN1cnZlAAEMQExpbmVhckRlY3JlYXNpbmcMARhsZW5ndGgdBQEcUGVyYmlsbAABFGZsb29yHQUBHFBlcmJpbGwAARBjZWlsHQUBHFBlcmJpbGwAAABEU3RlcHBlZERlY3JlYXNpbmcQARRiZWdpbh0FARxQZXJiaWxsAAEMZW5kHQUBHFBlcmJpbGwAARBzdGVwHQUBHFBlcmJpbGwAARhwZXJpb2QdBQEcUGVyYmlsbAABAChSZWNpcHJvY2FsDAEYZmFjdG9y7Q0BIEZpeGVkSTY0AAEgeF9vZmZzZXTtDQEgRml4ZWRJNjQAASB5X29mZnNldO0NASBGaXhlZEk2NAACAADtDQw0c3BfYXJpdGhtZXRpYyxmaXhlZF9wb2ludCBGaXhlZEk2NAAABADxDQEMaTY0AADxDQAABQwA9Q0MQHBhbGxldF9yZWZlcmVuZGEYcGFsbGV0FEVycm9yCARUAARJAAE4KE5vdE9uZ29pbmcAAARoUmVmZXJlbmR1bSBpcyBub3Qgb25nb2luZy4oSGFzRGVwb3NpdAABBLhSZWZlcmVuZHVtJ3MgZGVjaXNpb24gZGVwb3NpdCBpcyBhbHJlYWR5IHBhaWQuIEJhZFRyYWNrAAIEnFRoZSB0cmFjayBpZGVudGlmaWVyIGdpdmVuIHdhcyBpbnZhbGlkLhBGdWxsAAMEMQFUaGVyZSBhcmUgYWxyZWFkeSBhIGZ1bGwgY29tcGxlbWVudCBvZiByZWZlcmVuZGEgaW4gcHJvZ3Jlc3MgZm9yIHRoaXMgdHJhY2suKFF1ZXVlRW1wdHkABASAVGhlIHF1ZXVlIG9mIHRoZSB0cmFjayBpcyBlbXB0eS40QmFkUmVmZXJlbmR1bQAFBORUaGUgcmVmZXJlbmR1bSBpbmRleCBwcm92aWRlZCBpcyBpbnZhbGlkIGluIHRoaXMgY29udGV4dC4sTm90aGluZ1RvRG8ABgSsVGhlcmUgd2FzIG5vdGhpbmcgdG8gZG8gaW4gdGhlIGFkdmFuY2VtZW50LhxOb1RyYWNrAAcEoE5vIHRyYWNrIGV4aXN0cyBmb3IgdGhlIHByb3Bvc2FsIG9yaWdpbi4oVW5maW5pc2hlZAAIBAEBQW55IGRlcG9zaXQgY2Fubm90IGJlIHJlZnVuZGVkIHVudGlsIGFmdGVyIHRoZSBkZWNpc2lvbiBpcyBvdmVyLjBOb1Blcm1pc3Npb24ACQSoVGhlIGRlcG9zaXQgcmVmdW5kZXIgaXMgbm90IHRoZSBkZXBvc2l0b3IuJE5vRGVwb3NpdAAKBMxUaGUgZGVwb3NpdCBjYW5ub3QgYmUgcmVmdW5kZWQgc2luY2Ugbm9uZSB3YXMgbWFkZS4kQmFkU3RhdHVzAAsE0FRoZSByZWZlcmVuZHVtIHN0YXR1cyBpcyBpbnZhbGlkIGZvciB0aGlzIG9wZXJhdGlvbi5AUHJlaW1hZ2VOb3RFeGlzdAAMBHBUaGUgcHJlaW1hZ2UgZG9lcyBub3QgZXhpc3QuhFByZWltYWdlU3RvcmVkV2l0aERpZmZlcmVudExlbmd0aAANBBUBVGhlIHByZWltYWdlIGlzIHN0b3JlZCB3aXRoIGEgZGlmZmVyZW50IGxlbmd0aCB0aGFuIHRoZSBvbmUgcHJvdmlkZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LvkNDEBwYWxsZXRfd2hpdGVsaXN0GHBhbGxldBRFcnJvcgQEVAABFExVbmF2YWlsYWJsZVByZUltYWdlAAAEyFRoZSBwcmVpbWFnZSBvZiB0aGUgY2FsbCBoYXNoIGNvdWxkIG5vdCBiZSBsb2FkZWQuPFVuZGVjb2RhYmxlQ2FsbAABBHhUaGUgY2FsbCBjb3VsZCBub3QgYmUgZGVjb2RlZC5gSW52YWxpZENhbGxXZWlnaHRXaXRuZXNzAAIE7FRoZSB3ZWlnaHQgb2YgdGhlIGRlY29kZWQgY2FsbCB3YXMgaGlnaGVyIHRoYW4gdGhlIHdpdG5lc3MuUENhbGxJc05vdFdoaXRlbGlzdGVkAAMEdFRoZSBjYWxsIHdhcyBub3Qgd2hpdGVsaXN0ZWQuWENhbGxBbHJlYWR5V2hpdGVsaXN0ZWQABASgVGhlIGNhbGwgd2FzIGFscmVhZHkgd2hpdGVsaXN0ZWQ7IE5vLU9wLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC79DQg8cGFsbGV0X2JvdW50aWVzGEJvdW50eQwkQWNjb3VudElkAQQcQmFsYW5jZQFVASxCbG9ja051bWJlcgE4ABgBIHByb3Bvc2VyBAEkQWNjb3VudElkAAEUdmFsdWVVAQEcQmFsYW5jZQABDGZlZVUBARxCYWxhbmNlAAE8Y3VyYXRvcl9kZXBvc2l0VQEBHEJhbGFuY2UAARBib25kVQEBHEJhbGFuY2UAARhzdGF0dXMBDgGQQm91bnR5U3RhdHVzPEFjY291bnRJZCwgQmxvY2tOdW1iZXI+AAABDgg8cGFsbGV0X2JvdW50aWVzMEJvdW50eVN0YXR1cwgkQWNjb3VudElkAQQsQmxvY2tOdW1iZXIBOAEcIFByb3Bvc2VkAAAAIEFwcHJvdmVkAAEAGEZ1bmRlZAACADxDdXJhdG9yUHJvcG9zZWQEARxjdXJhdG9yBAEkQWNjb3VudElkAAMAGEFjdGl2ZQgBHGN1cmF0b3IEASRBY2NvdW50SWQAASh1cGRhdGVfZHVlOAEsQmxvY2tOdW1iZXIABAA0UGVuZGluZ1BheW91dAwBHGN1cmF0b3IEASRBY2NvdW50SWQAASxiZW5lZmljaWFyeQQBJEFjY291bnRJZAABJHVubG9ja19hdDgBLEJsb2NrTnVtYmVyAAUATEFwcHJvdmVkV2l0aEN1cmF0b3IEARxjdXJhdG9yBAEkQWNjb3VudElkAAYAAAUODExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAACQ4MPHBhbGxldF9ib3VudGllcxhwYWxsZXQURXJyb3IIBFQABEkAATBwSW5zdWZmaWNpZW50UHJvcG9zZXJzQmFsYW5jZQAABHhQcm9wb3NlcidzIGJhbGFuY2UgaXMgdG9vIGxvdy4wSW52YWxpZEluZGV4AAEEkE5vIHByb3Bvc2FsIG9yIGJvdW50eSBhdCB0aGF0IGluZGV4LjBSZWFzb25Ub29CaWcAAgSEVGhlIHJlYXNvbiBnaXZlbiBpcyBqdXN0IHRvbyBiaWcuQFVuZXhwZWN0ZWRTdGF0dXMAAwSAVGhlIGJvdW50eSBzdGF0dXMgaXMgdW5leHBlY3RlZC44UmVxdWlyZUN1cmF0b3IABARcUmVxdWlyZSBib3VudHkgY3VyYXRvci4wSW52YWxpZFZhbHVlAAUEVEludmFsaWQgYm91bnR5IHZhbHVlLihJbnZhbGlkRmVlAAYETEludmFsaWQgYm91bnR5IGZlZS40UGVuZGluZ1BheW91dAAHCGxBIGJvdW50eSBwYXlvdXQgaXMgcGVuZGluZy74VG8gY2FuY2VsIHRoZSBib3VudHksIHlvdSBtdXN0IHVuYXNzaWduIGFuZCBzbGFzaCB0aGUgY3VyYXRvci4kUHJlbWF0dXJlAAgERQFUaGUgYm91bnRpZXMgY2Fubm90IGJlIGNsYWltZWQvY2xvc2VkIGJlY2F1c2UgaXQncyBzdGlsbCBpbiB0aGUgY291bnRkb3duIHBlcmlvZC5QSGFzQWN0aXZlQ2hpbGRCb3VudHkACQQFAVRoZSBib3VudHkgY2Fubm90IGJlIGNsb3NlZCBiZWNhdXNlIGl0IGhhcyBhY3RpdmUgY2hpbGQgYm91bnRpZXMuNFRvb01hbnlRdWV1ZWQACgSYVG9vIG1hbnkgYXBwcm92YWxzIGFyZSBhbHJlYWR5IHF1ZXVlZC4sTm90UHJvcG9zZXIACwScVXNlciBpcyBub3QgdGhlIHByb3Bvc2VyIG9mIHRoZSBib3VudHkuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lg0OCFRwYWxsZXRfY2hpbGRfYm91bnRpZXMsQ2hpbGRCb3VudHkMJEFjY291bnRJZAEEHEJhbGFuY2UBVQEsQmxvY2tOdW1iZXIBOAAUATRwYXJlbnRfYm91bnR5OAEsQm91bnR5SW5kZXgAARR2YWx1ZVUBARxCYWxhbmNlAAEMZmVlVQEBHEJhbGFuY2UAATxjdXJhdG9yX2RlcG9zaXRVAQEcQmFsYW5jZQABGHN0YXR1cxEOAaRDaGlsZEJvdW50eVN0YXR1czxBY2NvdW50SWQsIEJsb2NrTnVtYmVyPgAAEQ4IVHBhbGxldF9jaGlsZF9ib3VudGllc0RDaGlsZEJvdW50eVN0YXR1cwgkQWNjb3VudElkAQQsQmxvY2tOdW1iZXIBOAEQFEFkZGVkAAAAPEN1cmF0b3JQcm9wb3NlZAQBHGN1cmF0b3IEASRBY2NvdW50SWQAAQAYQWN0aXZlBAEcY3VyYXRvcgQBJEFjY291bnRJZAACADRQZW5kaW5nUGF5b3V0DAEcY3VyYXRvcgQBJEFjY291bnRJZAABLGJlbmVmaWNpYXJ5BAEkQWNjb3VudElkAAEkdW5sb2NrX2F0OAEsQmxvY2tOdW1iZXIAAwAAFQ4MVHBhbGxldF9jaGlsZF9ib3VudGllcxhwYWxsZXQURXJyb3IEBFQAAQxUUGFyZW50Qm91bnR5Tm90QWN0aXZlAAAEpFRoZSBwYXJlbnQgYm91bnR5IGlzIG5vdCBpbiBhY3RpdmUgc3RhdGUuZEluc3VmZmljaWVudEJvdW50eUJhbGFuY2UAAQTkVGhlIGJvdW50eSBiYWxhbmNlIGlzIG5vdCBlbm91Z2ggdG8gYWRkIG5ldyBjaGlsZC1ib3VudHkuUFRvb01hbnlDaGlsZEJvdW50aWVzAAIEDQFOdW1iZXIgb2YgY2hpbGQgYm91bnRpZXMgZXhjZWVkcyBsaW1pdCBgTWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudGAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LhkODERwYWxsZXRfYXNzZXRfcmF0ZRhwYWxsZXQURXJyb3IEBFQAAQxAVW5rbm93bkFzc2V0S2luZAAABHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi40QWxyZWFkeUV4aXN0cwABBFEBVGhlIGdpdmVuIGFzc2V0IElEIGFscmVhZHkgaGFzIGFuIGFzc2lnbmVkIGNvbnZlcnNpb24gcmF0ZSBhbmQgY2Fubm90IGJlIHJlLWNyZWF0ZWQuIE92ZXJmbG93AAIEzE92ZXJmbG93IG9jdXJyZWQgd2hlbiBjYWxjdWxhdGluZyB0aGUgaW52ZXJzZSByYXRlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4dDghscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGEJvdW50eRgkQWNjb3VudElkAQQcQmFsYW5jZQFVASRBc3NldEtpbmQBzQQQSGFzaAE8JFBheW1lbnRJZAEoLEJlbmVmaWNpYXJ5AdEEABABKGFzc2V0X2tpbmTNBAEkQXNzZXRLaW5kAAEUdmFsdWVVAQEcQmFsYW5jZQABIG1ldGFkYXRhPAEQSGFzaAABGHN0YXR1cyEOAbxCb3VudHlTdGF0dXM8QWNjb3VudElkLCBQYXltZW50SWQsIEJlbmVmaWNpYXJ5PgAAIQ4IbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczBCb3VudHlTdGF0dXMMJEFjY291bnRJZAEEJFBheW1lbnRJZAEoLEJlbmVmaWNpYXJ5AdEEARhARnVuZGluZ0F0dGVtcHRlZAgBHGN1cmF0b3IEASRBY2NvdW50SWQAAThwYXltZW50X3N0YXR1cyUOAVxQYXltZW50U3RhdGU8UGF5bWVudElkPgAAABhGdW5kZWQEARxjdXJhdG9yBAEkQWNjb3VudElkAAEAREN1cmF0b3JVbmFzc2lnbmVkAAIAGEFjdGl2ZQQBHGN1cmF0b3IEASRBY2NvdW50SWQAAwA8UmVmdW5kQXR0ZW1wdGVkCAEcY3VyYXRvco0BAURPcHRpb248QWNjb3VudElkPgABOHBheW1lbnRfc3RhdHVzJQ4BXFBheW1lbnRTdGF0ZTxQYXltZW50SWQ+AAQAPFBheW91dEF0dGVtcHRlZAwBHGN1cmF0b3IEASRBY2NvdW50SWQAASxiZW5lZmljaWFyedEEASxCZW5lZmljaWFyeQABOHBheW1lbnRfc3RhdHVzJQ4BXFBheW1lbnRTdGF0ZTxQYXltZW50SWQ+AAUAACUOCGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMwUGF5bWVudFN0YXRlBAhJZAEoARAcUGVuZGluZwAAACRBdHRlbXB0ZWQEAQhpZCgBCElkAAEAGEZhaWxlZAACACRTdWNjZWVkZWQAAwAAKQ4IbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllcyxDaGlsZEJvdW50eRQkQWNjb3VudElkAQQcQmFsYW5jZQFVARBIYXNoATwkUGF5bWVudElkASgsQmVuZWZpY2lhcnkB0QQAEAE0cGFyZW50X2JvdW50eTgBLEJvdW50eUluZGV4AAEUdmFsdWVVAQEcQmFsYW5jZQABIG1ldGFkYXRhPAEQSGFzaAABGHN0YXR1cyEOAbxCb3VudHlTdGF0dXM8QWNjb3VudElkLCBQYXltZW50SWQsIEJlbmVmaWNpYXJ5PgAALQ4AAAQIOOAAMQ4UNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQAVQEBKEY6OkJhbGFuY2UAADUODGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMYcGFsbGV0FEVycm9yCARUAARJAAFIMEludmFsaWRJbmRleAAABHxObyBjaGlsZC0vYm91bnR5IGF0IHRoYXQgaW5kZXguMFJlYXNvblRvb0JpZwABBIRUaGUgcmVhc29uIGdpdmVuIGlzIGp1c3QgdG9vIGJpZy4wSW52YWxpZFZhbHVlAAIEcEludmFsaWQgY2hpbGQtL2JvdW50eSB2YWx1ZS5YRmFpbGVkVG9Db252ZXJ0QmFsYW5jZQADCF0BVGhlIGJhbGFuY2Ugb2YgdGhlIGFzc2V0IGtpbmQgaXMgbm90IGNvbnZlcnRpYmxlIHRvIHRoZSBiYWxhbmNlIG9mIHRoZSBuYXRpdmUgYXNzZXQgZm9yhGFzc2VydGluZyB0aGUgb3JpZ2luIHBlcm1pc3Npb25zLkBVbmV4cGVjdGVkU3RhdHVzAAQEnFRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyB1bmV4cGVjdGVkLjhSZXF1aXJlQ3VyYXRvcgAFBHhSZXF1aXJlIGNoaWxkLS9ib3VudHkgY3VyYXRvci5YSW5zdWZmaWNpZW50UGVybWlzc2lvbgAGCEUBVGhlIHNwZW5kIG9yaWdpbiBpcyB2YWxpZCBidXQgdGhlIGFtb3VudCBpdCBpcyBhbGxvd2VkIHRvIHNwZW5kIGlzIGxvd2VyIHRoYW4gdGhlRHJlcXVlc3RlZCBhbW91bnQuMEZ1bmRpbmdFcnJvcgAHBLxUaGVyZSB3YXMgaXNzdWUgd2l0aCBmdW5kaW5nIHRoZSBjaGlsZC0vYm91bnR5LixSZWZ1bmRFcnJvcgAIBMRUaGVyZSB3YXMgaXNzdWUgd2l0aCByZWZ1bmRpbmcgdGhlIGNoaWxkLS9ib3VudHkuLFBheW91dEVycm9yAAkATEZ1bmRpbmdJbmNvbmNsdXNpdmUACgSwQ2hpbGQtL2JvdW50eSBmdW5kaW5nIGhhcyBub3QgY29uY2x1ZGVkIHlldC5IUmVmdW5kSW5jb25jbHVzaXZlAAsErENoaWxkLS9ib3VudHkgcmVmdW5kIGhhcyBub3QgY29uY2x1ZGVkIHlldC5IUGF5b3V0SW5jb25jbHVzaXZlAAwErENoaWxkLS9ib3VudHkgcGF5b3V0IGhhcyBub3QgY29uY2x1ZGVkIHlldC5URmFpbGVkVG9Db252ZXJ0U291cmNlAA0IVQFUaGUgY2hpbGQtL2JvdW50eSBvciBmdW5kaW5nIHNvdXJjZSBhY2NvdW50IGNvdWxkIG5vdCBiZSBkZXJpdmVkIGZyb20gdGhlIGluZGV4ZXMgYW5kLGFzc2V0IGtpbmQuUEhhc0FjdGl2ZUNoaWxkQm91bnR5AA4EIQFUaGUgcGFyZW50IGJvdW50eSBjYW5ub3QgYmUgY2xvc2VkIGJlY2F1c2UgaXQgaGFzIGFjdGl2ZSBjaGlsZCBib3VudGllcy5QVG9vTWFueUNoaWxkQm91bnRpZXMADwQNAU51bWJlciBvZiBjaGlsZCBib3VudGllcyBleGNlZWRzIGxpbWl0IGBNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50YC5cSW5zdWZmaWNpZW50Qm91bnR5VmFsdWUAEAT4VGhlIHBhcmVudCBib3VudHkgdmFsdWUgaXMgbm90IGVub3VnaCB0byBhZGQgbmV3IGNoaWxkLWJvdW50eS5AUHJlaW1hZ2VOb3RFeGlzdAARBHBUaGUgcHJlaW1hZ2UgZG9lcyBub3QgZXhpc3QuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LjkODChwYWxsZXRfZGFwGHBhbGxldBRFcnJvcgQEVAABCEBVbmtub3duQnVkZ2V0S2V5AAAEHQFBIGtleSBpbiB0aGUgYnVkZ2V0IGFsbG9jYXRpb24gZG9lcyBub3QgbWF0Y2ggYW55IHJlZ2lzdGVyZWQgcmVjaXBpZW50LjhCdWRnZXROb3RFeGFjdAABBORCdWRnZXQgYWxsb2NhdGlvbiBwZXJjZW50YWdlcyBkbyBub3Qgc3VtIHRvIGV4YWN0bHkgMTAwJS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuPQ4AAAJBDgBBDgAABAzBAwQdBQBFDghccGFsbGV0X25vbWluYXRpb25fcG9vbHMoUG9vbE1lbWJlcgQEVAAAEAEccG9vbF9pZDgBGFBvb2xJZAABGHBvaW50c1UBATBCYWxhbmNlT2Y8VD4AAXBsYXN0X3JlY29yZGVkX3Jld2FyZF9jb3VudGVyDQUBQFQ6OlJld2FyZENvdW50ZXIAATh1bmJvbmRpbmdfZXJhc0kOAeBCb3VuZGVkQlRyZWVNYXA8RXJhSW5kZXgsIEJhbGFuY2VPZjxUPiwgVDo6TWF4VW5ib25kaW5nPgAASQ4MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgFVAQRTAAAEAE0OAThCVHJlZU1hcDxLLCBWPgAATQ4EIEJUcmVlTWFwCARLATgEVgFVAQAEANkNAAAAUQ4IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzPEJvbmRlZFBvb2xJbm5lcgQEVAAAFAEoY29tbWlzc2lvblUOATRDb21taXNzaW9uPFQ+AAE4bWVtYmVyX2NvdW50ZXI4AQx1MzIAARhwb2ludHNVAQEwQmFsYW5jZU9mPFQ+AAEUcm9sZXNdDgFcUG9vbFJvbGVzPFQ6OkFjY291bnRJZD4AARRzdGF0ZU0FASRQb29sU3RhdGUAAFUOCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyhDb21taXNzaW9uBARUAAAUARxjdXJyZW50ZQUBfE9wdGlvbjwoUGVyYmlsbCwgVDo6QWNjb3VudElkKT4AAQxtYXhVCQE8T3B0aW9uPFBlcmJpbGw+AAEsY2hhbmdlX3JhdGVZDgG8T3B0aW9uPENvbW1pc3Npb25DaGFuZ2VSYXRlPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AATR0aHJvdHRsZV9mcm9t4AFkT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQ+PgABQGNsYWltX3Blcm1pc3Npb25xBQG8T3B0aW9uPENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb248VDo6QWNjb3VudElkPj4AAFkOBBhPcHRpb24EBFQBbQUBCBBOb25lAAAAEFNvbWUEAG0FAAABAABdDghccGFsbGV0X25vbWluYXRpb25fcG9vbHMkUG9vbFJvbGVzBCRBY2NvdW50SWQBBAAQASRkZXBvc2l0b3IEASRBY2NvdW50SWQAARByb290jQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEkbm9taW5hdG9yjQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEcYm91bmNlco0BAURPcHRpb248QWNjb3VudElkPgAAYQ4IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzKFJld2FyZFBvb2wEBFQAABQBcGxhc3RfcmVjb3JkZWRfcmV3YXJkX2NvdW50ZXINBQFAVDo6UmV3YXJkQ291bnRlcgABbGxhc3RfcmVjb3JkZWRfdG90YWxfcGF5b3V0c1UBATBCYWxhbmNlT2Y8VD4AAVR0b3RhbF9yZXdhcmRzX2NsYWltZWRVAQEwQmFsYW5jZU9mPFQ+AAFgdG90YWxfY29tbWlzc2lvbl9wZW5kaW5nVQEBMEJhbGFuY2VPZjxUPgABYHRvdGFsX2NvbW1pc3Npb25fY2xhaW1lZFUBATBCYWxhbmNlT2Y8VD4AAGUOCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBTdWJQb29scwQEVAAACAEYbm9fZXJhaQ4BNFVuYm9uZFBvb2w8VD4AASB3aXRoX2VyYW0OAQEBQm91bmRlZEJUcmVlTWFwPEVyYUluZGV4LCBVbmJvbmRQb29sPFQ+LCBUb3RhbFVuYm9uZGluZ1Bvb2xzPFQ+PgAAaQ4IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzKFVuYm9uZFBvb2wEBFQAAAgBGHBvaW50c1UBATBCYWxhbmNlT2Y8VD4AARxiYWxhbmNlVQEBMEJhbGFuY2VPZjxUPgAAbQ4MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgFpDgRTAAAEAHEOAThCVHJlZU1hcDxLLCBWPgAAcQ4EIEJUcmVlTWFwCARLATgEVgFpDgAEAHUOAAAAdQ4AAAJ5DgB5DgAABAg4aQ4AfQ4MXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldBRFcnJvcgQEVAABmDBQb29sTm90Rm91bmQAAASIQSAoYm9uZGVkKSBwb29sIGlkIGRvZXMgbm90IGV4aXN0LkhQb29sTWVtYmVyTm90Rm91bmQAAQRsQW4gYWNjb3VudCBpcyBub3QgYSBtZW1iZXIuSFJld2FyZFBvb2xOb3RGb3VuZAACBCEBQSByZXdhcmQgcG9vbCBkb2VzIG5vdCBleGlzdC4gSW4gYWxsIGNhc2VzIHRoaXMgaXMgYSBzeXN0ZW0gbG9naWMgZXJyb3IuQFN1YlBvb2xzTm90Rm91bmQAAwRoQSBzdWIgcG9vbCBkb2VzIG5vdCBleGlzdC5kQWNjb3VudEJlbG9uZ3NUb090aGVyUG9vbAAECE0BQW4gYWNjb3VudCBpcyBhbHJlYWR5IGRlbGVnYXRpbmcgaW4gYW5vdGhlciBwb29sLiBBbiBhY2NvdW50IG1heSBvbmx5IGJlbG9uZyB0byBvbmU8cG9vbCBhdCBhIHRpbWUuOEZ1bGx5VW5ib25kaW5nAAUIPQFUaGUgbWVtYmVyIGlzIGZ1bGx5IHVuYm9uZGVkIChhbmQgdGh1cyBjYW5ub3QgYWNjZXNzIHRoZSBib25kZWQgYW5kIHJld2FyZCBwb29sqGFueW1vcmUgdG8sIGZvciBleGFtcGxlLCBjb2xsZWN0IHJld2FyZHMpLkRNYXhVbmJvbmRpbmdMaW1pdAAGBAkBVGhlIG1lbWJlciBjYW5ub3QgdW5ib25kIGZ1cnRoZXIgY2h1bmtzIGR1ZSB0byByZWFjaGluZyB0aGUgbGltaXQuRENhbm5vdFdpdGhkcmF3QW55AAcETQFOb25lIG9mIHRoZSBmdW5kcyBjYW4gYmUgd2l0aGRyYXduIHlldCBiZWNhdXNlIHRoZSBib25kaW5nIGR1cmF0aW9uIGhhcyBub3QgcGFzc2VkLkRNaW5pbXVtQm9uZE5vdE1ldAAIFCkBVGhlIGFtb3VudCBkb2VzIG5vdCBtZWV0IHRoZSBtaW5pbXVtIGJvbmQgdG8gZWl0aGVyIGpvaW4gb3IgY3JlYXRlIGEgcG9vbC4AVQFUaGUgZGVwb3NpdG9yIGNhbiBuZXZlciB1bmJvbmQgdG8gYSB2YWx1ZSBsZXNzIHRoYW4gYFBhbGxldDo6ZGVwb3NpdG9yX21pbl9ib25kYC4gVGhlXQFjYWxsZXIgZG9lcyBub3QgaGF2ZSBub21pbmF0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgcG9vbC4gTWVtYmVycyBjYW4gbmV2ZXIgdW5ib25kIHRvIGFodmFsdWUgYmVsb3cgYE1pbkpvaW5Cb25kYC4wT3ZlcmZsb3dSaXNrAAkEIQFUaGUgdHJhbnNhY3Rpb24gY291bGQgbm90IGJlIGV4ZWN1dGVkIGR1ZSB0byBvdmVyZmxvdyByaXNrIGZvciB0aGUgcG9vbC40Tm90RGVzdHJveWluZwAKCF0BQSBwb29sIG11c3QgYmUgaW4gW2BQb29sU3RhdGU6OkRlc3Ryb3lpbmdgXSBpbiBvcmRlciBmb3IgdGhlIGRlcG9zaXRvciB0byB1bmJvbmQgb3IgZm9yuG90aGVyIG1lbWJlcnMgdG8gYmUgcGVybWlzc2lvbmxlc3NseSB1bmJvbmRlZC4wTm90Tm9taW5hdG9yAAsE9FRoZSBjYWxsZXIgZG9lcyBub3QgaGF2ZSBub21pbmF0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgcG9vbC5UTm90S2lja2VyT3JEZXN0cm95aW5nAAwEPQFFaXRoZXIgYSkgdGhlIGNhbGxlciBjYW5ub3QgbWFrZSBhIHZhbGlkIGtpY2sgb3IgYikgdGhlIHBvb2wgaXMgbm90IGRlc3Ryb3lpbmcuHE5vdE9wZW4ADQRwVGhlIHBvb2wgaXMgbm90IG9wZW4gdG8gam9pbiBNYXhQb29scwAOBIRUaGUgc3lzdGVtIGlzIG1heGVkIG91dCBvbiBwb29scy44TWF4UG9vbE1lbWJlcnMADwScVG9vIG1hbnkgbWVtYmVycyBpbiB0aGUgcG9vbCBvciBzeXN0ZW0uRENhbk5vdENoYW5nZVN0YXRlABAEiFRoZSBwb29scyBzdGF0ZSBjYW5ub3QgYmUgY2hhbmdlZC5URG9lc05vdEhhdmVQZXJtaXNzaW9uABEEuFRoZSBjYWxsZXIgZG9lcyBub3QgaGF2ZSBhZGVxdWF0ZSBwZXJtaXNzaW9ucy5UTWV0YWRhdGFFeGNlZWRzTWF4TGVuABIErE1ldGFkYXRhIGV4Y2VlZHMgW2BDb25maWc6Ok1heE1ldGFkYXRhTGVuYF0kRGVmZW5zaXZlBACBDgE4RGVmZW5zaXZlRXJyb3IAEwgxAVNvbWUgZXJyb3Igb2NjdXJyZWQgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuLiBUaGlzIHNob3VsZCBiZSByZXBvcnRlZCB0byB0aGUwbWFpbnRhaW5lcnMunFBhcnRpYWxVbmJvbmROb3RBbGxvd2VkUGVybWlzc2lvbmxlc3NseQAUBLxQYXJ0aWFsIHVuYm9uZGluZyBub3cgYWxsb3dlZCBwZXJtaXNzaW9ubGVzc2x5LlxNYXhDb21taXNzaW9uUmVzdHJpY3RlZAAVBB0BVGhlIHBvb2wncyBtYXggY29tbWlzc2lvbiBjYW5ub3QgYmUgc2V0IGhpZ2hlciB0aGFuIHRoZSBleGlzdGluZyB2YWx1ZS5gQ29tbWlzc2lvbkV4Y2VlZHNNYXhpbXVtABYE7FRoZSBzdXBwbGllZCBjb21taXNzaW9uIGV4Y2VlZHMgdGhlIG1heCBhbGxvd2VkIGNvbW1pc3Npb24ueENvbW1pc3Npb25FeGNlZWRzR2xvYmFsTWF4aW11bQAXBOhUaGUgc3VwcGxpZWQgY29tbWlzc2lvbiBleGNlZWRzIGdsb2JhbCBtYXhpbXVtIGNvbW1pc3Npb24uZENvbW1pc3Npb25DaGFuZ2VUaHJvdHRsZWQAGAQJAU5vdCBlbm91Z2ggYmxvY2tzIGhhdmUgc3VycGFzc2VkIHNpbmNlIHRoZSBsYXN0IGNvbW1pc3Npb24gdXBkYXRlLnhDb21taXNzaW9uQ2hhbmdlUmF0ZU5vdEFsbG93ZWQAGQQBAVRoZSBzdWJtaXR0ZWQgY2hhbmdlcyB0byBjb21taXNzaW9uIGNoYW5nZSByYXRlIGFyZSBub3QgYWxsb3dlZC5MTm9QZW5kaW5nQ29tbWlzc2lvbgAaBKBUaGVyZSBpcyBubyBwZW5kaW5nIGNvbW1pc3Npb24gdG8gY2xhaW0uWE5vQ29tbWlzc2lvbkN1cnJlbnRTZXQAGwSMTm8gY29tbWlzc2lvbiBjdXJyZW50IGhhcyBiZWVuIHNldC4sUG9vbElkSW5Vc2UAHARkUG9vbCBpZCBjdXJyZW50bHkgaW4gdXNlLjRJbnZhbGlkUG9vbElkAB0EnFBvb2wgaWQgcHJvdmlkZWQgaXMgbm90IGNvcnJlY3QvdXNhYmxlLkxCb25kRXh0cmFSZXN0cmljdGVkAB4E/EJvbmRpbmcgZXh0cmEgaXMgcmVzdHJpY3RlZCB0byB0aGUgZXhhY3QgcGVuZGluZyByZXdhcmQgYW1vdW50LjxOb3RoaW5nVG9BZGp1c3QAHwSwTm8gaW1iYWxhbmNlIGluIHRoZSBFRCBkZXBvc2l0IGZvciB0aGUgcG9vbC44Tm90aGluZ1RvU2xhc2gAIATMTm8gc2xhc2ggcGVuZGluZyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIHRoZSBtZW1iZXIuLFNsYXNoVG9vTG93ACEEqFRoZSBzbGFzaCBhbW91bnQgaXMgdG9vIGxvdyB0byBiZSBhcHBsaWVkLjxBbHJlYWR5TWlncmF0ZWQAIgQVAVRoZSBwb29sIG9yIG1lbWJlciBkZWxlZ2F0aW9uIGhhcyBhbHJlYWR5IG1pZ3JhdGVkIHRvIGRlbGVnYXRlIHN0YWtlLixOb3RNaWdyYXRlZAAjBBUBVGhlIHBvb2wgb3IgbWVtYmVyIGRlbGVnYXRpb24gaGFzIG5vdCBtaWdyYXRlZCB5ZXQgdG8gZGVsZWdhdGUgc3Rha2UuME5vdFN1cHBvcnRlZAAkBPBUaGlzIGNhbGwgaXMgbm90IGFsbG93ZWQgaW4gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHBhbGxldC4oUmVzdHJpY3RlZAAlCFEBQWNjb3VudCBpcyByZXN0cmljdGVkIGZyb20gcGFydGljaXBhdGlvbiBpbiBwb29scy4gVGhpcyBtYXkgaGFwcGVuIGlmIHRoZSBhY2NvdW50IGlzfHN0YWtpbmcgaW4gYW5vdGhlciB3YXkgYWxyZWFkeS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQugQ4MXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldDhEZWZlbnNpdmVFcnJvcgABHGhOb3RFbm91Z2hTcGFjZUluVW5ib25kUG9vbAAAADBQb29sTm90Rm91bmQAAQBIUmV3YXJkUG9vbE5vdEZvdW5kAAIAQFN1YlBvb2xzTm90Rm91bmQAAwBwQm9uZGVkU3Rhc2hLaWxsZWRQcmVtYXR1cmVseQAEAFREZWxlZ2F0aW9uVW5zdXBwb3J0ZWQABQA8U2xhc2hOb3RBcHBsaWVkAAYAAIUODEBwYWxsZXRfYmFnc19saXN0EGxpc3QQTm9kZQgEVAAESQAAFAEIaWQEATBUOjpBY2NvdW50SWQAARBwcmV2jQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEQbmV4dI0BAVBPcHRpb248VDo6QWNjb3VudElkPgABJGJhZ191cHBlcigBIFQ6OlNjb3JlAAEUc2NvcmUoASBUOjpTY29yZQAAiQ4MQHBhbGxldF9iYWdzX2xpc3QQbGlzdAxCYWcIBFQABEkAAAgBEGhlYWSNAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARB0YWlsjQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AACNDgAAAigAkQ4MQHBhbGxldF9iYWdzX2xpc3QYcGFsbGV0FEVycm9yCARUAARJAAEIEExpc3QEAJUOASRMaXN0RXJyb3IAAAS0QSBlcnJvciBpbiB0aGUgbGlzdCBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24uGExvY2tlZAABBNhDb3VsZCBub3QgdXBkYXRlIGEgbm9kZSwgYmVjYXVzZSB0aGUgcGFsbGV0IGlzIGxvY2tlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQulQ4MQHBhbGxldF9iYWdzX2xpc3QQbGlzdCRMaXN0RXJyb3IAARQkRHVwbGljYXRlAAAAKE5vdEhlYXZpZXIAAQAwTm90SW5TYW1lQmFnAAIAME5vZGVOb3RGb3VuZAADABhMb2NrZWQABAAAmQ4AAAQI/PwAnQ4MYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxR0eXBlcyhEZWxlZ2F0aW9uBARUAAAIARRhZ2VudAQBMFQ6OkFjY291bnRJZAABGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4AAKEODGBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmcUdHlwZXMsQWdlbnRMZWRnZXIEBFQAABABFHBheWVlBAEwVDo6QWNjb3VudElkAAE8dG90YWxfZGVsZWdhdGVkUQEBMEJhbGFuY2VPZjxUPgABVHVuY2xhaW1lZF93aXRoZHJhd2Fsc1EBATBCYWxhbmNlT2Y8VD4AATRwZW5kaW5nX3NsYXNoUQEBMEJhbGFuY2VPZjxUPgAApQ4MYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxhwYWxsZXQURXJyb3IEBFQAATAoTm90QWxsb3dlZAAABKhUaGUgYWNjb3VudCBjYW5ub3QgcGVyZm9ybSB0aGlzIG9wZXJhdGlvbi44QWxyZWFkeVN0YWtpbmcAAQS4QW4gZXhpc3Rpbmcgc3Rha2VyIGNhbm5vdCBwZXJmb3JtIHRoaXMgYWN0aW9uLmBJbnZhbGlkUmV3YXJkRGVzdGluYXRpb24AAgTUUmV3YXJkIERlc3RpbmF0aW9uIGNhbm5vdCBiZSBzYW1lIGFzIGBBZ2VudGAgYWNjb3VudC5ESW52YWxpZERlbGVnYXRpb24AAxSIRGVsZWdhdGlvbiBjb25kaXRpb25zIGFyZSBub3QgbWV0LgBMUG9zc2libGUgaXNzdWVzIGFyZWwxKSBDYW5ub3QgZGVsZWdhdGUgdG8gc2VsZiykMikgQ2Fubm90IGRlbGVnYXRlIHRvIG11bHRpcGxlIGRlbGVnYXRlcy44Tm90RW5vdWdoRnVuZHMABAQBAVRoZSBhY2NvdW50IGRvZXMgbm90IGhhdmUgZW5vdWdoIGZ1bmRzIHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi4gTm90QWdlbnQABQSATm90IGFuIGV4aXN0aW5nIGBBZ2VudGAgYWNjb3VudC4wTm90RGVsZWdhdG9yAAYEYE5vdCBhIERlbGVnYXRvciBhY2NvdW50LiBCYWRTdGF0ZQAHBIhTb21lIGNvcnJ1cHRpb24gaW4gaW50ZXJuYWwgc3RhdGUuOFVuYXBwbGllZFNsYXNoAAgE3FVuYXBwbGllZCBwZW5kaW5nIHNsYXNoIHJlc3RyaWN0cyBvcGVyYXRpb24gb24gYEFnZW50YC44Tm90aGluZ1RvU2xhc2gACQSsYEFnZW50YCBoYXMgbm8gcGVuZGluZyBzbGFzaCB0byBiZSBhcHBsaWVkLjhXaXRoZHJhd0ZhaWxlZAAKBLBGYWlsZWQgdG8gd2l0aGRyYXcgYW1vdW50IGZyb20gQ29yZSBTdGFraW5nLjBOb3RTdXBwb3J0ZWQACwScT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBwYWxsZXQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LqkOAAAECK0OOACtDgh4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50SFZhbGlkYXRvclNldFJlcG9ydAQkQWNjb3VudElkAQQAEAFEbmV3X3ZhbGlkYXRvcl9zZXRdAQE4VmVjPEFjY291bnRJZD4AAQhpZDgBDHUzMgABLHBydW5lX3VwX3Rv4AFQT3B0aW9uPFNlc3Npb25JbmRleD4AASBsZWZ0b3ZlclkBARBib29sAACxDgx4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50GHBhbGxldBRFcnJvcgQEVAABFDRYY21TZW5kRmFpbGVkAAAEuEZhaWxlZCB0byBzZW5kIFhDTSBtZXNzYWdlIHRvIHRoZSBSZWxheSBDaGFpbi4wTm90VmFsaWRhdG9yAAEUxFRoZSBvcmlnaW4gYWNjb3VudCBpcyBub3QgYSByZWdpc3RlcmVkIHZhbGlkYXRvci4AWQFPbmx5IGFjY291bnRzIHRoYXQgaGF2ZSBjYWxsZWQgYHZhbGlkYXRlKClgIGNhbiBzZXQgb3IgcHVyZ2Ugc2Vzc2lvbiBrZXlzLiBXaGVuIGNhbGxlZEkBdmlhIGEgc3Rha2luZyBwcm94eSwgdGhlIG9yaWdpbiBpcyB0aGUgZGVsZWdhdGluZyBhY2NvdW50IChzdGFzaCksIHdoaWNoIG11c3QgYmUgYVRyZWdpc3RlcmVkIHZhbGlkYXRvci4sSW52YWxpZEtleXMAAgRFAVRoZSBzZXNzaW9uIGtleXMgY291bGQgbm90IGJlIGRlY29kZWQgYXMgdGhlIGV4cGVjdGVkIFJlbGF5Q2hhaW5TZXNzaW9uS2V5cyB0eXBlLjBJbnZhbGlkUHJvb2YAAwS0SW52YWxpZCBvd25lcnNoaXAgcHJvb2YgZm9yIHRoZSBzZXNzaW9uIGtleXMuPEZlZXNFeGNlZWRlZE1heAAEBLREZWxpdmVyeSBmZWVzIGV4Y2VlZGVkIHRoZSBzcGVjaWZpZWQgbWF4aW11bS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQutQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAG5DgRTAAAEAMEOARhWZWM8VD4AALkOAAAEDAQovQ4AvQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAXQEBGFZlYzxUPgAAwQ4AAAK5DgDFDgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABABdAQEYVmVjPFQ+AADJDgyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHBhbGxldBRFcnJvcgQEVAABDCBGYWxsYmFjawAABIRUcmlnZ2VyaW5nIHRoZSBgRmFsbGJhY2tgIGZhaWxlZC48VW5leHBlY3RlZFBoYXNlAAEEQFVuZXhwZWN0ZWQgcGhhc2UgU25hcHNob3QAAgRkU25hcHNob3Qgd2FzIHVuYXZhaWxhYmxlLgQNAUVycm9yIG9mIHRoZSBwYWxsZXQgdGhhdCBjYW4gYmUgcmV0dXJuZWQgaW4gcmVzcG9uc2UgdG8gZGlzcGF0Y2hlcy7NDhCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzNFZhbGlkU29sdXRpb24AAQgEWAAAAARZAAEAANEODExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB1Q4EUwAABADdDgEYVmVjPFQ+AADVDgAABAgE2Q4A2Q4QkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllchRpbXBsczxQYXJ0aWFsQmFja2luZ3MAAAgBFHRvdGFsVQEBPEV4dGVuZGVkQmFsYW5jZQABHGJhY2tlcnM4AQx1MzIAAN0OAAAC1Q4A4Q4QkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllchRpbXBscxhTdGF0dXMAAQgcT25nb2luZwQAOAEkUGFnZUluZGV4AAAAHE5vdGhpbmcAAQAA5Q4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHpDgRTAAAEAO0OARhWZWM8VD4AAOkOAAAECATRBQDtDgAAAukOAPEOAAAEDDgEOAD1DgyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHNpZ25lZEhTdWJtaXNzaW9uTWV0YWRhdGEEBFQAABQBHGRlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAEMZmVlVQEBMEJhbGFuY2VPZjxUPgABGHJld2FyZFUBATBCYWxhbmNlT2Y8VD4AATRjbGFpbWVkX3Njb3Jl0QUBNEVsZWN0aW9uU2NvcmUAARRwYWdlc/kOAWhCb3VuZGVkVmVjPGJvb2wsIFQ6OlBhZ2VzPgAA+Q4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFZAQRTAAAEAP0OARhWZWM8VD4AAP0OAAACWQEAAQ8QkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhzaWduZWQYcGFsbGV0FEVycm9yBARUAAEkOFBoYXNlTm90U2lnbmVkAAAEYFRoZSBwaGFzZSBpcyBub3Qgc2lnbmVkLiREdXBsaWNhdGUAAQR4VGhlIHN1Ym1pc3Npb24gaXMgYSBkdXBsaWNhdGUuJFF1ZXVlRnVsbAACBEhUaGUgcXVldWUgaXMgZnVsbC4wQmFkUGFnZUluZGV4AAMEgFRoZSBwYWdlIGluZGV4IGlzIG91dCBvZiBib3VuZHMuNE5vdFJlZ2lzdGVyZWQABAR4VGhlIGFjY291bnQgaXMgbm90IHJlZ2lzdGVyZWQuME5vU3VibWlzc2lvbgAFBFBObyBzdWJtaXNzaW9uIGZvdW5kLjBSb3VuZE5vdE92ZXIABgRYUm91bmQgaXMgbm90IHlldCBvdmVyLjhCYWRXaXRuZXNzRGF0YQAHBGhCYWQgd2l0bmVzcyBkYXRhIHByb3ZpZGVkLlBUb29NYW55SW52dWxuZXJhYmxlcwAIBLBUb28gbWFueSBpbnZ1bG5lcmFibGUgYWNjb3VudHMgYXJlIHByb3ZpZGVkLASAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4FDwxQcGFsbGV0X3N0YWtpbmdfYXN5bmMYbGVkZ2VyNFN0YWtpbmdMZWRnZXIEBFQAABABFHN0YXNoBAEwVDo6QWNjb3VudElkAAEUdG90YWxRAQEwQmFsYW5jZU9mPFQ+AAEYYWN0aXZlUQEBMEJhbGFuY2VPZjxUPgABJHVubG9ja2luZ/UGAfBCb3VuZGVkVmVjPFVubG9ja0NodW5rPEJhbGFuY2VPZjxUPj4sIFQ6Ok1heFVubG9ja2luZ0NodW5rcz4AAAkPCFBwYWxsZXRfc3Rha2luZ19hc3luYyxOb21pbmF0aW9ucwQEVAAADAEcdGFyZ2V0c70OAbRCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgTWF4Tm9taW5hdGlvbnNPZjxUPj4AATBzdWJtaXR0ZWRfaW44ASBFcmFJbmRleAABKHN1cHByZXNzZWRZAQEQYm9vbAAADQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jNEFjdGl2ZUVyYUluZm8AAAgBFGluZGV4OAEgRXJhSW5kZXgAARRzdGFydPwBLE9wdGlvbjx1NjQ+AAARDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAcwEUwAABAC1CQEYVmVjPFQ+AAAVDwgoc3Bfc3Rha2luZ1RQYWdlZEV4cG9zdXJlTWV0YWRhdGEEHEJhbGFuY2UBVQEAEAEUdG90YWxRAQEcQmFsYW5jZQABDG93blEBARxCYWxhbmNlAAE8bm9taW5hdG9yX2NvdW50OAEMdTMyAAEocGFnZV9jb3VudDgBEFBhZ2UAABkPEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0TEJvdW5kZWRFeHBvc3VyZVBhZ2UEBFQAAAQAHQ8BoEV4cG9zdXJlUGFnZTxUOjpBY2NvdW50SWQsIEJhbGFuY2VPZjxUPj4AAB0PCChzcF9zdGFraW5nMEV4cG9zdXJlUGFnZQgkQWNjb3VudElkAQQcQmFsYW5jZQFVAQAIAShwYWdlX3RvdGFsUQEBHEJhbGFuY2UAARhvdGhlcnMhDwGsVmVjPEluZGl2aWR1YWxFeHBvc3VyZTxBY2NvdW50SWQsIEJhbGFuY2U+PgAAIQ8AAAIlDwAlDwgoc3Bfc3Rha2luZ0hJbmRpdmlkdWFsRXhwb3N1cmUIJEFjY291bnRJZAEEHEJhbGFuY2UBVQEACAEMd2hvBAEkQWNjb3VudElkAAEUdmFsdWVRAQEcQmFsYW5jZQAAKQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAE4BFMAAAQAQQQBGFZlYzxUPgAALQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jPEVyYVJld2FyZFBvaW50cwQEVAAACAEUdG90YWw4ASxSZXdhcmRQb2ludAABKGluZGl2aWR1YWwxDwH4Qm91bmRlZEJUcmVlTWFwPFQ6OkFjY291bnRJZCwgUmV3YXJkUG9pbnQsIFQ6Ok1heFZhbGlkYXRvclNldD4AADEPDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfbWFwPEJvdW5kZWRCVHJlZU1hcAwESwEEBFYBOARTAAAEADUPAThCVHJlZU1hcDxLLCBWPgAANQ8EIEJUcmVlTWFwCARLAQQEVgE4AAQAhQUAAAA5DwxQcGFsbGV0X3N0YWtpbmdfYXN5bmMgc2xhc2hpbmc0T2ZmZW5jZVJlY29yZAQkQWNjb3VudElkAQQAFAEgcmVwb3J0ZXKNAQFET3B0aW9uPEFjY291bnRJZD4AATByZXBvcnRlZF9lcmE4ASBFcmFJbmRleAABNGV4cG9zdXJlX3BhZ2U4AQx1MzIAAThzbGFzaF9mcmFjdGlvbh0FARxQZXJiaWxsAAFQcHJpb3Jfc2xhc2hfZnJhY3Rpb24dBQEcUGVyYmlsbAAAPQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAE4BFMAAAQAQQQBGFZlYzxUPgAAQQ8AAAQMOAQ5DwBFDwAABAg4AQcASQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jOFVuYXBwbGllZFNsYXNoBARUAAAUASR2YWxpZGF0b3IEATBUOjpBY2NvdW50SWQAAQxvd25VAQEwQmFsYW5jZU9mPFQ+AAEYb3RoZXJzTQ8BEQFXZWFrQm91bmRlZFZlYzwoVDo6QWNjb3VudElkLCBCYWxhbmNlT2Y8VD4pLCBUOjpNYXhFeHBvc3VyZVBhZ2VTaXplPgABIHJlcG9ydGVyjQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEYcGF5b3V0VQEBMEJhbGFuY2VPZjxUPgAATQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAHFBQRTAAAEAMkFARhWZWM8VD4AAFEPDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB1QYEUwAABADRBgEYVmVjPFQ+AABVDwAABAgdBVUBAFkPCFBwYWxsZXRfc3Rha2luZ19hc3luYzhTbmFwc2hvdFN0YXR1cwQkQWNjb3VudElkAQQBDBxPbmdvaW5nBAAEASRBY2NvdW50SWQAAAAgQ29uc3VtZWQAAQAcV2FpdGluZwACAABdDwxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX3NldDxCb3VuZGVkQlRyZWVTZXQIBFQBBARTAAAEABUNASxCVHJlZVNldDxUPgAAYQ8QUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQsUHJ1bmluZ1N0ZXAAASRARXJhc1N0YWtlcnNQYWdlZAAAAExFcmFzU3Rha2Vyc092ZXJ2aWV3AAEASEVyYXNWYWxpZGF0b3JQcmVmcwACADhDbGFpbWVkUmV3YXJkcwADAExFcmFzVmFsaWRhdG9yUmV3YXJkAAQAQEVyYXNSZXdhcmRQb2ludHMABQBMU2luZ2xlRW50cnlDbGVhbnVwcwAGAExWYWxpZGF0b3JTbGFzaEluRXJhAAcAcEVyYXNWYWxpZGF0b3JJbmNlbnRpdmVXZWlnaHQACAAAZQ8QUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQURXJyb3IEBFQAAZg0Tm90Q29udHJvbGxlcgAABGROb3QgYSBjb250cm9sbGVyIGFjY291bnQuIE5vdFN0YXNoAAEEUE5vdCBhIHN0YXNoIGFjY291bnQuNEFscmVhZHlCb25kZWQAAgRgU3Rhc2ggaXMgYWxyZWFkeSBib25kZWQuNEFscmVhZHlQYWlyZWQAAwR0Q29udHJvbGxlciBpcyBhbHJlYWR5IHBhaXJlZC4wRW1wdHlUYXJnZXRzAAQEYFRhcmdldHMgY2Fubm90IGJlIGVtcHR5LjhEdXBsaWNhdGVJbmRleAAFBEBEdXBsaWNhdGUgaW5kZXguSEludmFsaWRTbGFzaFJlY29yZAAGBFxTbGFzaCByZWNvcmQgbm90IGZvdW5kLkBJbnN1ZmZpY2llbnRCb25kAAcMNQFDYW5ub3QgYm9uZCwgbm9taW5hdGUgb3IgdmFsaWRhdGUgd2l0aCB2YWx1ZSBsZXNzIHRoYW4gdGhlIG1pbmltdW0gZGVmaW5lZCBieT0BZ292ZXJuYW5jZSAoc2VlIGBNaW5WYWxpZGF0b3JCb25kYCBhbmQgYE1pbk5vbWluYXRvckJvbmRgKS4gSWYgdW5ib25kaW5nIGlzIHRoZRUBaW50ZW50aW9uLCBgY2hpbGxgIGZpcnN0IHRvIHJlbW92ZSBvbmUncyByb2xlIGFzIHZhbGlkYXRvci9ub21pbmF0b3IuME5vTW9yZUNodW5rcwAIBJBDYW4gbm90IHNjaGVkdWxlIG1vcmUgdW5sb2NrIGNodW5rcy40Tm9VbmxvY2tDaHVuawAJBKBDYW4gbm90IHJlYm9uZCB3aXRob3V0IHVubG9ja2luZyBjaHVua3MuMEZ1bmRlZFRhcmdldAAKBMhBdHRlbXB0aW5nIHRvIHRhcmdldCBhIHN0YXNoIHRoYXQgc3RpbGwgaGFzIGZ1bmRzLkhJbnZhbGlkRXJhVG9SZXdhcmQACwRYSW52YWxpZCBlcmEgdG8gcmV3YXJkLmhJbnZhbGlkTnVtYmVyT2ZOb21pbmF0aW9ucwAMBHhJbnZhbGlkIG51bWJlciBvZiBub21pbmF0aW9ucy44QWxyZWFkeUNsYWltZWQADQQJAVJld2FyZHMgZm9yIHRoaXMgZXJhIGhhdmUgYWxyZWFkeSBiZWVuIGNsYWltZWQgZm9yIHRoaXMgdmFsaWRhdG9yLixJbnZhbGlkUGFnZQAOBIRObyBub21pbmF0b3JzIGV4aXN0IG9uIHRoaXMgcGFnZS5USW5jb3JyZWN0SGlzdG9yeURlcHRoAA8EwEluY29ycmVjdCBwcmV2aW91cyBoaXN0b3J5IGRlcHRoIGlucHV0IHByb3ZpZGVkLiBCYWRTdGF0ZQAQBDkBSW50ZXJuYWwgc3RhdGUgaGFzIGJlY29tZSBzb21laG93IGNvcnJ1cHRlZCBhbmQgdGhlIG9wZXJhdGlvbiBjYW5ub3QgY29udGludWUuOFRvb01hbnlUYXJnZXRzABEElFRvbyBtYW55IG5vbWluYXRpb24gdGFyZ2V0cyBzdXBwbGllZC4kQmFkVGFyZ2V0ABIEPQFBIG5vbWluYXRpb24gdGFyZ2V0IHdhcyBzdXBwbGllZCB0aGF0IHdhcyBibG9ja2VkIG9yIG90aGVyd2lzZSBub3QgYSB2YWxpZGF0b3IuQENhbm5vdENoaWxsT3RoZXIAEwRVAVRoZSB1c2VyIGhhcyBlbm91Z2ggYm9uZCBhbmQgdGh1cyBjYW5ub3QgYmUgY2hpbGxlZCBmb3JjZWZ1bGx5IGJ5IGFuIGV4dGVybmFsIHBlcnNvbi5EVG9vTWFueU5vbWluYXRvcnMAFAhNAVRoZXJlIGFyZSB0b28gbWFueSBub21pbmF0b3JzIGluIHRoZSBzeXN0ZW0uIEdvdmVybmFuY2UgbmVlZHMgdG8gYWRqdXN0IHRoZSBzdGFraW5ntHNldHRpbmdzIHRvIGtlZXAgdGhpbmdzIHNhZmUgZm9yIHRoZSBydW50aW1lLkRUb29NYW55VmFsaWRhdG9ycwAVCFUBVGhlcmUgYXJlIHRvbyBtYW55IHZhbGlkYXRvciBjYW5kaWRhdGVzIGluIHRoZSBzeXN0ZW0uIEdvdmVybmFuY2UgbmVlZHMgdG8gYWRqdXN0IHRoZdRzdGFraW5nIHNldHRpbmdzIHRvIGtlZXAgdGhpbmdzIHNhZmUgZm9yIHRoZSBydW50aW1lLkBDb21taXNzaW9uVG9vTG93ABYE4ENvbW1pc3Npb24gaXMgdG9vIGxvdy4gTXVzdCBiZSBhdCBsZWFzdCBgTWluQ29tbWlzc2lvbmAuLEJvdW5kTm90TWV0ABcEWFNvbWUgYm91bmQgaXMgbm90IG1ldC5QQ29udHJvbGxlckRlcHJlY2F0ZWQAGAQBAVVzZWQgd2hlbiBhdHRlbXB0aW5nIHRvIHVzZSBkZXByZWNhdGVkIGNvbnRyb2xsZXIgYWNjb3VudCBsb2dpYy5MQ2Fubm90UmVzdG9yZUxlZGdlcgAZBFhDYW5ub3QgcmVzZXQgYSBsZWRnZXIubFJld2FyZERlc3RpbmF0aW9uUmVzdHJpY3RlZAAaBKxQcm92aWRlZCByZXdhcmQgZGVzdGluYXRpb24gaXMgbm90IGFsbG93ZWQuOE5vdEVub3VnaEZ1bmRzABsEnE5vdCBlbm91Z2ggZnVuZHMgYXZhaWxhYmxlIHRvIHdpdGhkcmF3LlxWaXJ0dWFsU3Rha2VyTm90QWxsb3dlZAAcBKhPcGVyYXRpb24gbm90IGFsbG93ZWQgZm9yIHZpcnR1YWwgc3Rha2Vycy48Q2Fubm90UmVhcFN0YXNoAB0E9FN0YXNoIGNvdWxkIG5vdCBiZSByZWFwZWQgYXMgb3RoZXIgcGFsbGV0IG1pZ2h0IGRlcGVuZCBvbiBpdC48QWxyZWFkeU1pZ3JhdGVkAB4ECQFUaGUgc3Rha2Ugb2YgdGhpcyBhY2NvdW50IGlzIGFscmVhZHkgbWlncmF0ZWQgdG8gYEZ1bmdpYmxlYCBob2xkcy40RXJhTm90U3RhcnRlZAAfBFBFcmEgbm90IHlldCBzdGFydGVkLihSZXN0cmljdGVkACAIWQFBY2NvdW50IGlzIHJlc3RyaWN0ZWQgZnJvbSBwYXJ0aWNpcGF0aW9uIGluIHN0YWtpbmcuIFRoaXMgbWF5IGhhcHBlbiBpZiB0aGUgYWNjb3VudCBpc8RzdGFraW5nIGluIGFub3RoZXIgd2F5IGFscmVhZHksIHN1Y2ggYXMgdmlhIHBvb2wudFVuYXBwbGllZFNsYXNoZXNJblByZXZpb3VzRXJhACEILQFVbmFwcGxpZWQgc2xhc2hlcyBpbiB0aGUgcmVjZW50bHkgY29uY2x1ZGVkIGVyYSBpcyBibG9ja2luZyB0aGlzIG9wZXJhdGlvbi6YU2VlIGBDYWxsOjphcHBseV9zbGFzaGAgdG8gYXBwbHkgdGhlbS44RXJhTm90UHJ1bmFibGUAIgSQVGhlIGVyYSBpcyBub3QgZWxpZ2libGUgZm9yIHBydW5pbmcuOENhbmNlbGxlZFNsYXNoACMEzFRoZSBzbGFzaCBoYXMgYmVlbiBjYW5jZWxsZWQgYW5kIGNhbm5vdCBiZSBhcHBsaWVkLkRDb21taXNzaW9uVG9vSGlnaAAkBPhDb21taXNzaW9uIGlzIGhpZ2hlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gYE1heENvbW1pc3Npb25gLlRPcHRpbXVtR3JlYXRlclRoYW5DYXAAJQTMT3B0aW11bSBzZWxmLXN0YWtlIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gaGFyZCBjYXAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmkPCFBwYWxsZXRfc3Rha2luZ19hc3luYyRSZXdhcmRQb3QAAQgcR2VuZXJhbAQAbQ8BKFJld2FyZEtpbmQAAAAMRXJhCAA4ASBFcmFJbmRleAAAbQ8BKFJld2FyZEtpbmQAAQAAbQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jKFJld2FyZEtpbmQAAQg0U3Rha2VyUmV3YXJkcwAAAEhWYWxpZGF0b3JTZWxmU3Rha2UAAQAAcQ8MUHBhbGxldF9zdGFraW5nX2FzeW5jGHJld2FyZExFcmFSZXdhcmRBbGxvY2F0aW9uBBxCYWxhbmNlAVUBAAgBOHN0YWtlcl9yZXdhcmRzVQEBHEJhbGFuY2UAAUx2YWxpZGF0b3JfaW5jZW50aXZlVQEBHEJhbGFuY2UAAHUPAAAECAg4AHkPDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBfQ8EUwAABACBDwEYVmVjPFQ+AAB9Dwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc1BSaW5nQ29tbWl0bWVudFJlY29yZAQEVAAAEAEQcm9vdB0HATBNZW1iZXJzT2Y8VD4AASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAASxzb3VyY2VfdGltZSgBDHU2NAABPHNvdXJjZV9zZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAACBDwAAAn0PAIUPDHxpbmRpdl9wYWxsZXRfbWVtYmVyc19zdWJzY3JpYmVyFHR5cGVzTFJpbmdDb2xsZWN0aW9uU3RhdGUIKE1heE1pc3NpbmcAKE1heERlbGV0ZWQAABABKHJpbmdfY291bnQ4AQx1MzIAATxuZXh0X3JpbmdfaW5kZXg4AQx1MzIAATxtaXNzaW5nX2luZGljZXOJDwGsQm91bmRlZEJUcmVlTWFwPFJpbmdJbmRleCwgdTMyLCBNYXhNaXNzaW5nPgABPGRlbGV0ZWRfaW5kaWNlc5EPAZhCb3VuZGVkQlRyZWVTZXQ8UmluZ0luZGV4LCBNYXhEZWxldGVkPgAAiQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgE4BFMAAAQAjQ8BOEJUcmVlTWFwPEssIFY+AACNDwQgQlRyZWVNYXAIBEsBOARWATgABAC1CQAAAJEPDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAE4BFMAAAQAlQ8BLEJUcmVlU2V0PFQ+AACVDwQgQlRyZWVTZXQEBFQBOAAEAEEEAAAAmQ8MfGluZGl2X3BhbGxldF9tZW1iZXJzX3N1YnNjcmliZXIUdHlwZXNIU3Vic2NyaXB0aW9uU3RhdHVzAAEMIEluYWN0aXZlAAAAGEFjdGl2ZQQBXGluaXRpYWxpemVkX2F0X3NlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIAAQAoVGVybWluYXRlZAACAACdDwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc1hVcGRhdGVzUHJvY2Vzc2luZ1N0YXRlAAAMAVxsYXN0X3Byb2Nlc3NlZF9zZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAFgbGFzdF9iYXRjaF9yZWNlaXZlZF90aW1lKAEMdTY0AAFgbGFzdF9yZXBsYXlfcmVxdWVzdF90aW1lKAEMdTY0AAChDwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc0BOb3RpZmllckVuZHBvaW50AAAIASBsb2NhdGlvbv0BASBMb2NhdGlvbgABMHBhbGxldF9pbmRleAwBCHU4AAClDwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchhwYWxsZXQURXJyb3IEBFQAASQ0WGNtU2VuZEZhaWxlZAAABGBYQ00gbWVzc2FnZSBzZW5kIGZhaWxlZC5QU3Vic2NyaXB0aW9uSW5hY3RpdmUAAQSMU3Vic2NyaXB0aW9uIGlzIGN1cnJlbnRseSBpbmFjdGl2ZS5YU3Vic2NyaXB0aW9uVGVybWluYXRlZAACBJBTdWJzY3JpcHRpb24gaXMgaW4gdGVybWluYXRlZCBzdGF0ZS5kU3Vic2NyaXB0aW9uQWxyZWFkeUFjdGl2ZQADBC0BU3Vic2NyaXB0aW9uIGlzIGFjdGl2ZSB3aXRoIGEgZGlmZmVyZW50IHNlcXVlbmNlOyBtdXN0IGJlIHRlcm1pbmF0ZWQgZmlyc3QuSENvbGxlY3Rpb25Ob3RGb3VuZAAEBNBDb2xsZWN0aW9uIHdpdGggdGhlIGdpdmVuIGlkZW50aWZpZXIgaXMgbm90IHRyYWNrZWQuGE5vUm9vdAAFBLRObyByaW5nIHJvb3Qgc3RvcmVkIGZvciB0aGUgZ2l2ZW4gcmluZyBpbmRleC4wSW52YWxpZFByb29mAAYE0FByb29mIGZhaWxlZCB0byB2ZXJpZnkgYWdhaW5zdCBhbnkgc3RvcmVkIHJpbmcgcm9vdC5MSW52YWxpZFJpbmdFeHBvbmVudAAHBAUBU3RvcmVkIHJpbmcgZXhwb25lbnQgZG9lcyBub3QgY29udmVydCBpbnRvIHRoZSBjcnlwdG8ncyBjYXBhY2l0eS5AUmV2aXNpb25Ob3RGb3VuZAAIBPxSZXF1ZXN0ZWQgcmV2aXNpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIHN0b3JlZCBzbGlkaW5nIHdpbmRvdy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuqQ8AAAQICPEDAK0PDGxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHMYcGFsbGV0FEVycm9yBARUAAE4REludmFsaWRDb2xsZWN0aW9uAAAEfFRoZSBjb2xsZWN0aW9uIGlzIG5vdCBhY2NlcHRlZC4wQWNjb3VudEluVXNlAAEEyFRoZSBhY2NvdW50IGlzIGFscmVhZHkgaW4gdXNlIHVuZGVyIGFub3RoZXIgYWxpYXMuOEludmFsaWRBY2NvdW50AAIEZFRoZSBhY2NvdW50IGlzIG5vdCBrbm93bi5YQWxpYXNBY2NvdW50QWxyZWFkeVNldAADBMBBbGlhcyA8LT4gQWNjb3VudCBpcyBhbHJlYWR5IHNldCBhbmQgdXAgdG8gZGF0ZS44VGltZU91dE9mUmFuZ2UABAR4Q2FsbCBpcyB0b28gbGF0ZSBvciB0b28gZWFybHkuNEFsaWFzTm90U3RhbGUABQRFAVRoZSBhbGlhcyBtYXBwaW5nIGlzIG5vdCBzdGFsZTsgdGhlIHJldmlzaW9uIHN0aWxsIG1hdGNoZXMgdGhlIGN1cnJlbnQgcmluZyByb290LjxDbGVhbnVwVG9vRWFybHkABghBAVRoZSBjbGVhbnVwIGdyYWNlIHBlcmlvZCBoYXMgbm90IGVsYXBzZWQgeWV0OyB0aGUgYWxpYXMgaG9sZGVyIHN0aWxsIGhhcyB0aW1lIHRvHHVwZGF0ZS5ESW5jb25zaXN0ZW50U3RhdGUABwRVAVN0b3JhZ2UgaXMgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gdW5kZXIgbm9ybWFsIG9wZXJhdGlvbi40QWxpYXNGZWVVbnNldAAIBOhUaGUgUEdBUyBmZWUgZm9yIGFsaWFzIHJlZ2lzdHJhdGlvbnMgaGFzIG5vdCBiZWVuIHNldCB5ZXQuPFJlcHJvdmVNaXNtYXRjaAAJCB0BVGhlIHByb29mIHBhc3NlZCB0byBgcmVwcm92ZV9hbGlhc19hY2NvdW50YCBwcm9kdWNlZCBhbiBhbGlhcyAvIGNvbnRleHTYdGhhdCBkb2VzIG5vdCBtYXRjaCB0aGUgc3RvcmVkIG1hcHBpbmcgZm9yIHRoZSBzaWduZXIuQFJpbmdSb290Tm90Rm91bmQACgQFAU5vIHJpbmcgcm9vdCB3YXMgZm91bmQgZm9yIHRoZSByZXF1ZXN0ZWQgY29sbGVjdGlvbiAvIHJpbmcgaW5kZXguNFN0YWxlUmV2aXNpb24ACwQBAVRoZSByZXF1ZXN0ZWQgcmluZyByZXZpc2lvbiBpcyBubyBsb25nZXIgYWNjZXB0ZWQgZm9yIHRoaXMgcmluZy4gQmFkUHJvb2YADASMUmluZy1WUkYgcHJvb2YgdmVyaWZpY2F0aW9uIGZhaWxlZC5MSW52YWxpZFJpbmdDYXBhY2l0eQANBPBUaGUgY29uZmlndXJlZCByaW5nIGNhcGFjaXR5IGlzIGludmFsaWQgZm9yIHRoaXMgY29sbGVjdGlvbi4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQusQ8AAAQI+QMIALUPDERpbmRpdl9wYWxsZXRfcGdhcxhwYWxsZXQURXJyb3IEBFQAARA4QWxyZWFkeUNsYWltZWQAAAT4VGhpcyBhbGlhcyBoYXMgYWxyZWFkeSBiZWVuIHVzZWQgdG8gY2xhaW0gUEdBUyBpbiB0aGlzIHBlcmlvZC44UGdhc01pbnRGYWlsZWQAAQTAVGhlIFBHQVMgYXNzZXQgZG9lcyBub3QgZXhpc3Qgb3IgbWludGluZyBmYWlsZWQuPE5vUmVjb3Jkc0ZvckRheQACBDEBYGNsZWFuX3BnYXNfY2xhaW1fcmVjb3Jkc2Agd2FzIGNhbGxlZCB3aXRoIGEgZGF5IHRoYXQgaGFzIG5vIHN0b3JlZCByZWNvcmRzLkhGaXJzdEFsaWFzTWlzbWF0Y2gAAwhVAVRoZSBgZmlyc3RfYWxpYXNgIHBhc3NlZCB0byBgY2xlYW5fcGdhc19jbGFpbV9yZWNvcmRzYCBkb2VzIG5vdCBtYXRjaCB0aGUgZmlyc3QgYWxpYXOIY3VycmVudGx5IHN0b3JlZCB1bmRlciB0aGUgcHJlZml4LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC65Dww0cGFsbGV0X3Jldml2ZQh2bSBDb2RlSW5mbwQEVAAAGAEUb3duZXIEAThBY2NvdW50SWRPZjxUPgABHGRlcG9zaXRRAQEwQmFsYW5jZU9mPFQ+AAEgcmVmY291bnS0AQx1NjQAASBjb2RlX2xlbjgBDHUzMgABJGNvZGVfdHlwZb0PATBCeXRlY29kZVR5cGUAAURiZWhhdmlvdXJfdmVyc2lvbjgBDHUzMgAAvQ8MNHBhbGxldF9yZXZpdmUIdm0wQnl0ZWNvZGVUeXBlAAEIDFB2bQAAAAxFdm0AAQAAwQ8MNHBhbGxldF9yZXZpdmUcc3RvcmFnZSxBY2NvdW50SW5mbwQEVAAACAEwYWNjb3VudF90eXBlxQ8BOEFjY291bnRUeXBlPFQ+AAEQZHVzdDgBDHUzMgAAxQ8MNHBhbGxldF9yZXZpdmUcc3RvcmFnZSxBY2NvdW50VHlwZQQEVAABCCBDb250cmFjdAQAyQ8BPENvbnRyYWN0SW5mbzxUPgAAAAxFT0EAAQAAyQ8MNHBhbGxldF9yZXZpdmUcc3RvcmFnZTBDb250cmFjdEluZm8EBFQAACABHHRyaWVfaWRFBAEYVHJpZUlkAAEkY29kZV9oYXNoPAE0c3BfY29yZTo6SDI1NgABNHN0b3JhZ2VfYnl0ZXM4AQx1MzIAATRzdG9yYWdlX2l0ZW1zOAEMdTMyAAFQc3RvcmFnZV9ieXRlX2RlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAFQc3RvcmFnZV9pdGVtX2RlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAFQc3RvcmFnZV9iYXNlX2RlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAFIaW1tdXRhYmxlX2RhdGFfbGVuOAEMdTMyAADNDwAABAgEBADRDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AANUPDDRwYWxsZXRfcmV2aXZlHHN0b3JhZ2VERGVsZXRpb25RdWV1ZUl0ZW0EBFQAAAgBHHRyaWVfaWRFBAEYVHJpZUlkAAEoYWNjb3VudF9pZAQBOEFjY291bnRJZE9mPFQ+AADZDww0cGFsbGV0X3Jldml2ZRxzdG9yYWdlUERlbGV0aW9uUXVldWVNYW5hZ2VyBARUAAAIAThpbnNlcnRfY291bnRlcjgBDHUzMgABOGRlbGV0ZV9jb3VudGVyOAEMdTMyAADdDxQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW4UQmxvY2sAAGwBQGJhc2VfZmVlX3Blcl9nYXNBBwEQVTI1NgABNGJsb2JfZ2FzX3VzZWRBBwEQVTI1NgABKGRpZmZpY3VsdHlBBwEQVTI1NgABPGV4Y2Vzc19ibG9iX2dhc0EHARBVMjU2AAEoZXh0cmFfZGF0YeEPARRCeXRlcwABJGdhc19saW1pdEEHARBVMjU2AAEgZ2FzX3VzZWRBBwEQVTI1NgABEGhhc2g8ARBIMjU2AAEobG9nc19ibG9vbeUPASBCeXRlczI1NgABFG1pbmVyOQcBHEFkZHJlc3MAASBtaXhfaGFzaDwBEEgyNTYAARRub25jZe0PARhCeXRlczgAARhudW1iZXJBBwEQVTI1NgABYHBhcmVudF9iZWFjb25fYmxvY2tfcm9vdPkEATBPcHRpb248SDI1Nj4AASxwYXJlbnRfaGFzaDwBEEgyNTYAATRyZWNlaXB0c19yb290PAEQSDI1NgABNHJlcXVlc3RzX2hhc2j5BAEwT3B0aW9uPEgyNTY+AAEwc2hhXzNfdW5jbGVzPAEQSDI1NgABEHNpemVBBwEQVTI1NgABKHN0YXRlX3Jvb3Q8ARBIMjU2AAEkdGltZXN0YW1wQQcBEFUyNTYAAUB0b3RhbF9kaWZmaWN1bHR58Q8BME9wdGlvbjxVMjU2PgABMHRyYW5zYWN0aW9uc/UPAWBIYXNoZXNPclRyYW5zYWN0aW9uSW5mb3MAAUR0cmFuc2FjdGlvbnNfcm9vdDwBEEgyNTYAARh1bmNsZXPAASRWZWM8SDI1Nj4AASx3aXRoZHJhd2Fsc0EQATxWZWM8V2l0aGRyYXdhbD4AAUB3aXRoZHJhd2Fsc19yb290PAEQSDI1NgAA4Q8UNHBhbGxldF9yZXZpdmUMZXZtDGFwaRBieXRlFEJ5dGVzAAAEABgBHFZlYzx1OD4AAOUPFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkQYnl0ZSBCeXRlczI1NgAABADpDwEkW3U4OyAyNTZdAADpDwAAAwABAAAMAO0PFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkQYnl0ZRhCeXRlczgAAAQAWQIBHFt1ODsgOF0AAPEPBBhPcHRpb24EBFQBQQcBCBBOb25lAAAAEFNvbWUEAEEHAAABAAD1DxQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5gSGFzaGVzT3JUcmFuc2FjdGlvbkluZm9zAAEIGEhhc2hlcwQAwAEkVmVjPEgyNTY+AAAAQFRyYW5zYWN0aW9uSW5mb3MEAPkPAVBWZWM8VHJhbnNhY3Rpb25JbmZvPgABAAD5DwAAAv0PAP0PFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbjxUcmFuc2FjdGlvbkluZm8AABgBKGJsb2NrX2hhc2g8ARBIMjU2AAEwYmxvY2tfbnVtYmVyQQcBEFUyNTYAARBmcm9tOQcBHEFkZHJlc3MAARBoYXNoPAEQSDI1NgABRHRyYW5zYWN0aW9uX2luZGV4QQcBEFUyNTYAAUh0cmFuc2FjdGlvbl9zaWduZWQBEAFEVHJhbnNhY3Rpb25TaWduZWQAAAEQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbkRUcmFuc2FjdGlvblNpZ25lZAABFFRUcmFuc2FjdGlvbjc3MDJTaWduZWQEAAUQAVRUcmFuc2FjdGlvbjc3MDJTaWduZWQAAABUVHJhbnNhY3Rpb240ODQ0U2lnbmVkBAAdEAFUVHJhbnNhY3Rpb240ODQ0U2lnbmVkAAEAVFRyYW5zYWN0aW9uMTU1OVNpZ25lZAQAJRABVFRyYW5zYWN0aW9uMTU1OVNpZ25lZAACAFRUcmFuc2FjdGlvbjI5MzBTaWduZWQEADEQAVRUcmFuc2FjdGlvbjI5MzBTaWduZWQAAwBcVHJhbnNhY3Rpb25MZWdhY3lTaWduZWQEADkQAVxUcmFuc2FjdGlvbkxlZ2FjeVNpZ25lZAAEAAAFEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5UVHJhbnNhY3Rpb243NzAyU2lnbmVkAAAUAWR0cmFuc2FjdGlvbl83NzAyX3Vuc2lnbmVkCRABXFRyYW5zYWN0aW9uNzcwMlVuc2lnbmVkAAEEckEHARBVMjU2AAEEc0EHARBVMjU2AAEEdvEPATBPcHRpb248VTI1Nj4AASB5X3Bhcml0eUEHARBVMjU2AAAJEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb243NzAyVW5zaWduZWQAACwBLGFjY2Vzc19saXN0DRABKEFjY2Vzc0xpc3QAAUhhdXRob3JpemF0aW9uX2xpc3QVEAFsVmVjPEF1dGhvcml6YXRpb25MaXN0RW50cnk+AAEgY2hhaW5faWRBBwEQVTI1NgABDGdhc0EHARBVMjU2AAEUaW5wdXThDwEUQnl0ZXMAATxtYXhfZmVlX3Blcl9nYXNBBwEQVTI1NgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc0EHARBVMjU2AAEUbm9uY2VBBwEQVTI1NgABCHRvOQcBHEFkZHJlc3MAARhyI3R5cGUMASxUeXBlRWlwNzcwMgABFHZhbHVlQQcBEFUyNTYAAA0QAAACERAAERAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuPEFjY2Vzc0xpc3RFbnRyeQAACAEcYWRkcmVzczkHARxBZGRyZXNzAAEwc3RvcmFnZV9rZXlzwAEkVmVjPEgyNTY+AAAVEAAAAhkQABkQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblhBdXRob3JpemF0aW9uTGlzdEVudHJ5AAAYASBjaGFpbl9pZEEHARBVMjU2AAEcYWRkcmVzczkHARxBZGRyZXNzAAEUbm9uY2VBBwEQVTI1NgABIHlfcGFyaXR5QQcBEFUyNTYAAQRyQQcBEFUyNTYAAQRzQQcBEFUyNTYAAB0QFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblRUcmFuc2FjdGlvbjQ4NDRTaWduZWQAABABZHRyYW5zYWN0aW9uXzQ4NDRfdW5zaWduZWQhEAFcVHJhbnNhY3Rpb240ODQ0VW5zaWduZWQAAQRyQQcBEFUyNTYAAQRzQQcBEFUyNTYAASB5X3Bhcml0eUEHARBVMjU2AAAhEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb240ODQ0VW5zaWduZWQAADABLGFjY2Vzc19saXN0DRABKEFjY2Vzc0xpc3QAAVRibG9iX3ZlcnNpb25lZF9oYXNoZXPAASRWZWM8SDI1Nj4AASBjaGFpbl9pZEEHARBVMjU2AAEMZ2FzQQcBEFUyNTYAARRpbnB1dOEPARRCeXRlcwABUG1heF9mZWVfcGVyX2Jsb2JfZ2FzQQcBEFUyNTYAATxtYXhfZmVlX3Blcl9nYXNBBwEQVTI1NgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc0EHARBVMjU2AAEUbm9uY2VBBwEQVTI1NgABCHRvOQcBHEFkZHJlc3MAARhyI3R5cGUMASxUeXBlRWlwNDg0NAABFHZhbHVlQQcBEFUyNTYAACUQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblRUcmFuc2FjdGlvbjE1NTlTaWduZWQAABQBZHRyYW5zYWN0aW9uXzE1NTlfdW5zaWduZWQpEAFcVHJhbnNhY3Rpb24xNTU5VW5zaWduZWQAAQRyQQcBEFUyNTYAAQRzQQcBEFUyNTYAAQR28Q8BME9wdGlvbjxVMjU2PgABIHlfcGFyaXR5QQcBEFUyNTYAACkQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblxUcmFuc2FjdGlvbjE1NTlVbnNpZ25lZAAALAEsYWNjZXNzX2xpc3QNEAEoQWNjZXNzTGlzdAABIGNoYWluX2lkQQcBEFUyNTYAAQxnYXNBBwEQVTI1NgABJGdhc19wcmljZUEHARBVMjU2AAEUaW5wdXThDwEUQnl0ZXMAATxtYXhfZmVlX3Blcl9nYXNBBwEQVTI1NgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc0EHARBVMjU2AAEUbm9uY2VBBwEQVTI1NgABCHRvLRABPE9wdGlvbjxBZGRyZXNzPgABGHIjdHlwZQwBLFR5cGVFaXAxNTU5AAEUdmFsdWVBBwEQVTI1NgAALRAEGE9wdGlvbgQEVAE5BwEIEE5vbmUAAAAQU29tZQQAOQcAAAEAADEQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblRUcmFuc2FjdGlvbjI5MzBTaWduZWQAABQBZHRyYW5zYWN0aW9uXzI5MzBfdW5zaWduZWQ1EAFcVHJhbnNhY3Rpb24yOTMwVW5zaWduZWQAAQRyQQcBEFUyNTYAAQRzQQcBEFUyNTYAAQR28Q8BME9wdGlvbjxVMjU2PgABIHlfcGFyaXR5QQcBEFUyNTYAADUQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblxUcmFuc2FjdGlvbjI5MzBVbnNpZ25lZAAAJAEsYWNjZXNzX2xpc3QNEAEoQWNjZXNzTGlzdAABIGNoYWluX2lkQQcBEFUyNTYAAQxnYXNBBwEQVTI1NgABJGdhc19wcmljZUEHARBVMjU2AAEUaW5wdXThDwEUQnl0ZXMAARRub25jZUEHARBVMjU2AAEIdG8tEAE8T3B0aW9uPEFkZHJlc3M+AAEYciN0eXBlDAEsVHlwZUVpcDI5MzAAARR2YWx1ZUEHARBVMjU2AAA5EBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb25MZWdhY3lTaWduZWQAABABbHRyYW5zYWN0aW9uX2xlZ2FjeV91bnNpZ25lZD0QAWRUcmFuc2FjdGlvbkxlZ2FjeVVuc2lnbmVkAAEEckEHARBVMjU2AAEEc0EHARBVMjU2AAEEdkEHARBVMjU2AAA9EBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5kVHJhbnNhY3Rpb25MZWdhY3lVbnNpZ25lZAAAIAEgY2hhaW5faWTxDwEwT3B0aW9uPFUyNTY+AAEMZ2FzQQcBEFUyNTYAASRnYXNfcHJpY2VBBwEQVTI1NgABFGlucHV04Q8BFEJ5dGVzAAEUbm9uY2VBBwEQVTI1NgABCHRvLRABPE9wdGlvbjxBZGRyZXNzPgABGHIjdHlwZQwBKFR5cGVMZWdhY3kAARR2YWx1ZUEHARBVMjU2AABBEAAAAkUQAEUQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbihXaXRoZHJhd2FsAAAQARxhZGRyZXNzOQcBHEFkZHJlc3MAARhhbW91bnRBBwEQVTI1NgABFGluZGV4QQcBEFUyNTYAATx2YWxpZGF0b3JfaW5kZXhBBwEQVTI1NgAASRAAAAJNEABNEBA0cGFsbGV0X3Jldml2ZQxldm0oYmxvY2tfaGFzaDhSZWNlaXB0R2FzSW5mbwAACAEgZ2FzX3VzZWRBBwEQVTI1NgABTGVmZmVjdGl2ZV9nYXNfcHJpY2VBBwEQVTI1NgAAURAUNHBhbGxldF9yZXZpdmUMZXZtKGJsb2NrX2hhc2g0YmxvY2tfYnVpbGRlclhFdGhlcmV1bUJsb2NrQnVpbGRlcklSBARUAAAgAWB0cmFuc2FjdGlvbl9yb290X2J1aWxkZXJVEAFgSW5jcmVtZW50YWxIYXNoQnVpbGRlcklSAAFUcmVjZWlwdHNfcm9vdF9idWlsZGVyVRABYEluY3JlbWVudGFsSGFzaEJ1aWxkZXJJUgABQGJhc2VfZmVlX3Blcl9nYXNBBwEQVTI1NgABPGJsb2NrX2dhc19saW1pdEEHARBVMjU2AAEgZ2FzX3VzZWRBBwEQVTI1NgABKGxvZ3NfYmxvb23pDwFYW3U4OyBCTE9PTV9TSVpFX0JZVEVTXQABJHR4X2hhc2hlc8ABJFZlYzxIMjU2PgABIGdhc19pbmZvSRABTFZlYzxSZWNlaXB0R2FzSW5mbz4AAFUQFDRwYWxsZXRfcmV2aXZlDGV2bShibG9ja19oYXNoMGhhc2hfYnVpbGRlcmBJbmNyZW1lbnRhbEhhc2hCdWlsZGVySVIAACgBDGtleRgBHFZlYzx1OD4AASh2YWx1ZV90eXBlDAEIdTgAATRidWlsZGVyX3ZhbHVlGAEcVmVjPHU4PgABFHN0YWNrNAEwVmVjPFZlYzx1OD4+AAEsc3RhdGVfbWFza3NZEAEgVmVjPHUxNj4AASh0cmVlX21hc2tzWRABIFZlYzx1MTY+AAEoaGFzaF9tYXNrc1kQASBWZWM8dTE2PgABSHN0b3JlZF9pbl9kYXRhYmFzZVkBARBib29sAAEccmxwX2J1ZhgBHFZlYzx1OD4AARRpbmRleCgBDHU2NAAAWRAAAALRAwBdEAQYT3B0aW9uBARUATABCBBOb25lAAAAEFNvbWUEADAAAAEAAGEQDDRwYWxsZXRfcmV2aXZlFGRlYnVnNERlYnVnU2V0dGluZ3MAABABdGFsbG93X3VubGltaXRlZF9jb250cmFjdF9zaXplWQEBEGJvb2wAATxieXBhc3NfZWlwXzM2MDdZAQEQYm9vbAABIHB2bV9sb2dzWQEBEGJvb2wAAWRkaXNhYmxlX2V4ZWN1dGlvbl90cmFjaW5nWQEBEGJvb2wAAGUQDDRwYWxsZXRfcmV2aXZlGHBhbGxldBRFcnJvcgQEVAAB6DxJbnZhbGlkU2NoZWR1bGUAAQQZAUludmFsaWQgc2NoZWR1bGUgc3VwcGxpZWQsIGUuZy4gd2l0aCB6ZXJvIHdlaWdodCBvZiBhIGJhc2ljIG9wZXJhdGlvbi5ASW52YWxpZENhbGxGbGFncwACBDUBSW52YWxpZCBjb21iaW5hdGlvbiBvZiBmbGFncyBzdXBwbGllZCB0byBgc2VhbF9jYWxsYCBvciBgc2VhbF9kZWxlZ2F0ZV9jYWxsYC4gT3V0T2ZHYXMAAwS4VGhlIGV4ZWN1dGVkIGNvbnRyYWN0IGV4aGF1c3RlZCBpdHMgZ2FzIGxpbWl0LjhUcmFuc2ZlckZhaWxlZAAECDUBUGVyZm9ybWluZyB0aGUgcmVxdWVzdGVkIHRyYW5zZmVyIGZhaWxlZC4gUHJvYmFibHkgYmVjYXVzZSB0aGVyZSBpc24ndCBlbm91Z2iUZnJlZSBiYWxhbmNlIGluIHRoZSBzZW5kZXIncyBhY2NvdW50LkxNYXhDYWxsRGVwdGhSZWFjaGVkAAUIIQFQZXJmb3JtaW5nIGEgY2FsbCB3YXMgZGVuaWVkIGJlY2F1c2UgdGhlIGNhbGxpbmcgZGVwdGggcmVhY2hlZCB0aGUgbGltaXSUb2Ygd2hhdCBpcyBzcGVjaWZpZWQgaW4gdGhlIHNjaGVkdWxlLkBDb250cmFjdE5vdEZvdW5kAAYEvE5vIGNvbnRyYWN0IHdhcyBmb3VuZCBhdCB0aGUgc3BlY2lmaWVkIGFkZHJlc3MuMENvZGVOb3RGb3VuZAAHBMRObyBjb2RlIGNvdWxkIGJlIGZvdW5kIGF0IHRoZSBzdXBwbGllZCBjb2RlIGhhc2guQENvZGVJbmZvTm90Rm91bmQACATYTm8gY29kZSBpbmZvIGNvdWxkIGJlIGZvdW5kIGF0IHRoZSBzdXBwbGllZCBjb2RlIGhhc2guLE91dE9mQm91bmRzAAkEJQFBIGJ1ZmZlciBvdXRzaWRlIG9mIHNhbmRib3ggbWVtb3J5IHdhcyBwYXNzZWQgdG8gYSBjb250cmFjdCBBUEkgZnVuY3Rpb24uOERlY29kaW5nRmFpbGVkAAoEKQFJbnB1dCBwYXNzZWQgdG8gYSBjb250cmFjdCBBUEkgZnVuY3Rpb24gZmFpbGVkIHRvIGRlY29kZSBhcyBleHBlY3RlZCB0eXBlLjxDb250cmFjdFRyYXBwZWQACwSIQ29udHJhY3QgdHJhcHBlZCBkdXJpbmcgZXhlY3V0aW9uLjRWYWx1ZVRvb0xhcmdlAAwE9EV2ZW50IGJvZHkgb3Igc3RvcmFnZSBpdGVtIGV4Y2VlZHMgW2BsaW1pdHM6OlNUT1JBR0VfQllURVNgXS5gVGVybWluYXRlZFdoaWxlUmVlbnRyYW50AA0IGQFUZXJtaW5hdGlvbiBvZiBhIGNvbnRyYWN0IGlzIG5vdCBhbGxvd2VkIHdoaWxlIHRoZSBjb250cmFjdCBpcyBhbHJlYWR54G9uIHRoZSBjYWxsIHN0YWNrLiBDYW4gYmUgdHJpZ2dlcmVkIGJ5IGBzZWFsX3Rlcm1pbmF0ZWAuOElucHV0Rm9yd2FyZGVkAA4EQQFgc2VhbF9jYWxsYCBmb3J3YXJkZWQgdGhpcyBjb250cmFjdHMgaW5wdXQuIEl0IHRoZXJlZm9yZSBpcyBubyBsb25nZXIgYXZhaWxhYmxlLjRUb29NYW55VG9waWNzAA8EHQFUaGUgYW1vdW50IG9mIHRvcGljcyBwYXNzZWQgdG8gYHNlYWxfZGVwb3NpdF9ldmVudHNgIGV4Y2VlZHMgdGhlIGxpbWl0LkREdXBsaWNhdGVDb250cmFjdAASBMhBIGNvbnRyYWN0IHdpdGggdGhlIHNhbWUgQWNjb3VudElkIGFscmVhZHkgZXhpc3RzLlxUZXJtaW5hdGVkSW5Db25zdHJ1Y3RvcgATDLhBIGNvbnRyYWN0IHNlbGYgZGVzdHJ1Y3RlZCBpbiBpdHMgY29uc3RydWN0b3IuANBUaGlzIGNhbiBiZSB0cmlnZ2VyZWQgYnkgYSBjYWxsIHRvIGBzZWFsX3Rlcm1pbmF0ZWAuQFJlZW50cmFuY2VEZW5pZWQAFAQNAUEgY2FsbCB0cmllZCB0byBpbnZva2UgYSBjb250cmFjdCB0aGF0IGlzIGZsYWdnZWQgYXMgbm9uLXJlZW50cmFudC48UmVlbnRlcmVkUGFsbGV0ABUELQFBIGNvbnRyYWN0IGNhbGxlZCBpbnRvIHRoZSBydW50aW1lIHdoaWNoIHRoZW4gY2FsbGVkIGJhY2sgaW50byB0aGlzIHBhbGxldC5EU3RhdGVDaGFuZ2VEZW5pZWQAFgRNAUEgY29udHJhY3QgYXR0ZW1wdGVkIHRvIGludm9rZSBhIHN0YXRlIG1vZGlmeWluZyBBUEkgd2hpbGUgYmVpbmcgaW4gcmVhZC1vbmx5IG1vZGUucFN0b3JhZ2VEZXBvc2l0Tm90RW5vdWdoRnVuZHMAFwQhAU9yaWdpbiBkb2Vzbid0IGhhdmUgZW5vdWdoIGJhbGFuY2UgdG8gcGF5IHRoZSByZXF1aXJlZCBzdG9yYWdlIGRlcG9zaXRzLnBTdG9yYWdlRGVwb3NpdExpbWl0RXhoYXVzdGVkABgEDQFNb3JlIHN0b3JhZ2Ugd2FzIGNyZWF0ZWQgdGhhbiBhbGxvd2VkIGJ5IHRoZSBzdG9yYWdlIGRlcG9zaXQgbGltaXQuJENvZGVJblVzZQAZBEkBQ29kZSByZW1vdmFsIHdhcyBkZW5pZWQgYmVjYXVzZSB0aGUgY29kZSBpcyBzdGlsbCBpbiB1c2UgYnkgYXQgbGVhc3Qgb25lIGNvbnRyYWN0LkBDb250cmFjdFJldmVydGVkABoQJQFUaGUgY29udHJhY3QgcmFuIHRvIGNvbXBsZXRpb24gYnV0IGRlY2lkZWQgdG8gcmV2ZXJ0IGl0cyBzdG9yYWdlIGNoYW5nZXMuSQFQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZXJyb3IgaXMgb25seSByZXR1cm5lZCBmcm9tIGV4dHJpbnNpY3MuIFdoZW4gY2FsbGVkIGRpcmVjdGx5XQFvciB2aWEgUlBDIGFuIGBPa2Agd2lsbCBiZSByZXR1cm5lZC4gSW4gdGhpcyBjYXNlIHRoZSBjYWxsZXIgbmVlZHMgdG8gaW5zcGVjdCB0aGUgZmxhZ3PEdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSByZXZlcnNpb24gaGFzIHRha2VuIHBsYWNlLjBDb2RlUmVqZWN0ZWQAGxAZAVRoZSBjb250cmFjdCBmYWlsZWQgdG8gY29tcGlsZSBvciBpcyBtaXNzaW5nIHRoZSBjb3JyZWN0IGVudHJ5IHBvaW50cy4AUQFBIG1vcmUgZGV0YWlsZWQgZXJyb3IgY2FuIGJlIGZvdW5kIG9uIHRoZSBub2RlIGNvbnNvbGUgaWYgZGVidWcgbWVzc2FnZXMgYXJlIGVuYWJsZWScYnkgc3VwcGx5aW5nIGAtbHJ1bnRpbWU6OnJldml2ZT1kZWJ1Z2AuMEJsb2JUb29MYXJnZQAcBA0BVGhlIGNvZGUgYmxvYiBzdXBwbGllZCBpcyBsYXJnZXIgdGhhbiBbYGxpbWl0czo6Y29kZTo6QkxPQl9CWVRFU2BdLlBTdGF0aWNNZW1vcnlUb29MYXJnZQAdBOBUaGUgY29udHJhY3QgZGVjbGFyZXMgdG9vIG11Y2ggbWVtb3J5IChybyArIHJ3ICsgc3RhY2spLkhCYXNpY0Jsb2NrVG9vTGFyZ2UAHgT8VGhlIHByb2dyYW0gY29udGFpbnMgYSBiYXNpYyBibG9jayB0aGF0IGlzIGxhcmdlciB0aGFuIGFsbG93ZWQuSEludmFsaWRJbnN0cnVjdGlvbgAfBLBUaGUgcHJvZ3JhbSBjb250YWlucyBhbiBpbnZhbGlkIGluc3RydWN0aW9uLnhNYXhEZWxlZ2F0ZURlcGVuZGVuY2llc1JlYWNoZWQAIAQVAVRoZSBjb250cmFjdCBoYXMgcmVhY2hlZCBpdHMgbWF4aW11bSBudW1iZXIgb2YgZGVsZWdhdGUgZGVwZW5kZW5jaWVzLmhEZWxlZ2F0ZURlcGVuZGVuY3lOb3RGb3VuZAAhBBUBVGhlIGRlcGVuZGVuY3kgd2FzIG5vdCBmb3VuZCBpbiB0aGUgY29udHJhY3QncyBkZWxlZ2F0ZSBkZXBlbmRlbmNpZXMufERlbGVnYXRlRGVwZW5kZW5jeUFscmVhZHlFeGlzdHMAIgT4VGhlIGNvbnRyYWN0IGFscmVhZHkgZGVwZW5kcyBvbiB0aGUgZ2l2ZW4gZGVsZWdhdGUgZGVwZW5kZW5jeS6EQ2Fubm90QWRkU2VsZkFzRGVsZWdhdGVEZXBlbmRlbmN5ACMEKQFDYW4gbm90IGFkZCBhIGRlbGVnYXRlIGRlcGVuZGVuY3kgdG8gdGhlIGNvZGUgaGFzaCBvZiB0aGUgY29udHJhY3QgaXRzZWxmLlRPdXRPZlRyYW5zaWVudFN0b3JhZ2UAJASsQ2FuIG5vdCBhZGQgbW9yZSBkYXRhIHRvIHRyYW5zaWVudCBzdG9yYWdlLjhJbnZhbGlkU3lzY2FsbAAlBFUBVGhlIGNvbnRyYWN0IHRyaWVkIHRvIGNhbGwgYSBzeXNjYWxsIHdoaWNoIGRvZXMgbm90IGV4aXN0IChhdCBpdHMgY3VycmVudCBhcGkgbGV2ZWwpLkxJbnZhbGlkU3RvcmFnZUZsYWdzACYEBQFJbnZhbGlkIHN0b3JhZ2UgZmxhZ3Mgd2VyZSBwYXNzZWQgdG8gb25lIG9mIHRoZSBzdG9yYWdlIHN5c2NhbGxzLjxFeGVjdXRpb25GYWlsZWQAJwQpAVBvbGthVk0gZmFpbGVkIGR1cmluZyBjb2RlIGV4ZWN1dGlvbi4gUHJvYmFibHkgZHVlIHRvIGEgbWFsZm9ybWVkIHByb2dyYW0uXEJhbGFuY2VDb252ZXJzaW9uRmFpbGVkACgEmEZhaWxlZCB0byBjb252ZXJ0IGEgVTI1NiB0byBhIEJhbGFuY2UuWEludmFsaWRJbW11dGFibGVBY2Nlc3MAKggxAUltbXV0YWJsZSBkYXRhIGNhbiBvbmx5IGJlIHNldCBkdXJpbmcgZGVwbG95cyBhbmQgb25seSBiZSByZWFkIGR1cmluZyBjYWxscy41AUFkZGl0aW9uYWxseSwgaXQgaXMgb25seSB2YWxpZCB0byBzZXQgdGhlIGRhdGEgb25jZSBhbmQgaXQgbXVzdCBub3QgYmUgZW1wdHkuPEFjY291bnRVbm1hcHBlZAArDFEBQW4gYEFjY291bnRJRDMyYCBhY2NvdW50IHRyaWVkIHRvIGludGVyYWN0IHdpdGggdGhlIHBhbGxldCB3aXRob3V0IGhhdmluZyBhIG1hcHBpbmcuACkBQ2FsbCBbYFBhbGxldDo6bWFwX2FjY291bnRgXSBpbiBvcmRlciB0byBjcmVhdGUgYSBtYXBwaW5nIGZvciB0aGUgYWNjb3VudC5QQWNjb3VudEFscmVhZHlNYXBwZWQALAS8VHJpZWQgdG8gbWFwIGFuIGFjY291bnQgdGhhdCBpcyBhbHJlYWR5IG1hcHBlZC5kSW52YWxpZEdlbmVyaWNUcmFuc2FjdGlvbgAtBNhUaGUgdHJhbnNhY3Rpb24gdXNlZCB0byBkcnktcnVuIGEgY29udHJhY3QgaXMgaW52YWxpZC5cUmVmY291bnRPdmVyT3JVbmRlcmZsb3cALgTIVGhlIHJlZmNvdW50IG9mIGEgY29kZSBlaXRoZXIgb3ZlciBvciB1bmRlcmZsb3dlZC5wVW5zdXBwb3J0ZWRQcmVjb21waWxlQWRkcmVzcwAvBHxVbnN1cHBvcnRlZCBwcmVjb21waWxlIGFkZHJlc3MuQENhbGxEYXRhVG9vTGFyZ2UAMATAVGhlIGNhbGxkYXRhIGV4Y2VlZHMgW2BsaW1pdHM6OkNBTExEQVRBX0JZVEVTYF0uSFJldHVybkRhdGFUb29MYXJnZQAxBMxUaGUgcmV0dXJuIGRhdGEgZXhjZWVkcyBbYGxpbWl0czo6Q0FMTERBVEFfQllURVNgXS4sSW52YWxpZEp1bXAAMgQ5AUludmFsaWQganVtcCBkZXN0aW5hdGlvbi4gRHluYW1pYyBqdW1wcyBwb2ludHMgdG8gaW52YWxpZCBub3QganVtcGRlc3Qgb3Bjb2RlLjhTdGFja1VuZGVyZmxvdwAzBLhBdHRlbXB0aW5nIHRvIHBvcCBhIHZhbHVlIGZyb20gYW4gZW1wdHkgc3RhY2suNFN0YWNrT3ZlcmZsb3cANAS0QXR0ZW1wdGluZyB0byBwdXNoIGEgdmFsdWUgb250byBhIGZ1bGwgc3RhY2suNFR4RmVlT3ZlcmRyYXcANQwRAVRvbyBtdWNoIGRlcG9zaXQgd2FzIGRyYXduIGZyb20gdGhlIHNoYXJlZCB0eGZlZSBhbmQgZGVwb3NpdCBjcmVkaXQuADEBVGhpcyBoYXBwZW5zIGlmIHRoZSBwYXNzZWQgYGdhc2AgaW5zaWRlIHRoZSBldGhlcmV1bSB0cmFuc2FjdGlvbiBpcyB0b28gbG93LmhFdm1Db25zdHJ1Y3Rvck5vbkVtcHR5RGF0YQA2DNxXaGVuIGNhbGxpbmcgYW4gRVZNIGNvbnN0cnVjdG9yIGBkYXRhYCBoYXMgdG8gYmUgZW1wdHkuAFkBRVZNIGNvbnN0cnVjdG9ycyBkbyBub3QgYWNjZXB0IGRhdGEuIFRoZWlyIGlucHV0IGRhdGEgaXMgcGFydCBvZiB0aGUgY29kZSBibG9iIGl0c2VsZi5YRXZtQ29uc3RydWN0ZWRGcm9tSGFzaAA3EMRUcmllZCB0byBjb25zdHJ1Y3QgYW4gRVZNIGNvbnRyYWN0IHZpYSBjb2RlIGhhc2guACEBRVZNIGNvbnRyYWN0cyBjYW4gb25seSBiZSBpbnN0YW50aWF0ZWQgdmlhIGNvZGUgdXBsb2FkIGFzIG5vIGluaXRjb2RlIGlzQHN0b3JlZCBvbi1jaGFpbi5sU3RvcmFnZVJlZnVuZE5vdEVub3VnaEZ1bmRzADgMIQFUaGUgY29udHJhY3QgZG9lcyBub3QgaGF2ZSBlbm91Z2ggYmFsYW5jZSB0byByZWZ1bmQgdGhlIHN0b3JhZ2UgZGVwb3NpdC4APQFUaGlzIGlzIGEgYnVnIGFuZCBzaG91bGQgbmV2ZXIgaGFwcGVuLiBJdCBtZWFucyB0aGUgYWNjb3VudGluZyBnb3Qgb3V0IG9mIHN5bmMuTFN0b3JhZ2VSZWZ1bmRMb2NrZWQAORBdAVRoaXMgbWVhbnMgdGhlcmUgYXJlIGxvY2tzIG9uIHRoZSBjb250cmFjdHMgc3RvcmFnZSBkZXBvc2l0IHRoYXQgcHJldmVudHMgcmVmdW5kaW5nIGl0LgA9AVRoaXMgd291bGQgYmUgdGhlIGNhc2UgaWYgdGhlIGNvbnRyYWN0IHVzZWQgaXRzIHN0b3JhZ2UgZGVwb3NpdHMgZm9yIGdvdmVybmFuY2X0b3Igb3RoZXIgcGFsbGV0cyB0aGF0IGFsbG93IGNyZWF0aW5nIGxvY2tzIG92ZXIgaGVsZCBiYWxhbmNlLmBQcmVjb21waWxlRGVsZWdhdGVEZW5pZWQAQBD8Q2FsbGVkIGEgcHJlLWNvbXBpbGUgdGhhdCBpcyBub3QgYWxsb3dlZCB0byBiZSBkZWxlZ2F0ZSBjYWxsZWQuACUBU29tZSBwcmUtY29tcGlsZSBmdW5jdGlvbnMgd2lsbCB0cmFwIHRoZSBjYWxsZXIgY29udGV4dCBpZiBiZWluZyBkZWxlZ2F0ZdBjYWxsZWQgb3IgaWYgdGhlaXIgY2FsbGVyIHdhcyBiZWluZyBkZWxlZ2F0ZSBjYWxsZWQuTEVjZHNhUmVjb3ZlcnlGYWlsZWQAQQQ9AUVDRFNBIHB1YmxpYyBrZXkgcmVjb3ZlcnkgZmFpbGVkLiBNb3N0IHByb2JhYmx5IHdyb25nIHJlY292ZXJ5IGlkIG9yIHNpZ25hdHVyZS5IQXV0b01hcHBpbmdFbmFibGVkAEIE4E1hbnVhbCBtYXBwaW5nIGlzIGRpc2FibGVkIHdoZW4gYXV0by1tYXBwaW5nIGlzIGVuYWJsZWQuVFBlbmRpbmdEZXBvc2l0Q2xlYW51cABDDBEBQSBjb250cmFjdCBjYW5ub3QgYmUgY3JlYXRlZCBhdCB0aGlzIGFkZHJlc3M6IGl0IHN0aWxsIGhhcyB1bmNsZWFyZWRNAVtgTmF0aXZlRGVwb3NpdE9mYF0gZW50cmllcyBmcm9tIGEgcHJldmlvdXNseSB0ZXJtaW5hdGVkIGNvbnRyYWN0IHRoYXQgdGhlIGRlbGV0aW9uaHF1ZXVlIGhhcyBub3QgeWV0IGRyYWluZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmkQDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlc0hSZWdpc3RyYXRpb25SZWNvcmQEBFQAAAgBKGNvbGxlY3Rpb25tEAEoQ29sbGVjdGlvbgABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAG0QDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlcyhDb2xsZWN0aW9uAAEIGFBlb3BsZQAAAChQZW9wbGVMaXRlAAEAAHEQDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRhwYWxsZXQURXJyb3IEBFQAAShEQWxyZWFkeVJlZ2lzdGVyZWQAAASgVGhlIGFsaWFzIGhhcyBhbHJlYWR5IHJlZ2lzdGVyZWQgYSBuYW1lLkhDb250cmFjdENhbGxGYWlsZWQAAQj8VGhlIGNvbnRyYWN0IGNhbGwgZmFpbGVkIChub24tcmV2ZXJ0OiBvdXQtb2YtZ2FzLCBsb3ctbGV2ZWwsIG9yUHVuZGVjb2RhYmxlIHJldmVydCkuOENvbnRyYWN0UmV2ZXJ0BAB1EAFARGlzcGF0Y2hlclJldmVydAACCBEBQ29udHJhY3QgcmV2ZXJ0ZWQgd2l0aCBhIHR5cGVkIGVycm9yIGZyb20gYFJvb3RHYXRld2F5RGlzcGF0Y2hlcmAgb3KgdGhlIGBEb3Ruc1BvcENvbnRyb2xsZXJgIGl0IGZvcndhcmRzIHRvLixJbnZhbGlkTmFtZQADCPRUaGUgbmFtZSBpcyBpbnZhbGlkIChlbXB0eSBvciB0b28gbG9uZywgb3IgZG9lcyBub3QgbWF0Y2ggdGhlgHJlcXVpcmVkIEROUy9saXRlLWxhYmVsIGZvcm1hdCkuWE5vQXR0ZXN0YXRpb25BbGxvd2FuY2UABATQVGhlIGF0dGVzdGVyIGhhcyBubyBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgcmVtYWluaW5nLmxJbnZhbGlkQXR0ZXN0YXRpb25TaWduYXR1cmUABQSUVGhlIGNhbmRpZGF0ZSdzIHNpZ25hdHVyZSBpcyBpbnZhbGlkLmxSZXNlcnZhdGlvblNpZ25hdHVyZUV4cGlyZWQABgQdAVRoZSByZXNlcnZhdGlvbiBzaWduYXR1cmUgaXMgb2xkZXIgdGhhbiBbYENvbmZpZzo6TWF4VmFsaWRpdHlTZWNvbmRzYF0ueFJlc2VydmF0aW9uU2lnbmF0dXJlRnJvbUZ1dHVyZQAHCPxUaGUgcmVzZXJ2YXRpb24gc2lnbmF0dXJlIGNsYWltcyB0byBoYXZlIGJlZW4gY3JlYXRlZCBtb3JlIHRoYW7MW2BDb25maWc6Ok1heFZhbGlkaXR5U2Vjb25kc2BdIGFoZWFkIG9mIGNoYWluIHRpbWUuRE5vdExpdGVMYWJlbE93bmVyAAgICQFUaGUgYExpbms6OkxpdGVVc2VybmFtZWAgdGFyZ2V0IGlzIG5vdCBvd25lZCBieSB0aGUgY2FsbGVyIChvciBoYXN4bm8gb24tY2hhaW4gb3duZXJzaGlwIHJlY29yZCkuXERpc3BhdGNoZXJBZGRyZXNzTm90U2V0AAkE+FRoZSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYCBjb250cmFjdCBhZGRyZXNzIGhhcyBub3QgYmVlbiBzZXQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LnUQDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlc0BEaXNwYXRjaGVyUmV2ZXJ0AAEgHE5vdFJvb3QAAAAoTm90R2F0ZXdheQABAEBJbnZhbGlkTGl0ZUxhYmVsAAIAQEludmFsaWRCYXNlTGFiZWwAAwBMTm9BY3RpdmVSZXNlcnZhdGlvbgAEACRRdWV1ZUZ1bGwABQA8QWxyZWFkeVJlc2VydmVkAAYAJE5vdEhvbGRlcgAHAAB5EAx8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbhhwYWxsZXQUVXNhZ2UIHEJhbGFuY2UBVQEsQmxvY2tOdW1iZXIBOAAIARB1c2VkVQEBHEJhbGFuY2UAASBhdF9ibG9jazgBLEJsb2NrTnVtYmVyAAB9EAx8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbhhwYWxsZXQURXJyb3IEBFQAAQgcTm9Vc2FnZQAABIBUaGUgb3JpZ2luIGhhcyBubyB1c2FnZSB0cmFja2VkLhxOb3RaZXJvAAEEWFRoZSB1c2FnZSBpcyBub3QgemVyby4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQugRAMLHBhbGxldF9zdWRvGHBhbGxldBRFcnJvcgQEVAABBCxSZXF1aXJlU3VkbwAABIBTZW5kZXIgbXVzdCBiZSB0aGUgU3VkbyBhY2NvdW50LgRoRXJyb3IgZm9yIHRoZSBTdWRvIHBhbGxldC6FEAhIc3BfY29uc2Vuc3VzX3Nsb3RzMFNsb3REdXJhdGlvbgAABAAoAQx1NjQAAIkQEChzcF9ydW50aW1lHGdlbmVyaWMUYmxvY2skTGF6eUJsb2NrCBhIZWFkZXIBXCRFeHRyaW5zaWMB+QkACAEYaGVhZGVyXAEYSGVhZGVyAAEoZXh0cmluc2ljc40QAVBWZWM8T3BhcXVlRXh0cmluc2ljPgAAjRAAAAKREACREAgoc3BfcnVudGltZTxPcGFxdWVFeHRyaW5zaWMAAAQAGAEcVmVjPHU4PgAAlRAIKHNwX3J1bnRpbWVYRXh0cmluc2ljSW5jbHVzaW9uTW9kZQABCDRBbGxFeHRyaW5zaWNzAAAANE9ubHlJbmhlcmVudHMAAQAAmRAIHHNwX2NvcmU4T3BhcXVlTWV0YWRhdGEAAAQAGAEcVmVjPHU4PgAAnRAEGE9wdGlvbgQEVAGZEAEIEE5vbmUAAAAQU29tZQQAmRAAAAEAAKEQBBhSZXN1bHQIBFQBHQgERQGlEAEICE9rBAAdCAAAAAAMRXJyBAClEAAAAQAApRAMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlgVHJhbnNhY3Rpb25WYWxpZGl0eUVycm9yAAEIHEludmFsaWQEAKkQAUhJbnZhbGlkVHJhbnNhY3Rpb24AAAAcVW5rbm93bgQArRABSFVua25vd25UcmFuc2FjdGlvbgABAACpEAwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhJbnZhbGlkVHJhbnNhY3Rpb24AATQQQ2FsbAAAABxQYXltZW50AAEAGEZ1dHVyZQACABRTdGFsZQADACBCYWRQcm9vZgAEAERBbmNpZW50QmlydGhCbG9jawAFAERFeGhhdXN0c1Jlc291cmNlcwAGABhDdXN0b20EAAwBCHU4AAcAMEJhZE1hbmRhdG9yeQAIAExNYW5kYXRvcnlWYWxpZGF0aW9uAAkAJEJhZFNpZ25lcgAKAFRJbmRldGVybWluYXRlSW1wbGljaXQACwA0VW5rbm93bk9yaWdpbgAMAACtEAwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhVbmtub3duVHJhbnNhY3Rpb24AAQwwQ2Fubm90TG9va3VwAAAATE5vVW5zaWduZWRWYWxpZGF0b3IAAQAYQ3VzdG9tBAAMAQh1OAACAACxEAgwc3BfaW5oZXJlbnRzMEluaGVyZW50RGF0YQAABAEQZGF0YbUQAZRCVHJlZU1hcDxJbmhlcmVudElkZW50aWZpZXIsIFZlYzx1OD4+AAC1EAQgQlRyZWVNYXAIBEsBWQIEVgEYAAQAuRAAAAC5EAAAAr0QAL0QAAAECFkCGADBEAgwc3BfaW5oZXJlbnRzUENoZWNrSW5oZXJlbnRzUmVzdWx0AAAMARBva2F5WQEBEGJvb2wAASxmYXRhbF9lcnJvclkBARBib29sAAEYZXJyb3JzsRABMEluaGVyZW50RGF0YQAAxRAMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlEVHJhbnNhY3Rpb25Tb3VyY2UAAQwcSW5CbG9jawAAABRMb2NhbAABACBFeHRlcm5hbAACAADJEAQYUmVzdWx0CARUAc0QBEUBpRABCAhPawQAzRAAAAAADEVycgQApRAAAAEAAM0QDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5QFZhbGlkVHJhbnNhY3Rpb24AABQBIHByaW9yaXR5KAFMVHJhbnNhY3Rpb25Qcmlvcml0eQABIHJlcXVpcmVzNAFMVmVjPFRyYW5zYWN0aW9uVGFnPgABIHByb3ZpZGVzNAFMVmVjPFRyYW5zYWN0aW9uVGFnPgABJGxvbmdldml0eSgBUFRyYW5zYWN0aW9uTG9uZ2V2aXR5AAEkcHJvcGFnYXRlWQEBEGJvb2wAANEQDChzcF9zZXNzaW9uLHJ1bnRpbWVfYXBpaE9wYXF1ZUdlbmVyYXRlZFNlc3Npb25LZXlzAAAIARBrZXlzGAEcVmVjPHU4PgABFHByb29mGAEcVmVjPHU4PgAA1RAEGE9wdGlvbgQEVAHZEAEIEE5vbmUAAAAQU29tZQQA2RAAAAEAANkQAAAC3RAA3RAAAAQIGGkLAOEQDDRmcmFtZV9zdXBwb3J0OHZpZXdfZnVuY3Rpb25zOFZpZXdGdW5jdGlvbklkAAAIARhwcmVmaXhdAgEgW3U4OyAxNl0AARhzdWZmaXhdAgEgW3U4OyAxNl0AAOUQBBhSZXN1bHQIBFQBGARFAekQAQgIT2sEABgAAAAADEVycgQA6RAAAAEAAOkQDDRmcmFtZV9zdXBwb3J0OHZpZXdfZnVuY3Rpb25zZFZpZXdGdW5jdGlvbkRpc3BhdGNoRXJyb3IAAQw4Tm90SW1wbGVtZW50ZWQAAAAgTm90Rm91bmQEAOEQAThWaWV3RnVuY3Rpb25JZAABABRDb2RlYwACAADtEAxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXNMUnVudGltZURpc3BhdGNoSW5mbwgcQmFsYW5jZQFVARhXZWlnaHQBEQEADAEYd2VpZ2h0EQEBGFdlaWdodAABFGNsYXNz8QcBNERpc3BhdGNoQ2xhc3MAASxwYXJ0aWFsX2ZlZVUBARxCYWxhbmNlAADxEAxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXMoRmVlRGV0YWlscwQcQmFsYW5jZQFVAQAIATRpbmNsdXNpb25fZmVl9RABdE9wdGlvbjxJbmNsdXNpb25GZWU8QmFsYW5jZT4+AAEMdGlwVQEBHEJhbGFuY2UAAPUQBBhPcHRpb24EBFQB+RABCBBOb25lAAAAEFNvbWUEAPkQAAABAAD5EAxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXMwSW5jbHVzaW9uRmVlBBxCYWxhbmNlAVUBAAwBIGJhc2VfZmVlVQEBHEJhbGFuY2UAARxsZW5fZmVlVQEBHEJhbGFuY2UAAUxhZGp1c3RlZF93ZWlnaHRfZmVlVQEBHEJhbGFuY2UAAP0QBBhSZXN1bHQIBFQBAREERQEFEQEICE9rBAABEQAAAAAMRXJyBAAFEQAAAQAAAREAAAKhAwAFEQxAeGNtX3J1bnRpbWVfYXBpcxBmZWVzFEVycm9yAAEYNFVuaW1wbGVtZW50ZWQAAABkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABAExXZWlnaHROb3RDb21wdXRhYmxlAAIATFVuaGFuZGxlZFhjbVZlcnNpb24AAwA0QXNzZXROb3RGb3VuZAAEAChVbnJvdXRhYmxlAAUAAAkRBBhSZXN1bHQIBFQBEQEERQEFEQEICE9rBAARAQAAAAAMRXJyBAAFEQAAAQAADREEGFJlc3VsdAgEVAFVAQRFAQURAQgIT2sEAFUBAAAAAAxFcnIEAAURAAABAAAREQQYUmVzdWx0CARUAW0DBEUBBREBCAhPawQAbQMAAAAADEVycgQABREAAAEAABURBBhSZXN1bHQIBFQBGREERQExEQEICE9rBAAZEQAAAAAMRXJyBAAxEQAAAQAAGREMQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkRDYWxsRHJ5UnVuRWZmZWN0cwQURXZlbnQB5QcAEAFAZXhlY3V0aW9uX3Jlc3VsdCEJAWhEaXNwYXRjaFJlc3VsdFdpdGhQb3N0SW5mbwABOGVtaXR0ZWRfZXZlbnRzHREBKFZlYzxFdmVudD4AASRsb2NhbF94Y20hEQFgT3B0aW9uPFZlcnNpb25lZFhjbTwoKT4+AAE4Zm9yd2FyZGVkX3hjbXMlEQG8VmVjPChWZXJzaW9uZWRMb2NhdGlvbiwgVmVjPFZlcnNpb25lZFhjbTwoKT4+KT4AAB0RAAAC5QcAIREEGE9wdGlvbgQEVAExAgEIEE5vbmUAAAAQU29tZQQAMQIAAAEAACURAAACKREAKREAAAQIqQEtEQAtEQAAAjECADERDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW4URXJyb3IAAQg0VW5pbXBsZW1lbnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAADURBBhSZXN1bHQIBFQBOREERQExEQEICE9rBAA5EQAAAAAMRXJyBAAxEQAAAQAAOREMQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkBYY21EcnlSdW5FZmZlY3RzBBRFdmVudAHlBwAMAUBleGVjdXRpb25fcmVzdWx0pQgBHE91dGNvbWUAAThlbWl0dGVkX2V2ZW50cx0RAShWZWM8RXZlbnQ+AAE4Zm9yd2FyZGVkX3hjbXMlEQG8VmVjPChWZXJzaW9uZWRMb2NhdGlvbiwgVmVjPFZlcnNpb25lZFhjbTwoKT4+KT4AAD0RBBhSZXN1bHQIBFQBBARFAUERAQgIT2sEAAQAAAAADEVycgQAQREAAAEAAEERDEB4Y21fcnVudGltZV9hcGlzLGNvbnZlcnNpb25zFEVycm9yAAEILFVuc3VwcG9ydGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQAARREIDHhjbThWZXJzaW9uZWRBc3NldAABDAhWMwQASQIBOHYzOjpNdWx0aUFzc2V0AAMACFY0BAC9AgEkdjQ6OkFzc2V0AAQACFY1BAAJAwEkdjU6OkFzc2V0AAUAAEkRBBhSZXN1bHQIBFQBWQEERQFNEQEICE9rBABZAQAAAAAMRXJyBABNEQAAAQAATREMQHhjbV9ydW50aW1lX2FwaXM0dHJ1c3RlZF9xdWVyeRRFcnJvcgABCHhWZXJzaW9uZWRBc3NldENvbnZlcnNpb25GYWlsZWQAAACEVmVyc2lvbmVkTG9jYXRpb25Db252ZXJzaW9uRmFpbGVkAAEAAFERBBhSZXN1bHQIBFQBDQwERQFVEQEICE9rBAANDAAAAAAMRXJyBABVEQAAAQAAVREMQHhjbV9ydW50aW1lX2FwaXNIYXV0aG9yaXplZF9hbGlhc2VzFEVycm9yAAEEfExvY2F0aW9uVmVyc2lvbkNvbnZlcnNpb25GYWlsZWQAAAAAWREEGFJlc3VsdAgEVAFZAQRFAVURAQgIT2sEAFkBAAAAAAxFcnIEAFURAAABAABdEQQYUmVzdWx0CARUAW0DBEUBYREBCAhPawQAbQMAAAAADEVycgQAYREAAAEAAGERDDRhc3NldHNfY29tbW9uLHJ1bnRpbWVfYXBpUEZ1bmdpYmxlc0FjY2Vzc0Vycm9yAAEIXEFzc2V0SWRDb252ZXJzaW9uRmFpbGVkAAAAfEFtb3VudFRvQmFsYW5jZUNvbnZlcnNpb25GYWlsZWQAAQAAZREIXGN1bXVsdXNfcHJpbWl0aXZlc19jb3JlNENvbGxhdGlvbkluZm8AABgBPHVwd2FyZF9tZXNzYWdlczQBSFZlYzxVcHdhcmRNZXNzYWdlPgABTGhvcml6b250YWxfbWVzc2FnZXNxCgFgVmVjPE91dGJvdW5kSHJtcE1lc3NhZ2U+AAFMbmV3X3ZhbGlkYXRpb25fY29kZWkRAYxPcHRpb248cmVsYXlfY2hhaW46OlZhbGlkYXRpb25Db2RlPgABbHByb2Nlc3NlZF9kb3dud2FyZF9tZXNzYWdlczgBDHUzMgABOGhybXBfd2F0ZXJtYXJrOAFgcmVsYXlfY2hhaW46OkJsb2NrTnVtYmVyAAEkaGVhZF9kYXRhTAEgSGVhZERhdGEAAGkRBBhPcHRpb24EBFQBbREBCBBOb25lAAAAEFNvbWUEAG0RAAABAABtEQx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlczhWYWxpZGF0aW9uQ29kZQAABAAYARxWZWM8dTg+AABxEQQYUmVzdWx0CARUARAERQHBCQEICE9rBAAQAAAAAAxFcnIEAMEJAAABAAB1EQQYT3B0aW9uBARUAcEJAQgQTm9uZQAAABBTb21lBADBCQAAAQAAeREAAALBCQB9EQQYT3B0aW9uBARUAV0NAQgQTm9uZQAAABBTb21lBABdDQAAAQAAgREMYHN5c3RlbV9wYXJhY2hhaW5zX2NvbW1vbhBhcGlzNEluZmxhdGlvbkluZm8AAAgBIGlzc3VhbmNlhREBXHNwX3J1bnRpbWU6OlBlcnF1aW50aWxsAAEkbmV4dF9taW50XQ0B8Chwb2xrYWRvdF9wcmltaXRpdmVzOjpCYWxhbmNlLCBwb2xrYWRvdF9wcmltaXRpdmVzOjpCYWxhbmNlKQAAhREMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncyxQZXJxdWludGlsbAAABAAoAQx1NjQAAIkRDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXM4Q29udHJhY3RSZXN1bHQIBFIBjREcQmFsYW5jZQFVAQAYATx3ZWlnaHRfY29uc3VtZWQRAQEYV2VpZ2h0AAE8d2VpZ2h0X3JlcXVpcmVkEQEBGFdlaWdodAABPHN0b3JhZ2VfZGVwb3NpdJURAVxTdG9yYWdlRGVwb3NpdDxCYWxhbmNlPgABTG1heF9zdG9yYWdlX2RlcG9zaXSVEQFcU3RvcmFnZURlcG9zaXQ8QmFsYW5jZT4AATBnYXNfY29uc3VtZWRVAQEcQmFsYW5jZQABGHJlc3VsdJkRAWBSZXN1bHQ8UiwgRGlzcGF0Y2hFcnJvcj4AAI0RDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXM8RXhlY1JldHVyblZhbHVlAAAIARRmbGFnc5ERASxSZXR1cm5GbGFncwABEGRhdGEYARxWZWM8dTg+AACREQxIcGFsbGV0X3Jldml2ZV91YXBpFGZsYWdzLFJldHVybkZsYWdzAAAEARBiaXRzOAEMdTMyAACVEQw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzOFN0b3JhZ2VEZXBvc2l0BBxCYWxhbmNlAVUBAQgYUmVmdW5kBABVAQEcQmFsYW5jZQAAABhDaGFyZ2UEAFUBARxCYWxhbmNlAAEAAJkRBBhSZXN1bHQIBFQBjREERQH5BwEICE9rBACNEQAAAAAMRXJyBAD5BwAAAQAAnREMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlcxBDb2RlAAEIGFVwbG9hZAQAGAEcVmVjPHU4PgAAACBFeGlzdGluZwQAPAE0c3BfY29yZTo6SDI1NgABAAChEQw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzOENvbnRyYWN0UmVzdWx0CARSAaURHEJhbGFuY2UBVQEAGAE8d2VpZ2h0X2NvbnN1bWVkEQEBGFdlaWdodAABPHdlaWdodF9yZXF1aXJlZBEBARhXZWlnaHQAATxzdG9yYWdlX2RlcG9zaXSVEQFcU3RvcmFnZURlcG9zaXQ8QmFsYW5jZT4AAUxtYXhfc3RvcmFnZV9kZXBvc2l0lREBXFN0b3JhZ2VEZXBvc2l0PEJhbGFuY2U+AAEwZ2FzX2NvbnN1bWVkVQEBHEJhbGFuY2UAARhyZXN1bHSpEQFgUmVzdWx0PFIsIERpc3BhdGNoRXJyb3I+AAClEQw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzWEluc3RhbnRpYXRlUmV0dXJuVmFsdWUAAAgBGHJlc3VsdI0RATxFeGVjUmV0dXJuVmFsdWUAARBhZGRyOQcBEEgxNjAAAKkRBBhSZXN1bHQIBFQBpREERQH5BwEICE9rBAClEQAAAAAMRXJyBAD5BwAAAQAArREUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuSEdlbmVyaWNUcmFuc2FjdGlvbgAAQAEsYWNjZXNzX2xpc3SxEQFIT3B0aW9uPEFjY2Vzc0xpc3Q+AAFIYXV0aG9yaXphdGlvbl9saXN0FRABbFZlYzxBdXRob3JpemF0aW9uTGlzdEVudHJ5PgABVGJsb2JfdmVyc2lvbmVkX2hhc2hlc8ABJFZlYzxIMjU2PgABFGJsb2JztREBKFZlYzxCeXRlcz4AASBjaGFpbl9pZPEPATBPcHRpb248VTI1Nj4AARBmcm9tLRABPE9wdGlvbjxBZGRyZXNzPgABDGdhc/EPATBPcHRpb248VTI1Nj4AASRnYXNfcHJpY2XxDwEwT3B0aW9uPFUyNTY+AAEUaW5wdXS5EQEsSW5wdXRPckRhdGEAAVBtYXhfZmVlX3Blcl9ibG9iX2dhc/EPATBPcHRpb248VTI1Nj4AATxtYXhfZmVlX3Blcl9nYXPxDwEwT3B0aW9uPFUyNTY+AAFgbWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2Fz8Q8BME9wdGlvbjxVMjU2PgABFG5vbmNl8Q8BME9wdGlvbjxVMjU2PgABCHRvLRABPE9wdGlvbjxBZGRyZXNzPgABGHIjdHlwZcERATBPcHRpb248Qnl0ZT4AARR2YWx1ZfEPATBPcHRpb248VTI1Nj4AALERBBhPcHRpb24EBFQBDRABCBBOb25lAAAAEFNvbWUEAA0QAAABAAC1EQAAAuEPALkRFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbixJbnB1dE9yRGF0YQAACAEUaW5wdXS9EQE0T3B0aW9uPEJ5dGVzPgABEGRhdGG9EQE0T3B0aW9uPEJ5dGVzPgAAvREEGE9wdGlvbgQEVAHhDwEIEE5vbmUAAAAQU29tZQQA4Q8AAAEAAMERBBhPcHRpb24EBFQBxREBCBBOb25lAAAAEFNvbWUEAMURAAABAADFERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpEGJ5dGUQQnl0ZQAABAAMAQh1OAAAyREEGFJlc3VsdAgEVAHNEQRFAdERAQgIT2sEAM0RAAAAAAxFcnIEANERAAABAADNEQw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzPEV0aFRyYW5zYWN0SW5mbwQcQmFsYW5jZQFVAQAUATx3ZWlnaHRfcmVxdWlyZWQRAQEYV2VpZ2h0AAE8c3RvcmFnZV9kZXBvc2l0VQEBHEJhbGFuY2UAAUxtYXhfc3RvcmFnZV9kZXBvc2l0VQEBHEJhbGFuY2UAARxldGhfZ2FzQQcBEFUyNTYAARBkYXRhGAEcVmVjPHU4PgAA0REMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlc0BFdGhUcmFuc2FjdEVycm9yAAEIEERhdGEEABgBHFZlYzx1OD4AAAAcTWVzc2FnZQQAwQkBGFN0cmluZwABAADVERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpJHJwY190eXBlczBEcnlSdW5Db25maWcEGE1vbWVudAEoAAwBSHRpbWVzdGFtcF9vdmVycmlkZfwBOE9wdGlvbjxNb21lbnQ+AAFYcGVyZm9ybV9iYWxhbmNlX2NoZWNrc9kRATBPcHRpb248Ym9vbD4AATxzdGF0ZV9vdmVycmlkZXPdEQFgT3B0aW9uPFN0YXRlT3ZlcnJpZGVTZXQ+AADZEQQYT3B0aW9uBARUAVkBAQgQTm9uZQAAABBTb21lBABZAQAAAQAA3REEGE9wdGlvbgQEVAHhEQEIEE5vbmUAAAAQU29tZQQA4REAAAEAAOERFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbkBTdGF0ZU92ZXJyaWRlU2V0AAAEAOURAYBCVHJlZU1hcDxBZGRyZXNzLCBTdGF0ZU92ZXJyaWRlPgAA5REEIEJUcmVlTWFwCARLATkHBFYB6REABAABEgAAAOkRFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbjRTdGF0ZU92ZXJyaWRlAAAUARxiYWxhbmNl8Q8BME9wdGlvbjxVMjU2PgABFG5vbmNl8Q8BME9wdGlvbjxVMjU2PgABEGNvZGW9EQE0T3B0aW9uPEJ5dGVzPgABHHN0b3JhZ2XtEQFcT3B0aW9uPFN0b3JhZ2VPdmVycmlkZT4AAWhtb3ZlX3ByZWNvbXBpbGVfdG9fYWRkcmVzcy0QATxPcHRpb248QWRkcmVzcz4AAO0RBBhPcHRpb24EBFQB8REBCBBOb25lAAAAEFNvbWUEAPERAAABAADxERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW48U3RvcmFnZU92ZXJyaWRlAAEIFFN0YXRlBAD1EQFQQlRyZWVNYXA8SDI1NiwgSDI1Nj4AAAAkU3RhdGVEaWZmBAD1EQFQQlRyZWVNYXA8SDI1NiwgSDI1Nj4AAQAA9REEIEJUcmVlTWFwCARLATwEVgE8AAQA+REAAAD5EQAAAv0RAP0RAAAECDw8AAESAAACBRIABRIAAAQIOQfpEQAJEgQYUmVzdWx0CARUAUEHBEUB0REBCAhPawQAQQcAAAAADEVycgQA0REAAAEAAA0SBBhSZXN1bHQIBFQBEQEERQHREQEICE9rBAARAQAAAAAMRXJyBADREQAAAQAAERIEGFJlc3VsdAgEVAEVEgRFAfkHAQgIT2sEABUSAAAAAAxFcnIEAPkHAAABAAAVEgw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzVENvZGVVcGxvYWRSZXR1cm5WYWx1ZQQcQmFsYW5jZQFVAQAIASRjb2RlX2hhc2g8ATRzcF9jb3JlOjpIMjU2AAEcZGVwb3NpdFUBARxCYWxhbmNlAAAZEgQYUmVzdWx0CARUAUkBBEUBHRIBCAhPawQASQEAAAAADEVycgQAHRIAAAEAAB0SDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXNMQ29udHJhY3RBY2Nlc3NFcnJvcgABDCxEb2VzbnRFeGlzdAAAAERLZXlEZWNvZGluZ0ZhaWxlZAABAEhTdG9yYWdlV3JpdGVGYWlsZWQEAPkHATREaXNwYXRjaEVycm9yAAIAACESFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzKFRyYWNlclR5cGUAAQwoQ2FsbFRyYWNlcgQAJRIBYE9wdGlvbjxDYWxsVHJhY2VyQ29uZmlnPgAAADhQcmVzdGF0ZVRyYWNlcgQALRIBcE9wdGlvbjxQcmVzdGF0ZVRyYWNlckNvbmZpZz4AAQA8RXhlY3V0aW9uVHJhY2VyBAA1EgF0T3B0aW9uPEV4ZWN1dGlvblRyYWNlckNvbmZpZz4AAgAAJRIEGE9wdGlvbgQEVAEpEgEIEE5vbmUAAAAQU29tZQQAKRIAAAEAACkSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzQENhbGxUcmFjZXJDb25maWcAAAgBJHdpdGhfbG9nc1kBARBib29sAAE0b25seV90b3BfY2FsbFkBARBib29sAAAtEgQYT3B0aW9uBARUATESAQgQTm9uZQAAABBTb21lBAAxEgAAAQAAMRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXNQUHJlc3RhdGVUcmFjZXJDb25maWcAAAwBJGRpZmZfbW9kZVkBARBib29sAAE8ZGlzYWJsZV9zdG9yYWdlWQEBEGJvb2wAATBkaXNhYmxlX2NvZGVZAQEQYm9vbAAANRIEGE9wdGlvbgQEVAE5EgEIEE5vbmUAAAAQU29tZQQAORIAAAEAADkSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzVEV4ZWN1dGlvblRyYWNlckNvbmZpZwAAHAE0ZW5hYmxlX21lbW9yeVkBARBib29sAAE0ZGlzYWJsZV9zdGFja1kBARBib29sAAE8ZGlzYWJsZV9zdG9yYWdlWQEBEGJvb2wAAUhlbmFibGVfcmV0dXJuX2RhdGFZAQEQYm9vbAABXGRpc2FibGVfc3lzY2FsbF9kZXRhaWxzWQEBEGJvb2wAARRsaW1pdPwBLE9wdGlvbjx1NjQ+AAFEbWVtb3J5X3dvcmRfbGltaXQ4AQx1MzIAAD0SAAACQRIAQRIAAAQIOEUSAEUSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzFFRyYWNlAAEMEENhbGwEAEkSASRDYWxsVHJhY2UAAAAgUHJlc3RhdGUEAF0SATRQcmVzdGF0ZVRyYWNlAAEAJEV4ZWN1dGlvbgQAfRIBOEV4ZWN1dGlvblRyYWNlAAIAAEkSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzJENhbGxUcmFjZQAANAEQZnJvbTkHARBIMTYwAAEMZ2FzKAEMdTY0AAEgZ2FzX3VzZWQoAQx1NjQAAQh0bzkHARBIMTYwAAEUaW5wdXThDwEUQnl0ZXMAARhvdXRwdXThDwEUQnl0ZXMAARRlcnJvcnURAThPcHRpb248U3RyaW5nPgABNHJldmVydF9yZWFzb251EQE4T3B0aW9uPFN0cmluZz4AARRjYWxsc00SAThWZWM8Q2FsbFRyYWNlPgABEGxvZ3NREgEwVmVjPENhbGxMb2c+AAEUdmFsdWXxDwEwT3B0aW9uPFUyNTY+AAEkY2FsbF90eXBlWRIBIENhbGxUeXBlAAFAY2hpbGRfY2FsbF9jb3VudDgBDHUzMgAATRIAAAJJEgBREgAAAlUSAFUSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzHENhbGxMb2cAABABHGFkZHJlc3M5BwEQSDE2MAABGHRvcGljc8ABJFZlYzxIMjU2PgABEGRhdGHhDwEUQnl0ZXMAASBwb3NpdGlvbjgBDHUzMgAAWRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXMgQ2FsbFR5cGUAARgQQ2FsbAAAAChTdGF0aWNDYWxsAAEAMERlbGVnYXRlQ2FsbAACABhDcmVhdGUAAwAcQ3JlYXRlMgAEADBTZWxmZGVzdHJ1Y3QABQAAXRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXM0UHJlc3RhdGVUcmFjZQABCCBQcmVzdGF0ZQQAYRIBhEJUcmVlTWFwPEgxNjAsIFByZXN0YXRlVHJhY2VJbmZvPgAAACBEaWZmTW9kZQgBDHByZWESAYRCVHJlZU1hcDxIMTYwLCBQcmVzdGF0ZVRyYWNlSW5mbz4AARBwb3N0YRIBhEJUcmVlTWFwPEgxNjAsIFByZXN0YXRlVHJhY2VJbmZvPgABAABhEgQgQlRyZWVNYXAIBEsBOQcEVgFlEgAEAHUSAAAAZRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXNEUHJlc3RhdGVUcmFjZUluZm8AABABHGJhbGFuY2XxDwEwT3B0aW9uPFUyNTY+AAEUbm9uY2XgASxPcHRpb248dTMyPgABEGNvZGW9EQE0T3B0aW9uPEJ5dGVzPgABHHN0b3JhZ2VpEgF4QlRyZWVNYXA8Qnl0ZXMsIE9wdGlvbjxCeXRlcz4+AABpEgQgQlRyZWVNYXAIBEsB4Q8EVgG9EQAEAG0SAAAAbRIAAAJxEgBxEgAABAjhD70RAHUSAAACeRIAeRIAAAQIOQdlEgB9EhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlczhFeGVjdXRpb25UcmFjZQAAGAEMZ2FzKAEMdTY0AAE8d2VpZ2h0X2NvbnN1bWVkEQEBGFdlaWdodAABQGJhc2VfY2FsbF93ZWlnaHQRAQEYV2VpZ2h0AAEYZmFpbGVkWQEBEGJvb2wAATByZXR1cm5fdmFsdWXhDwEUQnl0ZXMAASxzdHJ1Y3RfbG9nc4ESAUhWZWM8RXhlY3V0aW9uU3RlcD4AAIESAAAChRIAhRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXM0RXhlY3V0aW9uU3RlcAAAHAEMZ2FztAEMdTY0AAEgZ2FzX2Nvc3S0AQx1NjQAASx3ZWlnaHRfY29zdBEBARhXZWlnaHQAARRkZXB0aNEDAQx1MTYAASxyZXR1cm5fZGF0YeEPARRCeXRlcwABFGVycm9ydREBOE9wdGlvbjxTdHJpbmc+AAEQa2luZIkSAURFeGVjdXRpb25TdGVwS2luZAAAiRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXNERXhlY3V0aW9uU3RlcEtpbmQAAQgkRVZNT3Bjb2RlFAEIcGNgAQx1MzIAAQhvcAwBCHU4AAEUc3RhY2u1EQEoVmVjPEJ5dGVzPgABGG1lbW9yebURAShWZWM8Qnl0ZXM+AAEcc3RvcmFnZY0SAchPcHRpb248YWxsb2M6OmNvbGxlY3Rpb25zOjpCVHJlZU1hcDxCeXRlcywgQnl0ZXM+PgAAAChQVk1TeXNjYWxsDAEIb3AMAQh1OAABEGFyZ3ONDgEgVmVjPHU2ND4AASByZXR1cm5lZPwBLE9wdGlvbjx1NjQ+AAEAAI0SBBhPcHRpb24EBFQBkRIBCBBOb25lAAAAEFNvbWUEAJESAAABAACREgQgQlRyZWVNYXAIBEsB4Q8EVgHhDwAEAJUSAAAAlRIAAAKZEgCZEgAABAjhD+EPAJ0SBBhPcHRpb24EBFQBRRIBCBBOb25lAAAAEFNvbWUEAEUSAAABAAChEgQYUmVzdWx0CARUAUUSBEUB0REBCAhPawQARRIAAAAADEVycgQA0REAAAEAAKUSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkkcnBjX3R5cGVzNFRyYWNpbmdDb25maWcAAAQBPHN0YXRlX292ZXJyaWRlc90RAWBPcHRpb248U3RhdGVPdmVycmlkZVNldD4AAKkSBBhSZXN1bHQIBFQBrRIERQGxEgEICE9rBACtEgAAAAAMRXJyBACxEgAAAQAArRIAAAQIVQE4ALESDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXNYQmFsYW5jZUNvbnZlcnNpb25FcnJvcgABCBRWYWx1ZQAAABBEdXN0AAEAALUSCHBuZXh0X2Fzc2V0X2h1Yl9wYXNlb19ydW50aW1lMFJ1bnRpbWVFcnJvcgAByBhTeXN0ZW0EAPEJAXBmcmFtZV9zeXN0ZW06OkVycm9yPFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAgQoBvGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW06OkVycm9yPFJ1bnRpbWU+AAEAIFByZWltYWdlBAClCgF8cGFsbGV0X3ByZWltYWdlOjpFcnJvcjxSdW50aW1lPgAFACRTY2hlZHVsZXIEAL0KAYBwYWxsZXRfc2NoZWR1bGVyOjpFcnJvcjxSdW50aW1lPgAGAFBNdWx0aUJsb2NrTWlncmF0aW9ucwQAwQoBhHBhbGxldF9taWdyYXRpb25zOjpFcnJvcjxSdW50aW1lPgAIACBCYWxhbmNlcwQAFQsBfHBhbGxldF9iYWxhbmNlczo6RXJyb3I8UnVudGltZT4ACgAcVmVzdGluZwQAMQsBeHBhbGxldF92ZXN0aW5nOjpFcnJvcjxSdW50aW1lPgAOABhDbGFpbXMEADULAXRwYWxsZXRfY2xhaW1zOjpFcnJvcjxSdW50aW1lPgAPAERDb2xsYXRvclNlbGVjdGlvbgQATQsBpHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb246OkVycm9yPFJ1bnRpbWU+ABUAHFNlc3Npb24EAG0LAXhwYWxsZXRfc2Vzc2lvbjo6RXJyb3I8UnVudGltZT4AFgAkWGNtcFF1ZXVlBACpCwGkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTo6RXJyb3I8UnVudGltZT4AHgAsUG9sa2Fkb3RYY20EABEMAWhwYWxsZXRfeGNtOjpFcnJvcjxSdW50aW1lPgAfADBNZXNzYWdlUXVldWUEADUMAZBwYWxsZXRfbWVzc2FnZV9xdWV1ZTo6RXJyb3I8UnVudGltZT4AIwBgU25vd2JyaWRnZVN5c3RlbUZyb250ZW5kBAA5DAHEc25vd2JyaWRnZV9wYWxsZXRfc3lzdGVtX2Zyb250ZW5kOjpFcnJvcjxSdW50aW1lPgAkABxVdGlsaXR5BAA9DAF4cGFsbGV0X3V0aWxpdHk6OkVycm9yPFJ1bnRpbWU+ACgAIE11bHRpc2lnBABNDAF8cGFsbGV0X211bHRpc2lnOjpFcnJvcjxSdW50aW1lPgApABRQcm94eQQAcQwBcHBhbGxldF9wcm94eTo6RXJyb3I8UnVudGltZT4AKgAcSW5kaWNlcwQAeQwBeHBhbGxldF9pbmRpY2VzOjpFcnJvcjxSdW50aW1lPgArABhBc3NldHMEAKUMAdxwYWxsZXRfYXNzZXRzOjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTE+ADIAHFVuaXF1ZXMEANEMAXhwYWxsZXRfdW5pcXVlczo6RXJyb3I8UnVudGltZT4AMwAQTmZ0cwQAJQ0BbHBhbGxldF9uZnRzOjpFcnJvcjxSdW50aW1lPgA0ADRGb3JlaWduQXNzZXRzBAA5DQHccGFsbGV0X2Fzc2V0czo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UyPgA1AChQb29sQXNzZXRzBABJDQHccGFsbGV0X2Fzc2V0czo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UzPgA2ADxBc3NldENvbnZlcnNpb24EAFUNAZxwYWxsZXRfYXNzZXRfY29udmVyc2lvbjo6RXJyb3I8UnVudGltZT4ANwA0QXNzZXRzRnJlZXplcgQAYQ0BHQFwYWxsZXRfYXNzZXRzX2ZyZWV6ZXI6OkVycm9yPFJ1bnRpbWUsIHBhbGxldF9hc3NldHNfZnJlZXplcjo6SW5zdGFuY2UxPgA4ADBBc3NldHNIb2xkZXIEAGUNARUBcGFsbGV0X2Fzc2V0c19ob2xkZXI6OkVycm9yPFJ1bnRpbWUsIHBhbGxldF9hc3NldHNfaG9sZGVyOjpJbnN0YW5jZTE+ADkAIFRyZWFzdXJ5BAB5DQF8cGFsbGV0X3RyZWFzdXJ5OjpFcnJvcjxSdW50aW1lPgA8AEBDb252aWN0aW9uVm90aW5nBACtDQGgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nOjpFcnJvcjxSdW50aW1lPgA9ACRSZWZlcmVuZGEEAPUNAYBwYWxsZXRfcmVmZXJlbmRhOjpFcnJvcjxSdW50aW1lPgA+ACRXaGl0ZWxpc3QEAPkNAYBwYWxsZXRfd2hpdGVsaXN0OjpFcnJvcjxSdW50aW1lPgBAACBCb3VudGllcwQACQ4BfHBhbGxldF9ib3VudGllczo6RXJyb3I8UnVudGltZT4AQQA0Q2hpbGRCb3VudGllcwQAFQ4BlHBhbGxldF9jaGlsZF9ib3VudGllczo6RXJyb3I8UnVudGltZT4AQgAkQXNzZXRSYXRlBAAZDgGEcGFsbGV0X2Fzc2V0X3JhdGU6OkVycm9yPFJ1bnRpbWU+AEMASE11bHRpQXNzZXRCb3VudGllcwQANQ4BrHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczo6RXJyb3I8UnVudGltZT4ARAAMRGFwBAA5DgFocGFsbGV0X2RhcDo6RXJyb3I8UnVudGltZT4ARQBIU3RhdGVUcmllTWlncmF0aW9uBABNCQGscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uOjpFcnJvcjxSdW50aW1lPgBGADxOb21pbmF0aW9uUG9vbHMEAH0OAZxwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6RXJyb3I8UnVudGltZT4AUAAkVm90ZXJMaXN0BACRDgH0cGFsbGV0X2JhZ3NfbGlzdDo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2JhZ3NfbGlzdDo6SW5zdGFuY2UxPgBSAEBEZWxlZ2F0ZWRTdGFraW5nBAClDgGgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nOjpFcnJvcjxSdW50aW1lPgBTADxTdGFraW5nUmNDbGllbnQEALEOAbhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQ6OkVycm9yPFJ1bnRpbWU+AFQASE11bHRpQmxvY2tFbGVjdGlvbgQAyQ4B0HBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jazo6RXJyb3I8UnVudGltZT4AVQBgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkBAABDwHwcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpzaWduZWQ6OkVycm9yPFJ1bnRpbWU+AFgAHFN0YWtpbmcEAGUPAZBwYWxsZXRfc3Rha2luZ19hc3luYzo6RXJyb3I8UnVudGltZT4AWQBETWVtYmVyc1N1YnNjcmliZXIEAKUPAbxpbmRpdl9wYWxsZXRfbWVtYmVyc19zdWJzY3JpYmVyOjpFcnJvcjxSdW50aW1lPgBhADRBbGlhc0FjY291bnRzBACtDwGsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzOjpFcnJvcjxSdW50aW1lPgBiABBQZ2FzBAC1DwGEaW5kaXZfcGFsbGV0X3BnYXM6OkVycm9yPFJ1bnRpbWU+AGMAGFJldml2ZQQAZRABdHBhbGxldF9yZXZpdmU6OkVycm9yPFJ1bnRpbWU+AGQAMERvdG5zR2F0ZXdheQQAcRABqGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5OjpFcnJvcjxSdW50aW1lPgCYAERPcmlnaW5SZXN0cmljdGlvbgQAfRABvGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb246OkVycm9yPFJ1bnRpbWU+AJkAEFN1ZG8EAIEQAWxwYWxsZXRfc3Vkbzo6RXJyb3I8UnVudGltZT4A+wAABQEYU3lzdGVtARhTeXN0ZW1QHEFjY291bnQBAQQCBM0HQQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAToIFRoZSBmdWxsIGFjY291bnQgaW5mb3JtYXRpb24gZm9yIGEgcGFydGljdWxhciBhY2NvdW50IElELgA4RXh0cmluc2ljQ291bnQAADgEAAS4IFRvdGFsIGV4dHJpbnNpY3MgY291bnQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgBASW5oZXJlbnRzQXBwbGllZAEAWQEEAASkIFdoZXRoZXIgYWxsIGluaGVyZW50cyBoYXZlIGJlZW4gYXBwbGllZC4ALEJsb2NrV2VpZ2h0AQDZBxgAAAAAAAAEiCBUaGUgY3VycmVudCB3ZWlnaHQgZm9yIHRoZSBibG9jay4AJEJsb2NrU2l6ZQAAOAQADLAgVG90YWwgc2l6ZSAoaW4gYnl0ZXMpIG9mIHRoZSBjdXJyZW50IGJsb2NrLgDIIFRyYWNrcyB0aGUgc2l6ZSBvZiB0aGUgaGVhZGVyIGFuZCBhbGwgZXh0cmluc2ljcy4AJEJsb2NrSGFzaAEBBAU4PIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASYIE1hcCBvZiBibG9jayBudW1iZXJzIHRvIGJsb2NrIGhhc2hlcy4ANEV4dHJpbnNpY0RhdGEBAQQFOBgEAAQ9ASBFeHRyaW5zaWNzIGRhdGEgZm9yIHRoZSBjdXJyZW50IGJsb2NrIChtYXBzIGFuIGV4dHJpbnNpYydzIGluZGV4IHRvIGl0cyBkYXRhKS4AGE51bWJlcgEAOBAAAAAABAkBIFRoZSBjdXJyZW50IGJsb2NrIG51bWJlciBiZWluZyBwcm9jZXNzZWQuIFNldCBieSBgZXhlY3V0ZV9ibG9ja2AuAChQYXJlbnRIYXNoAQA8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHAgSGFzaCBvZiB0aGUgcHJldmlvdXMgYmxvY2suABhEaWdlc3QBAGQEAATwIERpZ2VzdCBvZiB0aGUgY3VycmVudCBibG9jaywgYWxzbyBwYXJ0IG9mIHRoZSBibG9jayBoZWFkZXIuABhFdmVudHMBAN0HBAAcoCBFdmVudHMgZGVwb3NpdGVkIGZvciB0aGUgY3VycmVudCBibG9jay4AHQEgTk9URTogVGhlIGl0ZW0gaXMgdW5ib3VuZCBhbmQgc2hvdWxkIHRoZXJlZm9yZSBuZXZlciBiZSByZWFkIG9uIGNoYWluLtAgSXQgY291bGQgb3RoZXJ3aXNlIGluZmxhdGUgdGhlIFBvViBzaXplIG9mIGEgYmxvY2suAC0BIEV2ZW50cyBoYXZlIGEgbGFyZ2UgaW4tbWVtb3J5IHNpemUuIEJveCB0aGUgZXZlbnRzIHRvIG5vdCBnbyBvdXQtb2YtbWVtb3J5/CBqdXN0IGluIGNhc2Ugc29tZW9uZSBzdGlsbCByZWFkcyB0aGVtIGZyb20gd2l0aGluIHRoZSBydW50aW1lLgAoRXZlbnRDb3VudAEAOBAAAAAABLggVGhlIG51bWJlciBvZiBldmVudHMgaW4gdGhlIGBFdmVudHM8VD5gIGxpc3QuACxFdmVudFRvcGljcwEBBAI8tQkEACglASBNYXBwaW5nIGJldHdlZW4gYSB0b3BpYyAocmVwcmVzZW50ZWQgYnkgVDo6SGFzaCkgYW5kIGEgdmVjdG9yIG9mIGluZGV4ZXOUIG9mIGV2ZW50cyBpbiB0aGUgYDxFdmVudHM8VD4+YCBsaXN0LgBRASBBbGwgdG9waWMgdmVjdG9ycyBoYXZlIGRldGVybWluaXN0aWMgc3RvcmFnZSBsb2NhdGlvbnMgZGVwZW5kaW5nIG9uIHRoZSB0b3BpYy4gVGhpc0UBIGFsbG93cyBsaWdodC1jbGllbnRzIHRvIGxldmVyYWdlIHRoZSBjaGFuZ2VzIHRyaWUgc3RvcmFnZSB0cmFja2luZyBtZWNoYW5pc20gYW5k5CBpbiBjYXNlIG9mIGNoYW5nZXMgZmV0Y2ggdGhlIGxpc3Qgb2YgZXZlbnRzIG9mIGludGVyZXN0LgBZASBUaGUgdmFsdWUgaGFzIHRoZSB0eXBlIGAoQmxvY2tOdW1iZXJGb3I8VD4sIEV2ZW50SW5kZXgpYCBiZWNhdXNlIGlmIHdlIHVzZWQgb25seSBqdXN0TQEgdGhlIGBFdmVudEluZGV4YCB0aGVuIGluIGNhc2UgaWYgdGhlIHRvcGljIGhhcyB0aGUgc2FtZSBjb250ZW50cyBvbiB0aGUgbmV4dCBibG9jawEBIG5vIG5vdGlmaWNhdGlvbiB3aWxsIGJlIHRyaWdnZXJlZCB0aHVzIHRoZSBldmVudCBtaWdodCBiZSBsb3N0LgBITGFzdFJ1bnRpbWVVcGdyYWRlAAC5CQQABFUBIFN0b3JlcyB0aGUgYHNwZWNfdmVyc2lvbmAgYW5kIGBzcGVjX25hbWVgIG9mIHdoZW4gdGhlIGxhc3QgcnVudGltZSB1cGdyYWRlIGhhcHBlbmVkLgBEQmxvY2tzVGlsbFVwZ3JhZGUAAAwEAATsIE51bWJlciBvZiBibG9ja3MgdGlsbCB0aGUgcGVuZGluZyBjb2RlIHVwZ3JhZGUgaXMgYXBwbGllZC4AVFVwZ3JhZGVkVG9VMzJSZWZDb3VudAEAWQEEAARNASBUcnVlIGlmIHdlIGhhdmUgdXBncmFkZWQgc28gdGhhdCBgdHlwZSBSZWZDb3VudGAgaXMgYHUzMmAuIEZhbHNlIChkZWZhdWx0KSBpZiBub3QuAGBVcGdyYWRlZFRvVHJpcGxlUmVmQ291bnQBAFkBBAAIXQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgQWNjb3VudEluZm8gY29udGFpbnMgdGhyZWUgdHlwZXMgb2YgYFJlZkNvdW50YC4gRmFsc2VIIChkZWZhdWx0KSBpZiBub3QuADhFeGVjdXRpb25QaGFzZQAAsQkEAASIIFRoZSBleGVjdXRpb24gcGhhc2Ugb2YgdGhlIGJsb2NrLgBEQXV0aG9yaXplZFVwZ3JhZGUAAMUJBAAEuCBgU29tZWAgaWYgYSBjb2RlIHVwZ3JhZGUgaGFzIGJlZW4gYXV0aG9yaXplZC4AYEV4dHJpbnNpY1dlaWdodFJlY2xhaW1lZAEAEQEIAAAcoCBUaGUgd2VpZ2h0IHJlY2xhaW1lZCBmb3IgdGhlIGV4dHJpbnNpYy4AIQEgVGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgdW50aWwgdGhlIGVuZCBvZiB0aGUgZXh0cmluc2ljIGV4ZWN1dGlvbi4hASBNb3JlIHByZWNpc2VseSB0aGlzIGluZm9ybWF0aW9uIGlzIHJlbW92ZWQgaW4gYG5vdGVfYXBwbGllZF9leHRyaW5zaWNgLgBxASBMb2dpYyBkb2luZyBzb21lIHBvc3QgZGlzcGF0Y2ggd2VpZ2h0IHJlZHVjdGlvbiBtdXN0IHVwZGF0ZSB0aGlzIHN0b3JhZ2UgdG8gYXZvaWQgZHVwbGljYXRlLCByZWR1Y3Rpb24uAAEkAAHpBwAYMEJsb2NrV2VpZ2h0c8kJiQEHAPIFKgEACwAgSqnRAQIAgAICZc0dAAELwCb7f3QBAgAAAgELAGjlz4sBAgAgAgEAAAJlzR0AAQvA3l9ZugECAGACAQsAIEqp0QECAIACAQcAuGTZRQIAYAACZc0dAAAAAATQIEJsb2NrICYgZXh0cmluc2ljcyB3ZWlnaHRzOiBiYXNlIHZhbHVlcyBhbmQgbGltaXRzLgAsQmxvY2tMZW5ndGjVCTQAAEQAAABQAAAAUAAABKggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgYmxvY2sgKGluIGJ5dGVzKS4AOEJsb2NrSGFzaENvdW50OBAAEAAABFUBIE1heGltdW0gbnVtYmVyIG9mIGJsb2NrIG51bWJlciB0byBibG9jayBoYXNoIG1hcHBpbmdzIHRvIGtlZXAgKG9sZGVzdCBwcnVuZWQgZmlyc3QpLgAgRGJXZWlnaHTdCUBAeH0BAAAAAADh9QUAAAAABAkBIFRoZSB3ZWlnaHQgb2YgcnVudGltZSBkYXRhYmFzZSBvcGVyYXRpb25zIHRoZSBydW50aW1lIGNhbiBpbnZva2UuABxWZXJzaW9u4QkBBlBuZXh0LWFzc2V0LWh1Yi1wYXNlb1BuZXh0LWFzc2V0LWh1Yi1wYXNlbwEAAACahB4AAAAAAGzdcY1cxTJi1AEAAAAE5wUhoNPS+AEAAADXvdiicsoNZQIAAADfastomQdgmwUAAAA345f8fJH15AIAAABA/jrUAfiVmgYAAADSvJiX7tCPFQMAAAD3iyeL5T9FTAIAAACrPAVyKR/riwIAAADM2d5jlsiZygEAAAC8nYmQT1uSPwEAAAA3yLsTUKmiqAQAAADz/xTVq1JwWQMAAABv9S7oWObFvQIAAACRscixYyjrkgIAAACf+1BapzjWnAEAAAAmCb6DrERo3AEAAAASyOPU1+Bt4AEAAADekrigQmub9gIAAADqk+Pxbz1pYgMAAAD7xXe510fv1gEAAACKgEelOoJ37AEAAACi3balhHe/YwEAAAAXprwNAGKuswEAAAAY71ijtnuncAEAAADFH/H6P10MygEAAACMQD5cSp/UQgEAAAARAAAAAQSEIEdldCB0aGUgY2hhaW4ncyBpbi1jb2RlIHZlcnNpb24uAChTUzU4UHJlZml40QMIAAAUqCBUaGUgZGVzaWduYXRlZCBTUzU4IHByZWZpeCBvZiB0aGlzIGNoYWluLgA5ASBUaGlzIHJlcGxhY2VzIHRoZSAic3M1OEZvcm1hdCIgcHJvcGVydHkgZGVjbGFyZWQgaW4gdGhlIGNoYWluIHNwZWMuIFJlYXNvbiBpczEBIHRoYXQgdGhlIHJ1bnRpbWUgc2hvdWxkIGtub3cgYWJvdXQgdGhlIHByZWZpeCBpbiBvcmRlciB0byBtYWtlIHVzZSBvZiBpdCBhc3AgYW4gaWRlbnRpZmllciBvZiB0aGUgY2hhaW4uAAHxCQAcLFJ1bnRpbWVDYWxsIASMIFRoZSBhZ2dyZWdhdGVkIGBSdW50aW1lQ2FsbGAgdHlwZS4UTm9uY2U4BEkBIFRoaXMgc3RvcmVzIHRoZSBudW1iZXIgb2YgcHJldmlvdXMgdHJhbnNhY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCBhIHNlbmRlciBhY2NvdW50LhBIYXNoPASYIFRoZSBvdXRwdXQgb2YgdGhlIGBIYXNoaW5nYCBmdW5jdGlvbi4cSGFzaGluZ/EEBCEBIFRoZSBoYXNoaW5nIHN5c3RlbSAoYWxnb3JpdGhtKSBiZWluZyB1c2VkIGluIHRoZSBydW50aW1lIChlLmcuIEJsYWtlMikuJEFjY291bnRJZAQEyCBUaGUgdXNlciBhY2NvdW50IGlkZW50aWZpZXIgdHlwZSBmb3IgdGhlIHJ1bnRpbWUuFEJsb2Nr9QkIYQEgVGhlIEJsb2NrIHR5cGUgdXNlZCBieSB0aGUgcnVudGltZS4gVGhpcyBpcyB1c2VkIGJ5IGBjb25zdHJ1Y3RfcnVudGltZWAgdG8gcmV0cmlldmUgdGhlzCBleHRyaW5zaWNzIG9yIG90aGVyIGJsb2NrIHNwZWNpZmljIGRhdGEgYXMgbmVlZGVkLixBY2NvdW50RGF0YdEHCGEBIERhdGEgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGFuIGFjY291bnQgKG90aGVyIHRoYW4gbm9uY2UvdHJhbnNhY3Rpb24gY291bnRlciwgd2hpY2ggdGhpc2QgcGFsbGV0IGRvZXMgcmVnYXJkbGVzcykuAAAAADxQYXJhY2hhaW5TeXN0ZW0BPFBhcmFjaGFpblN5c3RlbXw8QmxvY2tXZWlnaHRNb2RlAAANCgQAGHwgVGhlIGN1cnJlbnQgYmxvY2sgd2VpZ2h0IG1vZGUuAHUBIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBpcyB0aGUgbWF4aW11bSBhbGxvd2VkIGJsb2NrIHdlaWdodCwgZm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlSCBbYGJsb2NrX3dlaWdodGBdLgAlASBLaWxsZWQgaW4gW2BTZWxmOjpvbl9pbml0aWFsaXplYF0gYW5kIHNldCBieSB0aGUgW2BibG9ja193ZWlnaHRgXSBsb2dpYy4ARFByZXZpb3VzQ29yZUNvdW50AADxBQQADAUBIFRoZSBjb3JlIGNvdW50IGF2YWlsYWJsZSB0byB0aGUgcGFyYWNoYWluIGluIHRoZSBwcmV2aW91cyBibG9jay4AdQEgVGhpcyBpcyBtYWlubHkgdXNlZCBmb3Igb2ZmY2hhaW4gZnVuY3Rpb25hbGl0eSB0byBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgdGFyZ2V0IGJsb2NrIHdlaWdodC4ARFVuaW5jbHVkZWRTZWdtZW50AQARCgQAGEkBIExhdGVzdCBpbmNsdWRlZCBibG9jayBkZXNjZW5kYW50cyB0aGUgcnVudGltZSBhY2NlcHRlZC4gSW4gb3RoZXIgd29yZHMsIHRoZXNlIGFyZWEBIGFuY2VzdG9ycyBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBibG9jayB3aGljaCBoYXZlIG5vdCBiZWVuIGluY2x1ZGVkIGluIHRoZSBvYnNlcnZlZEwgcmVsYXktY2hhaW4gc3RhdGUuAHUBIFRoZSBzZWdtZW50IGxlbmd0aCBpcyBsaW1pdGVkIGJ5IHRoZSBjYXBhY2l0eSByZXR1cm5lZCBmcm9tIHRoZSBbYENvbnNlbnN1c0hvb2tgXSBjb25maWd1cmVkPCBpbiB0aGUgcGFsbGV0LgBsQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50AAA1CgQADGkBIFN0b3JhZ2UgZmllbGQgdGhhdCBrZWVwcyB0cmFjayBvZiBiYW5kd2lkdGggdXNlZCBieSB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGFsb25nIHdpdGggdGhlLQEgbGF0ZXN0IEhSTVAgd2F0ZXJtYXJrLiBVc2VkIGZvciBsaW1pdGluZyB0aGUgYWNjZXB0YW5jZSBvZiBuZXcgYmxvY2tzIHdpdGiQIHJlc3BlY3QgdG8gcmVsYXkgY2hhaW4gY29uc3RyYWludHMuAFRQZW5kaW5nVmFsaWRhdGlvbkNvZGUBABgEABhZASBJbiBjYXNlIG9mIGEgc2NoZWR1bGVkIHVwZ3JhZGUsIHRoaXMgc3RvcmFnZSBmaWVsZCBjb250YWlucyB0aGUgdmFsaWRhdGlvbiBjb2RlIHRvIGJlJCBhcHBsaWVkLgA9ASBBcyBzb29uIGFzIHRoZSByZWxheSBjaGFpbiBnaXZlcyB1cyB0aGUgZ28tYWhlYWQgc2lnbmFsLCB3ZSB3aWxsIG92ZXJ3cml0ZSB0aGVlASBbYDpwZW5kaW5nX2NvZGVgXVtzcF9jb3JlOjpzdG9yYWdlOjp3ZWxsX2tub3duX2tleXM6OlBFTkRJTkdfQ09ERV0gd2hpY2ggd2lsbCByZXN1bHQgdGhldQEgbmV4dCBibG9jayB0byBiZSBwcm9jZXNzZWQgd2l0aCB0aGUgbmV3IHZhbGlkYXRpb24gY29kZS4gVGhpcyBjb25jbHVkZXMgdGhlIHVwZ3JhZGUgcHJvY2Vzcy4ARE5ld1ZhbGlkYXRpb25Db2RlAAAYBAAUXQEgVmFsaWRhdGlvbiBjb2RlIHRoYXQgaXMgc2V0IGJ5IHRoZSBwYXJhY2hhaW4gYW5kIGlzIHRvIGJlIGNvbW11bmljYXRlZCB0byBjb2xsYXRvciBhbmR4IGNvbnNlcXVlbnRseSB0aGUgcmVsYXktY2hhaW4uAGUBIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jayBpZiBubyBvdGhlciBwYWxsZXQgYWxyZWFkeSBzZXQsIHRoZSB2YWx1ZS4AOFZhbGlkYXRpb25EYXRhAABIBAAM0CBUaGUgW2BQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YWBdIHNldCBmb3IgdGhpcyBibG9jay4AcQEgVGhpcyB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBzZXQgb25seSBvbmNlIGJ5IHRoZSBbYFBhbGxldDo6c2V0X3ZhbGlkYXRpb25fZGF0YWBdIGluaGVyZW50LgBQRGlkU2V0VmFsaWRhdGlvbkNvZGUBAFkBBAAE4CBXZXJlIHRoZSB2YWxpZGF0aW9uIGRhdGEgc2V0IHRvIG5vdGlmeSB0aGUgcmVsYXkgY2hhaW4/AGRMYXN0UmVsYXlDaGFpbkJsb2NrTnVtYmVyAQA4EAAAAAAMHQEgVGhlIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhlIGxhc3QgcGFyYWNoYWluIGJsb2NrLgCIIFRoaXMgaXMgdXBkYXRlZCBpbiBgb25fZmluYWxpemVgLgBgVXBncmFkZVJlc3RyaWN0aW9uU2lnbmFsAQA5CgQAHHUBIEFuIG9wdGlvbiB3aGljaCBpbmRpY2F0ZXMgaWYgdGhlIHJlbGF5LWNoYWluIHJlc3RyaWN0cyBzaWduYWxsaW5nIGEgdmFsaWRhdGlvbiBjb2RlIHVwZ3JhZGUuYQEgSW4gb3RoZXIgd29yZHMsIGlmIHRoaXMgaXMgYFNvbWVgIGFuZCBbYE5ld1ZhbGlkYXRpb25Db2RlYF0gaXMgYFNvbWVgIHRoZW4gdGhlIHByb2R1Y2VkbCBjYW5kaWRhdGUgd2lsbCBiZSBpbnZhbGlkLgBxASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBhIG1pcnJvciBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGZyb20gdGhlbQEgcmVsYXktY2hhaW4uIFRoaXMgdmFsdWUgaXMgZXBoZW1lcmFsIHdoaWNoIG1lYW5zIGl0IGRvZXNuJ3QgaGl0IHRoZSBzdG9yYWdlLiBUaGlzIHZhbHVlIGlzYCBzZXQgYWZ0ZXIgdGhlIGluaGVyZW50LgA4VXBncmFkZUdvQWhlYWQBAC0KBAAU3CBPcHRpb25hbCB1cGdyYWRlIGdvLWFoZWFkIHNpZ25hbCBmcm9tIHRoZSByZWxheS1jaGFpbi4AcQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgYSBtaXJyb3Igb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZm9yIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBmcm9tIHRoZW0BIHJlbGF5LWNoYWluLiBUaGlzIHZhbHVlIGlzIGVwaGVtZXJhbCB3aGljaCBtZWFucyBpdCBkb2Vzbid0IGhpdCB0aGUgc3RvcmFnZS4gVGhpcyB2YWx1ZSBpc2Agc2V0IGFmdGVyIHRoZSBpbmhlcmVudC4APFJlbGF5U3RhdGVQcm9vZgAAUAQAGMQgVGhlIHN0YXRlIHByb29mIGZvciB0aGUgbGFzdCByZWxheSBwYXJlbnQgYmxvY2suAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AWFJlbGV2YW50TWVzc2FnaW5nU3RhdGUAAEEKBAAcZQEgVGhlIHNuYXBzaG90IG9mIHNvbWUgc3RhdGUgcmVsYXRlZCB0byBtZXNzYWdpbmcgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgcGFyYWNoYWluIGFzIHBlckggdGhlIHJlbGF5IHBhcmVudC4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgBESG9zdENvbmZpZ3VyYXRpb24AAFUKBAAYKQEgVGhlIHBhcmFjaGFpbiBob3N0IGNvbmZpZ3VyYXRpb24gdGhhdCB3YXMgb2J0YWluZWQgZnJvbSB0aGUgcmVsYXkgcGFyZW50LgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuADhMYXN0RG1xTXFjSGVhZAEAXQqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ9CBUaGUgbGFzdCBkb3dud2FyZCBtZXNzYWdlIHF1ZXVlIGNoYWluIGhlYWQgd2UgaGF2ZSBvYnNlcnZlZC4AZQEgVGhpcyB2YWx1ZSBpcyBsb2FkZWQgYmVmb3JlIGFuZCBzYXZlZCBhZnRlciBwcm9jZXNzaW5nIGluYm91bmQgZG93bndhcmQgbWVzc2FnZXMgY2FycmllZGAgYnkgdGhlIHN5c3RlbSBpbmhlcmVudC4AQExhc3RIcm1wTXFjSGVhZHMBAGEKBAAQSQEgVGhlIG1lc3NhZ2UgcXVldWUgY2hhaW4gaGVhZHMgd2UgaGF2ZSBvYnNlcnZlZCBwZXIgZWFjaCBjaGFubmVsIGluY29taW5nIGNoYW5uZWwuAGUBIFRoaXMgdmFsdWUgaXMgbG9hZGVkIGJlZm9yZSBhbmQgc2F2ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBpbmJvdW5kIGRvd253YXJkIG1lc3NhZ2VzIGNhcnJpZWRgIGJ5IHRoZSBzeXN0ZW0gaW5oZXJlbnQuAGRQcm9jZXNzZWREb3dud2FyZE1lc3NhZ2VzAQA4EAAAAAAMyCBOdW1iZXIgb2YgZG93bndhcmQgbWVzc2FnZXMgcHJvY2Vzc2VkIGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgBwTGFzdFByb2Nlc3NlZERvd253YXJkTWVzc2FnZQAAbQoEAAyUIFRoZSBsYXN0IHByb2Nlc3NlZCBkb3dud2FyZCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgA0SHJtcFdhdGVybWFyawEAOBAAAAAABKAgSFJNUCB3YXRlcm1hcmsgdGhhdCB3YXMgc2V0IGluIGEgYmxvY2suAGBMYXN0UHJvY2Vzc2VkSHJtcE1lc3NhZ2UAAG0KBAAMhCBUaGUgbGFzdCBwcm9jZXNzZWQgSFJNUCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgBQSHJtcE91dGJvdW5kTWVzc2FnZXMBAHEKBAAMpCBIUk1QIG1lc3NhZ2VzIHRoYXQgd2VyZSBzZW50IGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgA4VXB3YXJkTWVzc2FnZXMBADQEAAysIFVwd2FyZCBtZXNzYWdlcyB0aGF0IHdlcmUgc2VudCBpbiBhIGJsb2NrLgDwIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBmb3IgZWFjaCBuZXcgYmxvY2suAFRQZW5kaW5nVXB3YXJkTWVzc2FnZXMBADQEAAQxASBVcHdhcmQgbWVzc2FnZXMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4AUFBlbmRpbmdVcHdhcmRTaWduYWxzAQA0BAAMLQEgVXB3YXJkIHNpZ25hbHMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4A2CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25fZmluYWxpemVgIGZvciBlYWNoIGJsb2NrLgBMUGVuZGluZ0FwcHJvdmVkUGVlcgAAeAQABDkBIFRoZSBhcHByb3ZlZCBwZWVyIGlkIHRvIGJlIHNlbnQgYXMgYSBVTVAgc2lnbmFsIG9uIHRoZSBsYXN0IGJsb2NrIG9mIHRoZSBQb1YuAFxVcHdhcmREZWxpdmVyeUZlZUZhY3RvcgEADQVAAABkp7O24A0AAAAAAAAAAATkIFRoZSBmYWN0b3IgdG8gbXVsdGlwbHkgdGhlIGJhc2UgZGVsaXZlcnkgZmVlIGJ5IGZvciBVTVAuAIRBbm5vdW5jZWRIcm1wTWVzc2FnZXNQZXJDYW5kaWRhdGUBADgQAAAAAAhlASBUaGUgbnVtYmVyIG9mIEhSTVAgbWVzc2FnZXMgd2Ugb2JzZXJ2ZWQgaW4gYG9uX2luaXRpYWxpemVgIGFuZCB0aHVzIHVzZWQgdGhhdCBudW1iZXIgZm9y8CBhbm5vdW5jaW5nIHRoZSB3ZWlnaHQgb2YgYG9uX2luaXRpYWxpemVgIGFuZCBgb25fZmluYWxpemVgLgBoUmVzZXJ2ZWRYY21wV2VpZ2h0T3ZlcnJpZGUAABEBBAAIXQEgVGhlIHdlaWdodCB3ZSByZXNlcnZlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrIGZvciBwcm9jZXNzaW5nIFhDTVAgbWVzc2FnZXMuIFRoaXO4IG92ZXJyaWRlcyB0aGUgYW1vdW50IHNldCBpbiB0aGUgQ29uZmlnIHRyYWl0LgBkUmVzZXJ2ZWREbXBXZWlnaHRPdmVycmlkZQAAEQEEAAhZASBUaGUgd2VpZ2h0IHdlIHJlc2VydmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYmxvY2sgZm9yIHByb2Nlc3NpbmcgRE1QIG1lc3NhZ2VzLiBUaGlzuCBvdmVycmlkZXMgdGhlIGFtb3VudCBzZXQgaW4gdGhlIENvbmZpZyB0cmFpdC4AYEN1c3RvbVZhbGlkYXRpb25IZWFkRGF0YQAAGAQADCkBIEEgY3VzdG9tIGhlYWQgZGF0YSB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCBhcyByZXN1bHQgb2YgYHZhbGlkYXRlX2Jsb2NrYC4AEQEgU2VlIGBQYWxsZXQ6OnNldF9jdXN0b21fdmFsaWRhdGlvbl9oZWFkX2RhdGFgIGZvciBtb3JlIGluZm9ybWF0aW9uLgBIUG9WTWVzc2FnZXNUcmFja2VyAAB5CgQADFUBIFRyYWNrcyBjdW11bGF0aXZlIGBVTVBgIGFuZCBgSFJNUGAgbWVzc2FnZXMgc2VudCBhY3Jvc3MgYmxvY2tzIGluIHRoZSBjdXJyZW50IGBQb1ZgLgB1ASBBY3Jvc3MgZGlmZmVyZW50IGNhbmRpZGF0ZXMvUG9WcyB0aGUgYnVkZ2V0cyBhcmUgdHJhY2tlZCBieSBbYEFnZ3JlZ2F0ZWRVbmluY2x1ZGVkU2VnbWVudGBdLgABQAABEQgABChTZWxmUGFyYUlknBDcBQAABLggUmV0dXJucyB0aGUgcGFyYWNoYWluIElEIHdlIGFyZSBydW5uaW5nIHdpdGguAAGBCgAAAAEAACRUaW1lc3RhbXABJFRpbWVzdGFtcAgMTm93AQAoIAAAAAAAAAAABKAgVGhlIGN1cnJlbnQgdGltZSBmb3IgdGhlIGN1cnJlbnQgYmxvY2suACREaWRVcGRhdGUBAFkBBAAQ2CBXaGV0aGVyIHRoZSB0aW1lc3RhbXAgaGFzIGJlZW4gdXBkYXRlZCBpbiB0aGlzIGJsb2NrLgBVASBUaGlzIHZhbHVlIGlzIHVwZGF0ZWQgdG8gYHRydWVgIHVwb24gc3VjY2Vzc2Z1bCBzdWJtaXNzaW9uIG9mIGEgdGltZXN0YW1wIGJ5IGEgbm9kZS5FASBJdCBpcyB0aGVuIGNoZWNrZWQgYXQgdGhlIGVuZCBvZiBlYWNoIGJsb2NrIGV4ZWN1dGlvbiBpbiB0aGUgYG9uX2ZpbmFsaXplYCBob29rLgABsAAABDRNaW5pbXVtUGVyaW9kKCAAAAAAAAAAABiMIFRoZSBtaW5pbXVtIHBlcmlvZCBiZXR3ZWVuIGJsb2Nrcy4ATQEgQmUgYXdhcmUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCB0byB0aGUgKmV4cGVjdGVkKiBwZXJpb2QgdGhhdCB0aGUgYmxvY2sgcHJvZHVjdGlvbkkBIGFwcGFyYXR1cyBwcm92aWRlcy4gWW91ciBjaG9zZW4gY29uc2Vuc3VzIHN5c3RlbSB3aWxsIGdlbmVyYWxseSB3b3JrIHdpdGggdGhpcyB0b2EBIGRldGVybWluZSBhIHNlbnNpYmxlIGJsb2NrIHRpbWUuIEZvciBleGFtcGxlLCBpbiB0aGUgQXVyYSBwYWxsZXQgaXQgd2lsbCBiZSBkb3VibGUgdGhpc3AgcGVyaW9kIG9uIGRlZmF1bHQgc2V0dGluZ3MuAAAEGE1vbWVudCgEmCBUeXBlIHVzZWQgZm9yIGV4cHJlc3NpbmcgYSB0aW1lc3RhbXAuAAMAADRQYXJhY2hhaW5JbmZvATRQYXJhY2hhaW5JbmZvBCxQYXJhY2hhaW5JZAEAnBBkAAAAAAABuAAAAAAAAAQAACBQcmVpbWFnZQEgUHJlaW1hZ2UMJFN0YXR1c0ZvcgABBAY8hQoEAASQIFRoZSByZXF1ZXN0IHN0YXR1cyBvZiBhIGdpdmVuIGhhc2guAkBSZXF1ZXN0U3RhdHVzRm9yAEBSZXF1ZXN0U3RhdHVzRm9yAAEEBjyNCgQABJAgVGhlIHJlcXVlc3Qgc3RhdHVzIG9mIGEgZ2l2ZW4gaGFzaC4ALFByZWltYWdlRm9yAAEEBp0KoQoEAAAAAbwAARUIAAABpQoAAAAFAAAkU2NoZWR1bGVyASRTY2hlZHVsZXIQPEluY29tcGxldGVTaW5jZQAAOAQABPQgQmxvY2sgbnVtYmVyIGF0IHdoaWNoIHRoZSBhZ2VuZGEgYmVnYW4gaW5jb21wbGV0ZSBleGVjdXRpb24uABhBZ2VuZGEBAQQFOKkKBAAETQEgSXRlbXMgdG8gYmUgZXhlY3V0ZWQsIGluZGV4ZWQgYnkgdGhlIGJsb2NrIG51bWJlciB0aGF0IHRoZXkgc2hvdWxkIGJlIGV4ZWN1dGVkIG9uLgAcUmV0cmllcwABBALMuQoEAAQhASBSZXRyeSBjb25maWd1cmF0aW9ucyBmb3IgaXRlbXMgdG8gYmUgZXhlY3V0ZWQsIGluZGV4ZWQgYnkgdGFzayBhZGRyZXNzLgAYTG9va3VwAAEEBQjMBAAQ+CBMb29rdXAgZnJvbSBhIG5hbWUgdG8gdGhlIGJsb2NrIG51bWJlciBhbmQgaW5kZXggb2YgdGhlIHRhc2suAFkBIEZvciB2MyAtPiB2NCB0aGUgcHJldmlvdXNseSB1bmJvdW5kZWQgaWRlbnRpdGllcyBhcmUgQmxha2UyLTI1NiBoYXNoZWQgdG8gZm9ybSB0aGUgdjQwIGlkZW50aXRpZXMuAAHEAAEZCAAINE1heGltdW1XZWlnaHQRASwLAIBuh3QBAgAAAgQpASBUaGUgbWF4aW11bSB3ZWlnaHQgdGhhdCBtYXkgYmUgc2NoZWR1bGVkIHBlciBibG9jayBmb3IgYW55IGRpc3BhdGNoYWJsZXMuAFBNYXhTY2hlZHVsZWRQZXJCbG9jazgQMgAAABQdASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2NoZWR1bGVkIGNhbGxzIGluIHRoZSBxdWV1ZSBmb3IgYSBzaW5nbGUgYmxvY2suABggTk9URTpRASArIERlcGVuZGVudCBwYWxsZXRzJyBiZW5jaG1hcmtzIG1pZ2h0IHJlcXVpcmUgYSBoaWdoZXIgbGltaXQgZm9yIHRoZSBzZXR0aW5nLiBTZXQgYcQgaGlnaGVyIGxpbWl0IHVuZGVyIGBydW50aW1lLWJlbmNobWFya3NgIGZlYXR1cmUuAAG9CgAELFJ1bnRpbWVDYWxsIARoIFRoZSBhZ2dyZWdhdGVkIGNhbGwgdHlwZS4ABgAAKFBhcmFtZXRlcnMBKFBhcmFtZXRlcnMEKFBhcmFtZXRlcnMAAQQCJQg5CAQABEwgU3RvcmVkIHBhcmFtZXRlcnMuAAHQAAEhCAAAAAAABwAAUE11bHRpQmxvY2tNaWdyYXRpb25zAVBNdWx0aUJsb2NrTWlncmF0aW9ucwgYQ3Vyc29yAAAtAQQADNggVGhlIGN1cnJlbnRseSBhY3RpdmUgbWlncmF0aW9uIHRvIHJ1biBhbmQgaXRzIGN1cnNvci4AvCBgTm9uZWAgaW5kaWNhdGVzIHRoYXQgbm8gbWlncmF0aW9uIGlzIHJ1bm5pbmcuACBIaXN0b3JpYwABBAVBARAEABC0IFNldCBvZiBhbGwgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIG1pZ3JhdGlvbnMuAHEBIFRoaXMgaXMgdXNlZCBhcyBibGFja2xpc3QsIHRvIG5vdCByZS1leGVjdXRlIG1pZ3JhdGlvbnMgdGhhdCBoYXZlIG5vdCBiZWVuIHJlbW92ZWQgZnJvbSB0aGUxASBjb2RlYmFzZSB5ZXQuIEdvdmVybmFuY2UgY2FuIHJlZ3VsYXJseSBjbGVhciB0aGlzIG91dCB2aWEgYGNsZWFyX2hpc3RvcmljYC4AASUBAAFJCAAIMEN1cnNvck1heExlbjgQAAABABCkIFRoZSBtYXhpbWFsIGxlbmd0aCBvZiBhbiBlbmNvZGVkIGN1cnNvci4AZQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhIGN1cnNvciB3aXRoIE1FTAkBIGFib3ZlIHRoaXMgbGltaXQuIFRoaXMgaXMgc3RhdGljYWxseSBjaGVja2VkIGluIGBpbnRlZ3JpdHlfdGVzdGAuAEBJZGVudGlmaWVyTWF4TGVuOBAAAQAAELQgVGhlIG1heGltYWwgbGVuZ3RoIG9mIGFuIGVuY29kZWQgaWRlbnRpZmllci4AVQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhbiBpZGVudGlmaWVyLQEgd2l0aCBNRUwgYWJvdmUgdGhpcyBsaW1pdC4gVGhpcyBpcyBzdGF0aWNhbGx5IGNoZWNrZWQgaW4gYGludGVncml0eV90ZXN0YC4AAcEKAAAQCyAZms41ZNCWTixNSpukaZRNvP9qbOGk0LJ8b8wC0kw4b25nb2luZ19zdGF0dXMAxQoEqCBSZXR1cm5zIHRoZSBvbmdvaW5nIHN0YXR1cyBvZiBtaWdyYXRpb25zLgALIBmazjVk0JZOLE1Km6RpXr13bLFdm5EuJ41NLWLFoSBwcm9ncmVzcwDJChAJASBSZXR1cm5zIHByb2dyZXNzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbiwgaWYgYW55LgBRASBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHByb2dyZXNzLB0BIGluY2x1ZGluZyB0aGUgbnVtYmVyIG9mIHN0ZXBzIGNvbXBsZXRlZCBhbmQgdGhlIG1heGltdW0gYWxsb3dlZCBzdGVwcy4ACyAZms41ZNCWTixNSpukaUavS87G81p7u+6dn8EJW+FEYWZmZWN0ZWRfcHJlZml4ZXMANAwBASBSZXR1cm5zIHRoZSBzdG9yYWdlIHByZWZpeGVzIGFmZmVjdGVkIGJ5IHRoZSBjdXJyZW50IG1pZ3JhdGlvbi4AGQEgQ2FuIGJlIGVtcHR5IGlmIHRoZSBtaWdyYXRpb24gZG9lcyBub3Qga25vdyBvciB0aGVyZSBhcmUgbm8gcHJlZml4ZXMuAAsgGZrONWTQlk4sTUqbpGmqTCigbxmIRb0bsp7GIF3dGHN0YXR1cwDRCgTwIFJldHVybnMgdGhlIGNvbXByZWhlbnNpdmUgc3RhdHVzIG9mIG11bHRpLWJsb2NrIG1pZ3JhdGlvbnMuAAgAADRXZWlnaHRSZWNsYWltAAAAAAAAAAkIgQEgUGFsbGV0IHRvIHVzZSBhbG9uZ3NpZGUgdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBbYFN0b3JhZ2VXZWlnaHRSZWNsYWltYF0sIHRoZSBwYWxsZXQgcHJvdmlkZXOMIHdlaWdodCBpbmZvcm1hdGlvbiBhbmQgYmVuY2htYXJrcy4AIEJhbGFuY2VzASBCYWxhbmNlcxw0VG90YWxJc3N1YW5jZQEAVQFAAAAAAAAAAAAAAAAAAAAAAASYIFRoZSB0b3RhbCB1bml0cyBpc3N1ZWQgaW4gdGhlIHN5c3RlbS4AQEluYWN0aXZlSXNzdWFuY2UBAFUBQAAAAAAAAAAAAAAAAAAAAAAECQEgVGhlIHRvdGFsIHVuaXRzIG9mIG91dHN0YW5kaW5nIGRlYWN0aXZhdGVkIGJhbGFuY2UgaW4gdGhlIHN5c3RlbS4AHEFjY291bnQBAQQCBNEHAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAYAkBIFRoZSBCYWxhbmNlcyBwYWxsZXQgZXhhbXBsZSBvZiBzdG9yaW5nIHRoZSBiYWxhbmNlIG9mIGFuIGFjY291bnQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7GQIgICAgdHlwZSBBY2NvdW50U3RvcmUgPSBTdG9yYWdlTWFwU2hpbTxTZWxmOjpBY2NvdW50PFJ1bnRpbWU+LCBmcmFtZV9zeXN0ZW06OlByb3ZpZGVyPFJ1bnRpbWU+LCBBY2NvdW50SWQsIFNlbGY6OkFjY291bnREYXRhPEJhbGFuY2U+PgwgIH0QIGBgYAAVASBZb3UgY2FuIGFsc28gc3RvcmUgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudCBpbiB0aGUgYFN5c3RlbWAgcGFsbGV0LgAoICMgRXhhbXBsZQA0IGBgYG5vY29tcGlsZbAgIGltcGwgcGFsbGV0X2JhbGFuY2VzOjpDb25maWcgZm9yIFJ1bnRpbWUge3QgICB0eXBlIEFjY291bnRTdG9yZSA9IFN5c3RlbQwgIH0QIGBgYABRASBCdXQgdGhpcyBjb21lcyB3aXRoIHRyYWRlb2Zmcywgc3RvcmluZyBhY2NvdW50IGJhbGFuY2VzIGluIHRoZSBzeXN0ZW0gcGFsbGV0IHN0b3Jlc20BIGBmcmFtZV9zeXN0ZW1gIGRhdGEgYWxvbmdzaWRlIHRoZSBhY2NvdW50IGRhdGEgY29udHJhcnkgdG8gc3RvcmluZyBhY2NvdW50IGJhbGFuY2VzIGluIHRoZSkBIGBCYWxhbmNlc2AgcGFsbGV0LCB3aGljaCB1c2VzIGEgYFN0b3JhZ2VNYXBgIHRvIHN0b3JlIGJhbGFuY2VzIGRhdGEgb25seS5BASBOT1RFOiBUaGlzIGlzIG9ubHkgdXNlZCBpbiB0aGUgY2FzZSB0aGF0IHRoaXMgcGFsbGV0IGlzIHVzZWQgdG8gc3RvcmUgYmFsYW5jZXMuABRMb2NrcwEBBAIE1QoEABC4IEFueSBsaXF1aWRpdHkgbG9ja3Mgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLiUBIE5PVEU6IFNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIHdoZW4gc2V0dGluZywgY2hhbmdpbmcgYW5kIGZyZWVpbmcgYSBsb2NrLgCtASBVc2Ugb2YgbG9ja3MgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgZnJlZXplcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gACBSZXNlcnZlcwEBBAIE5QoEAAykIE5hbWVkIHJlc2VydmVzIG9uIHNvbWUgYWNjb3VudCBiYWxhbmNlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAFEhvbGRzAQEEAgTxCgQABGwgSG9sZHMgb24gYWNjb3VudCBiYWxhbmNlcy4AHEZyZWV6ZXMBAQQCBP0KBAAEiCBGcmVlemUgbG9ja3Mgb24gYWNjb3VudCBiYWxhbmNlcy4AAU0BAAFNCAAQSEV4aXN0ZW50aWFsRGVwb3NpdFUBQADh9QUAAAAAAAAAAAAAAAAgQQEgVGhlIG1pbmltdW0gYW1vdW50IHJlcXVpcmVkIHRvIGtlZXAgYW4gYWNjb3VudCBvcGVuLiBNVVNUIEJFIEdSRUFURVIgVEhBTiBaRVJPIQBZASBJZiB5b3UgKnJlYWxseSogbmVlZCBpdCB0byBiZSB6ZXJvLCB5b3UgY2FuIGVuYWJsZSB0aGUgZmVhdHVyZSBgaW5zZWN1cmVfemVyb19lZGAgZm9yYQEgdGhpcyBwYWxsZXQuIEhvd2V2ZXIsIHlvdSBkbyBzbyBhdCB5b3VyIG93biByaXNrOiB0aGlzIHdpbGwgb3BlbiB1cCBhIG1ham9yIERvUyB2ZWN0b3IuWQEgSW4gY2FzZSB5b3UgaGF2ZSBtdWx0aXBsZSBzb3VyY2VzIG9mIHByb3ZpZGVyIHJlZmVyZW5jZXMsIHlvdSBtYXkgYWxzbyBnZXQgdW5leHBlY3RlZIwgYmVoYXZpb3VyIGlmIHlvdSBzZXQgdGhpcyB0byB6ZXJvLgDwIEJvdHRvbSBsaW5lOiBEbyB5b3Vyc2VsZiBhIGZhdm91ciBhbmQgbWFrZSBpdCBhdCBsZWFzdCBvbmUhACBNYXhMb2NrczgQMgAAABD0IFRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NrcyB0aGF0IHNob3VsZCBleGlzdCBvbiBhbiBhY2NvdW50LtwgTm90IHN0cmljdGx5IGVuZm9yY2VkLCBidXQgdXNlZCBmb3Igd2VpZ2h0IGVzdGltYXRpb24uAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AALE1heFJlc2VydmVzOBAyAAAADA0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBuYW1lZCByZXNlcnZlcyB0aGF0IGNhbiBleGlzdCBvbiBhbiBhY2NvdW50LgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAoTWF4RnJlZXplczgQAgAAAARhASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5kaXZpZHVhbCBmcmVlemUgbG9ja3MgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudCBhdCBhbnkgdGltZS4AARULABBEUnVudGltZUhvbGRSZWFzb25VCAR0IFRoZSBvdmVyYXJjaGluZyBob2xkIHJlYXNvbi4cQmFsYW5jZVUBBGwgVGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC5EUmVzZXJ2ZUlkZW50aWZpZXJZAgxoIFRoZSBJRCB0eXBlIGZvciByZXNlcnZlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2BARnJlZXplSWRlbnRpZmllcgULBGQgVGhlIElEIHR5cGUgZm9yIGZyZWV6ZXMuAAoAAEhUcmFuc2FjdGlvblBheW1lbnQBSFRyYW5zYWN0aW9uUGF5bWVudAxETmV4dEZlZU11bHRpcGxpZXIBAA0FQAAAZKeztuANAAAAAAAAAAAAADhTdG9yYWdlVmVyc2lvbgEAGQsEAAAAPFR4UGF5bWVudENyZWRpdAAAHQsEAAzwIFRoZSBgT25DaGFyZ2VUcmFuc2FjdGlvbmAgc3RvcmVzIHRoZSB3aXRoZHJhd24gdHggZmVlIGhlcmUuADUBIFVzZSBgd2l0aGRyYXdfdHhmZWVgIGFuZCBgcmVtYWluaW5nX3R4ZmVlYCB0byBhY2Nlc3MgZnJvbSBvdXRzaWRlIHRoZSBjcmF0ZS4AAAGFCAAEYE9wZXJhdGlvbmFsRmVlTXVsdGlwbGllcgwEBVRZASBBIGZlZSBtdWx0aXBsaWVyIGZvciBgT3BlcmF0aW9uYWxgIGV4dHJpbnNpY3MgdG8gY29tcHV0ZSAidmlydHVhbCB0aXAiIHRvIGJvb3N0IHRoZWlyLCBgcHJpb3JpdHlgAFEBIFRoaXMgdmFsdWUgaXMgbXVsdGlwbGllZCBieSB0aGUgYGZpbmFsX2ZlZWAgdG8gb2J0YWluIGEgInZpcnR1YWwgdGlwIiB0aGF0IGlzIGxhdGVy9CBhZGRlZCB0byBhIHRpcCBjb21wb25lbnQgaW4gcmVndWxhciBgcHJpb3JpdHlgIGNhbGN1bGF0aW9ucy5NASBJdCBtZWFucyB0aGF0IGEgYE5vcm1hbGAgdHJhbnNhY3Rpb24gY2FuIGZyb250LXJ1biBhIHNpbWlsYXJseS1zaXplZCBgT3BlcmF0aW9uYWxgQQEgZXh0cmluc2ljICh3aXRoIG5vIHRpcCksIGJ5IGluY2x1ZGluZyBhIHRpcCB2YWx1ZSBncmVhdGVyIHRoYW4gdGhlIHZpcnR1YWwgdGlwLgA8IGBgYHJ1c3QsaWdub3JlQCAvLyBGb3IgYE5vcm1hbGCMIGxldCBwcmlvcml0eSA9IHByaW9yaXR5X2NhbGModGlwKTsAVCAvLyBGb3IgYE9wZXJhdGlvbmFsYBEBIGxldCB2aXJ0dWFsX3RpcCA9IChpbmNsdXNpb25fZmVlICsgdGlwKSAqIE9wZXJhdGlvbmFsRmVlTXVsdGlwbGllcjvEIGxldCBwcmlvcml0eSA9IHByaW9yaXR5X2NhbGModGlwICsgdmlydHVhbF90aXApOxAgYGBgAFEBIE5vdGUgdGhhdCBzaW5jZSB3ZSB1c2UgYGZpbmFsX2ZlZWAgdGhlIG11bHRpcGxpZXIgYXBwbGllcyBhbHNvIHRvIHRoZSByZWd1bGFyIGB0aXBgXQEgc2VudCB3aXRoIHRoZSB0cmFuc2FjdGlvbi4gU28sIG5vdCBvbmx5IGRvZXMgdGhlIHRyYW5zYWN0aW9uIGdldCBhIHByaW9yaXR5IGJ1bXAgYmFzZWRhASBvbiB0aGUgYGluY2x1c2lvbl9mZWVgLCBidXQgd2UgYWxzbyBhbXBsaWZ5IHRoZSBpbXBhY3Qgb2YgdGlwcyBhcHBsaWVkIHRvIGBPcGVyYXRpb25hbGA4IHRyYW5zYWN0aW9ucy4AAAAACwAAOEFzc2V0VHhQYXltZW50AAABiQgAAAAAAA0AABxWZXN0aW5nARxWZXN0aW5nCBxWZXN0aW5nAAEEAgQlCwQABNggSW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSB2ZXN0aW5nIG9mIGEgZ2l2ZW4gYWNjb3VudC4AOFN0b3JhZ2VWZXJzaW9uAQAtCwQADHwgU3RvcmFnZSB2ZXJzaW9uIG9mIHRoZSBwYWxsZXQuADEBIE5ldyBuZXR3b3JrcyBzdGFydCB3aXRoIGxhdGVzdCB2ZXJzaW9uLCBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBnZW5lc2lzIGJ1aWxkLgABZQEAAY0IAAhETWluVmVzdGVkVHJhbnNmZXJVAUAA4fUFAAAAAAAAAAAAAAAABOggVGhlIG1pbmltdW0gYW1vdW50IHRyYW5zZmVycmVkIHRvIGNhbGwgYHZlc3RlZF90cmFuc2ZlcmAuAExNYXhWZXN0aW5nU2NoZWR1bGVzOBAcAAAAAAABMQsAAAAOAAAYQ2xhaW1zARhDbGFpbXMUGENsYWltcwABBAZ5AVUBBAAAABRUb3RhbAEAVQFAAAAAAAAAAAAAAAAAAAAAAAAAHFZlc3RpbmcAAQQGeQGBAQQAEHggVmVzdGluZyBzY2hlZHVsZSBmb3IgYSBjbGFpbS4NASBGaXJzdCBiYWxhbmNlIGlzIHRoZSB0b3RhbCBhbW91bnQgdGhhdCBzaG91bGQgYmUgaGVsZCBmb3IgdmVzdGluZy7kIFNlY29uZCBiYWxhbmNlIGlzIGhvdyBtdWNoIHNob3VsZCBiZSB1bmxvY2tlZCBwZXIgYmxvY2suzCBUaGUgYmxvY2sgbnVtYmVyIGlzIHdoZW4gdGhlIHZlc3Rpbmcgc2hvdWxkIHN0YXJ0LgAcU2lnbmluZwABBAZ5AYkBBAAEwCBUaGUgc3RhdGVtZW50IGtpbmQgdGhhdCBtdXN0IGJlIHNpZ25lZCwgaWYgYW55LgAkUHJlY2xhaW1zAAEEBgR5AQQABC0BIFByZS1jbGFpbWVkIEV0aGVyZXVtIGFjY291bnRzLCBieSB0aGUgQWNjb3VudCBJRCB0aGF0IHRoZXkgYXJlIGNsYWltZWQgdG8uAAFtAQABkQgABBhQcmVmaXgYiIRQYXkgRE9UcyB0byB0aGUgUG9sa2Fkb3QgYWNjb3VudDoAAAE1CwAAAA8AAChBdXRob3JzaGlwAShBdXRob3JzaGlwBBhBdXRob3IAAAQEAARkIEF1dGhvciBvZiBjdXJyZW50IGJsb2NrLgAAAAAAAAAUAABEQ29sbGF0b3JTZWxlY3Rpb24BRENvbGxhdG9yU2VsZWN0aW9uFDRJbnZ1bG5lcmFibGVzAQA5CwQABBEBIFRoZSBpbnZ1bG5lcmFibGUsIHBlcm1pc3Npb25lZCBjb2xsYXRvcnMuIFRoaXMgbGlzdCBtdXN0IGJlIHNvcnRlZC4ANENhbmRpZGF0ZUxpc3QBAD0LBAAUaQEgVGhlIChjb21tdW5pdHksIGxpbWl0ZWQpIGNvbGxhdGlvbiBjYW5kaWRhdGVzLiBgQ2FuZGlkYXRlc2AgYW5kIGBJbnZ1bG5lcmFibGVzYCBzaG91bGQgYmVQIG11dHVhbGx5IGV4Y2x1c2l2ZS4AdQEgVGhpcyBsaXN0IGlzIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgZGVwb3NpdCBhbmQgd2hlbiB0aGUgZGVwb3NpdHMgYXJlIGVxdWFsLCB0aGUgbGVhc3SgIHJlY2VudGx5IHVwZGF0ZWQgaXMgY29uc2lkZXJlZCBncmVhdGVyLgBETGFzdEF1dGhvcmVkQmxvY2sBAQQFBDgQAAAAAASEIExhc3QgYmxvY2sgYXV0aG9yZWQgYnkgY29sbGF0b3IuAEREZXNpcmVkQ2FuZGlkYXRlcwEAOBAAAAAADHggRGVzaXJlZCBudW1iZXIgb2YgY2FuZGlkYXRlcy4AdQEgVGhpcyBzaG91bGQgaWRlYWxseSBhbHdheXMgYmUgbGVzcyB0aGFuIFtgQ29uZmlnOjpNYXhDYW5kaWRhdGVzYF0gZm9yIHdlaWdodHMgdG8gYmUgY29ycmVjdC4ANENhbmRpZGFjeUJvbmQBAFUBQAAAAAAAAAAAAAAAAAAAAAAMuCBGaXhlZCBhbW91bnQgdG8gZGVwb3NpdCB0byBiZWNvbWUgYSBjb2xsYXRvci4AQQEgV2hlbiBhIGNvbGxhdG9yIGNhbGxzIGBsZWF2ZV9pbnRlbnRgIHRoZXkgaW1tZWRpYXRlbHkgcmVjZWl2ZSB0aGUgZGVwb3NpdCBiYWNrLgABkQEAAZUIABgUUG90SWRJCyBQb3RTdGFrZQT0IEFjY291bnQgSWRlbnRpZmllciBmcm9tIHdoaWNoIHRoZSBpbnRlcm5hbCBQb3QgaXMgZ2VuZXJhdGVkLgA0TWF4Q2FuZGlkYXRlczgQZAAAAAzIIE1heGltdW0gbnVtYmVyIG9mIGNhbmRpZGF0ZXMgdGhhdCB3ZSBzaG91bGQgaGF2ZS4AzCBUaGlzIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBpbnZ1bG5lcmFibGVzLgBQTWluRWxpZ2libGVDb2xsYXRvcnM4EAQAAAAMVQEgTWluaW11bSBudW1iZXIgZWxpZ2libGUgY29sbGF0b3JzLiBTaG91bGQgYWx3YXlzIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiBUaGlzIGluY2x1ZGVzUQEgSW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlcmUgd2lsbCBhbHdheXMgYmUgb25lIGNvbGxhdG9yIHdobyBjYW5EIHByb2R1Y2UgYSBibG9jay4AQE1heEludnVsbmVyYWJsZXM4EBQAAAAEhCBNYXhpbXVtIG51bWJlciBvZiBpbnZ1bG5lcmFibGVzLgA0S2lja1RocmVzaG9sZDgQEA4AAAAALHBvdF9hY2NvdW50BIBtb2RsUG90U3Rha2UAAAAAAAAAAAAAAAAAAAAAAAAAAASgIEdldHMgdGhpcyBwYWxsZXQncyBkZXJpdmVkIHBvdCBhY2NvdW50LgABTQsABCxWYWxpZGF0b3JJZAQEdCBBIHN0YWJsZSBJRCBmb3IgYSB2YWxpZGF0b3IuABUAABxTZXNzaW9uARxTZXNzaW9uIChWYWxpZGF0b3JzAQBdAQQABHwgVGhlIGN1cnJlbnQgc2V0IG9mIHZhbGlkYXRvcnMuADBDdXJyZW50SW5kZXgBADgQAAAAAAR4IEN1cnJlbnQgaW5kZXggb2YgdGhlIHNlc3Npb24uADRRdWV1ZWRDaGFuZ2VkAQBZAQQACDkBIFRydWUgaWYgdGhlIHVuZGVybHlpbmcgZWNvbm9taWMgaWRlbnRpdGllcyBvciB3ZWlnaHRpbmcgYmVoaW5kIHRoZSB2YWxpZGF0b3JzpCBoYXMgY2hhbmdlZCBpbiB0aGUgcXVldWVkIHZhbGlkYXRvciBzZXQuAChRdWV1ZWRLZXlzAQBRCwQACD0BIFRoZSBxdWV1ZWQga2V5cyBmb3IgdGhlIG5leHQgc2Vzc2lvbi4gV2hlbiB0aGUgbmV4dCBzZXNzaW9uIGJlZ2lucywgdGhlc2Uga2V5c+Agd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgdmFsaWRhdG9yJ3Mgc2Vzc2lvbiBrZXlzLgBIRGlzYWJsZWRWYWxpZGF0b3JzAQBZCwQAFIAgSW5kaWNlcyBvZiBkaXNhYmxlZCB2YWxpZGF0b3JzLgA9ASBUaGUgdmVjIGlzIGFsd2F5cyBrZXB0IHNvcnRlZCBzbyB0aGF0IHdlIGNhbiBmaW5kIHdoZXRoZXIgYSBnaXZlbiB2YWxpZGF0b3IgaXM9ASBkaXNhYmxlZCB1c2luZyBiaW5hcnkgc2VhcmNoLiBJdCBnZXRzIGNsZWFyZWQgd2hlbiBgb25fc2Vzc2lvbl9lbmRpbmdgIHJldHVybnNkIGEgbmV3IHNldCBvZiBpZGVudGl0aWVzLgAgTmV4dEtleXMAAQQFBJkBBAAEnCBUaGUgbmV4dCBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yLgAgS2V5T3duZXIAAQQFZQsEBAAECQEgVGhlIG93bmVyIG9mIGEga2V5LiBUaGUga2V5IGlzIHRoZSBgS2V5VHlwZUlkYCArIHRoZSBlbmNvZGVkIGtleS4AREV4dGVybmFsbHlTZXRLZXlzAAEEBQQQBAAQMQEgQWNjb3VudHMgd2hvc2Uga2V5cyB3ZXJlIHNldCB2aWEgYFNlc3Npb25JbnRlcmZhY2VgIChleHRlcm5hbCBwYXRoKSB3aXRob3V0OQEgaW5jcmVtZW50aW5nIHRoZSBjb25zdW1lciByZWZlcmVuY2Ugb3IgcGxhY2luZyBhIGtleSBkZXBvc2l0LiBgZG9fcHVyZ2Vfa2V5c2A5ASBvbmx5IGRlY3JlbWVudHMgY29uc3VtZXJzIGZvciBhY2NvdW50cyB0aGF0IHdlcmUgcmVnaXN0ZXJlZCB0aHJvdWdoIHRoZSBsb2NhbEAgc2Vzc2lvbiBwYWxsZXQuAAGVAQABmQgABChLZXlEZXBvc2l0VQFAAAAAAAAAAAAAAAAAAAAAAASkIFRoZSBhbW91bnQgdG8gYmUgaGVsZCB3aGVuIHNldHRpbmcga2V5cy4AAW0LAAgsVmFsaWRhdG9ySWQEBHQgQSBzdGFibGUgSUQgZm9yIGEgdmFsaWRhdG9yLhBLZXlzmQEEKCBUaGUga2V5cy4AFgAAEEF1cmEBEEF1cmEILEF1dGhvcml0aWVzAQBxCwQABGwgVGhlIGN1cnJlbnQgYXV0aG9yaXR5IHNldC4ALEN1cnJlbnRTbG90AQB5CyAAAAAAAAAAAAyAIFRoZSBjdXJyZW50IHNsb3Qgb2YgdGhpcyBibG9jay4AlCBUaGlzIHdpbGwgYmUgc2V0IGluIGBvbl9pbml0aWFsaXplYC4AAAAEMFNsb3REdXJhdGlvbigg4C4AAAAAAAAUDQEgVGhlIHNsb3QgZHVyYXRpb24gQXVyYSBzaG91bGQgcnVuIHdpdGgsIGV4cHJlc3NlZCBpbiBtaWxsaXNlY29uZHMuACEBIFRoZSBlZmZlY3RpdmUgdmFsdWUgb2YgdGhpcyB0eXBlIGNhbiBiZSBjaGFuZ2VkIHdpdGggYSBydW50aW1lIHVwZ3JhZGUuADUBIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBlaXRoZXIgdXNlIFtgTWluaW11bVBlcmlvZFRpbWVzVHdvYF0gb3IgYSBjb25zdC4AAAQsQXV0aG9yaXR5SWSdAQSYIFRoZSBpZGVudGlmaWVyIHR5cGUgZm9yIGFuIGF1dGhvcml0eS4AFwAAHEF1cmFFeHQBHEF1cmFFeHQILEF1dGhvcml0aWVzAQBxCwQAFJQgU2VydmVzIGFzIGNhY2hlIGZvciB0aGUgYXV0aG9yaXRpZXMuAHEBIFRoZSBhdXRob3JpdGllcyBpbiBBdVJhIGFyZSBvdmVyd3JpdHRlbiBpbiBgb25faW5pdGlhbGl6ZWAgd2hlbiB3ZSBzd2l0Y2ggdG8gYSBuZXcgc2Vzc2lvbixdASBidXQgd2UgcmVxdWlyZSB0aGUgb2xkIGF1dGhvcml0aWVzIHRvIHZlcmlmeSB0aGUgc2VhbCB3aGVuIHZhbGlkYXRpbmcgYSBQb1YuIFRoaXMgd2lsbA0BIGFsd2F5cyBiZSB1cGRhdGVkIHRvIHRoZSBsYXRlc3QgQXVSYSBhdXRob3JpdGllcyBpbiBgb25fZmluYWxpemVgLgA0UmVsYXlTbG90SW5mbwAAfQsEABAJASBDdXJyZW50IHJlbGF5IGNoYWluIHNsb3QgcGFpcmVkIHdpdGggYSBudW1iZXIgb2YgYXV0aG9yZWQgYmxvY2tzLgBlASBUaGlzIGlzIHVwZGF0ZWQgaW4gW2BGaXhlZFZlbG9jaXR5Q29uc2Vuc3VzSG9vazo6b25fc3RhdGVfcHJvb2ZgXSB3aXRoIHRoZSBjdXJyZW50IHJlbGF53CBjaGFpbiBzbG90IGFzIHByb3ZpZGVkIGJ5IHRoZSByZWxheSBjaGFpbiBzdGF0ZSBwcm9vZi4AAAAAAAAAGAAAJFhjbXBRdWV1ZQEkWGNtcFF1ZXVlHFBJbmJvdW5kWGNtcFN1c3BlbmRlZAEAgQsEACANASBUaGUgc3VzcGVuZGVkIGluYm91bmQgWENNUCBjaGFubmVscy4gQWxsIG90aGVycyBhcmUgbm90IHN1c3BlbmRlZC4AcQEgVGhpcyBpcyBhIGBTdG9yYWdlVmFsdWVgIGluc3RlYWQgb2YgYSBgU3RvcmFnZU1hcGAgc2luY2Ugd2UgZXhwZWN0IG11bHRpcGxlIHJlYWRzIHBlciBibG9ja2kBIHRvIGRpZmZlcmVudCBrZXlzIHdpdGggYSBvbmUgYnl0ZSBwYXlsb2FkLiBUaGUgYWNjZXNzIHRvIGBCb3VuZGVkQlRyZWVTZXRgIHdpbGwgYmUgY2FjaGVkFQEgd2l0aGluIHRoZSBibG9jayBhbmQgdGhlcmVmb3JlIG9ubHkgaW5jbHVkZWQgb25jZSBpbiB0aGUgcHJvb2Ygc2l6ZS4AZQEgTk9URTogVGhlIFBvViBiZW5jaG1hcmtpbmcgY2Fubm90IGtub3cgdGhpcyBhbmQgd2lsbCBvdmVyLWVzdGltYXRlLCBidXQgdGhlIGFjdHVhbCBwcm9vZkQgd2lsbCBiZSBzbWFsbGVyLgBIT3V0Ym91bmRYY21wU3RhdHVzAQCJCwQAGF0BIFRoZSBub24tZW1wdHkgWENNUCBjaGFubmVscyBpbiBvcmRlciBvZiBiZWNvbWluZyBub24tZW1wdHksIGFuZCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0UQEgYW5kIGxhc3Qgb3V0Ym91bmQgbWVzc2FnZS4gSWYgdGhlIHR3byBpbmRpY2VzIGFyZSBlcXVhbCwgdGhlbiBpdCBpbmRpY2F0ZXMgYW4gZW1wdHlZASBxdWV1ZSBhbmQgdGhlcmUgbXVzdCBiZSBhIG5vbi1gT2tgIGBPdXRib3VuZFN0YXR1c2AuIFdlIGFzc3VtZSBxdWV1ZXMgZ3JvdyBubyBncmVhdGVyWQEgdGhhbiA2NTUzNSBpdGVtcy4gUXVldWUgaW5kaWNlcyBmb3Igbm9ybWFsIG1lc3NhZ2VzIGJlZ2luIGF0IG9uZTsgemVybyBpcyByZXNlcnZlZCBpbhEBIGNhc2Ugb2YgdGhlIG5lZWQgdG8gc2VuZCBhIGhpZ2gtcHJpb3JpdHkgc2lnbmFsIG1lc3NhZ2UgdGhpcyBibG9jay4JASBUaGUgYm9vbCBpcyB0cnVlIGlmIHRoZXJlIGlzIGEgc2lnbmFsIG1lc3NhZ2Ugd2FpdGluZyB0byBiZSBzZW50LgBQT3V0Ym91bmRYY21wTWVzc2FnZXMBAQgCBZ0LoQsEAAS8IFRoZSBtZXNzYWdlcyBvdXRib3VuZCBpbiBhIGdpdmVuIFhDTVAgY2hhbm5lbC4AOFNpZ25hbE1lc3NhZ2VzAQEEApyhCwQABKAgQW55IHNpZ25hbCBtZXNzYWdlcyB3YWl0aW5nIHRvIGJlIHNlbnQuACxRdWV1ZUNvbmZpZwEApQswIAAAADAAAAAIAAAABBUBIFRoZSBjb25maWd1cmF0aW9uIHdoaWNoIGNvbnRyb2xzIHRoZSBkeW5hbWljcyBvZiB0aGUgb3V0Ym91bmQgcXVldWUuADhRdWV1ZVN1c3BlbmRlZAEAWQEEAARBASBXaGV0aGVyIG9yIG5vdCB0aGUgWENNUCBxdWV1ZSBpcyBzdXNwZW5kZWQgZnJvbSBleGVjdXRpbmcgaW5jb21pbmcgWENNcyBvciBub3QuAEREZWxpdmVyeUZlZUZhY3RvcgEBBAWcDQVAAABkp7O24A0AAAAAAAAAAATEIFRoZSBmYWN0b3IgdG8gbXVsdGlwbHkgdGhlIGJhc2UgZGVsaXZlcnkgZmVlIGJ5LgABoQEAAZ0IAAxMTWF4SW5ib3VuZFN1c3BlbmRlZDgQ6AMAABRJASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5ib3VuZCBYQ01QIGNoYW5uZWxzIHRoYXQgY2FuIGJlIHN1c3BlbmRlZCBzaW11bHRhbmVvdXNseS4AXQEgQW55IGZ1cnRoZXIgY2hhbm5lbCBzdXNwZW5zaW9ucyB3aWxsIGZhaWwgYW5kIG1lc3NhZ2VzIG1heSBnZXQgZHJvcHBlZCB3aXRob3V0IGZ1cnRoZXJFASBub3RpY2UuIENob29zaW5nIGEgaGlnaCB2YWx1ZSAoMTAwMCkgaXMgb2theTsgdGhlIHRyYWRlLW9mZiB0aGF0IGlzIGRlc2NyaWJlZCBpbtggW2BJbmJvdW5kWGNtcFN1c3BlbmRlZGBdIHN0aWxsIGFwcGxpZXMgYXQgdGhhdCBzY2FsZS4AZE1heEFjdGl2ZU91dGJvdW5kQ2hhbm5lbHM4EIAAAAAgZQEgTWF4aW1hbCBudW1iZXIgb2Ygb3V0Ym91bmQgWENNUCBjaGFubmVscyB0aGF0IGNhbiBoYXZlIG1lc3NhZ2VzIHF1ZXVlZCBhdCB0aGUgc2FtZSB0aW1lLgBVASBJZiB0aGlzIGlzIHJlYWNoZWQsIHRoZW4gbm8gZnVydGhlciBtZXNzYWdlcyBjYW4gYmUgc2VudCB0byBjaGFubmVscyB0aGF0IGRvIG5vdCB5ZXRdASBoYXZlIGEgbWVzc2FnZSBxdWV1ZWQuIFRoaXMgc2hvdWxkIGJlIHNldCB0byB0aGUgZXhwZWN0ZWQgbWF4aW11bSBvZiBvdXRib3VuZCBjaGFubmVsc2EBIHdoaWNoIGlzIGRldGVybWluZWQgYnkgW2BTZWxmOjpDaGFubmVsSW5mb2BdLiBJdCBpcyBpbXBvcnRhbnQgdG8gc2V0IHRoaXMgbGFyZ2UgZW5vdWdoLF0BIHNpbmNlIG90aGVyd2lzZSB0aGUgY29uZ2VzdGlvbiBjb250cm9sIHByb3RvY29sIHdpbGwgbm90IHdvcmsgYXMgaW50ZW5kZWQgYW5kIG1lc3NhZ2VzUQEgbWF5IGJlIGRyb3BwZWQuIFRoaXMgdmFsdWUgaW5jcmVhc2VzIHRoZSBQb1YgYW5kIHNob3VsZCB0aGVyZWZvcmUgbm90IGJlIHBpY2tlZCB0b29NASBoaWdoLiBHb3Zlcm5hbmNlIG5lZWRzIHRvIHBheSBhdHRlbnRpb24gdG8gbm90IG9wZW4gbW9yZSBjaGFubmVscyB0aGFuIHRoaXMgdmFsdWUuACxNYXhQYWdlU2l6ZTgQAJwBABS4IFRoZSBtYXhpbWFsIHBhZ2Ugc2l6ZSBmb3IgSFJNUCBtZXNzYWdlIHBhZ2VzLgBhASBBIGxvd2VyIGxpbWl0IGNhbiBiZSBzZXQgZHluYW1pY2FsbHksIGJ1dCB0aGlzIGlzIHRoZSBoYXJkLWxpbWl0IGZvciB0aGUgUG9WIHdvcnN0IGNhc2VVASBiZW5jaG1hcmtpbmcuIFRoZSBsaW1pdCBmb3IgdGhlIHNpemUgb2YgYSBtZXNzYWdlIGlzIHNsaWdodGx5IGJlbG93IHRoaXMsIHNpbmNlIHNvbWW4IG92ZXJoZWFkIGlzIGluY3VycmVkIGZvciBlbmNvZGluZyB0aGUgZm9ybWF0LgABqQsAAAAeAAAsUG9sa2Fkb3RYY20BLFBvbGthZG90WGNtPDBRdWVyeUNvdW50ZXIBACggAAAAAAAAAAAEiCBUaGUgbGF0ZXN0IGF2YWlsYWJsZSBxdWVyeSBpbmRleC4AHFF1ZXJpZXMAAQQCKK0LBAAEVCBUaGUgb25nb2luZyBxdWVyaWVzLgAoQXNzZXRUcmFwcwEBBAY8OBAAAAAAEGggVGhlIGV4aXN0aW5nIGFzc2V0IHRyYXBzLgBhASBLZXkgaXMgdGhlIGJsYWtlMiAyNTYgaGFzaCBvZiAob3JpZ2luLCB2ZXJzaW9uZWQgYEFzc2V0c2ApIHBhaXIuIFZhbHVlIGlzIHRoZSBudW1iZXIgb2YdASB0aW1lcyB0aGlzIHBhaXIgaGFzIGJlZW4gdHJhcHBlZCAodXN1YWxseSBqdXN0IDEgaWYgaXQgZXhpc3RzIGF0IGFsbCkuADhTYWZlWGNtVmVyc2lvbgAAOAQACGEBIERlZmF1bHQgdmVyc2lvbiB0byBlbmNvZGUgWENNIHdoZW4gbGF0ZXN0IHZlcnNpb24gb2YgZGVzdGluYXRpb24gaXMgdW5rbm93bi4gSWYgYE5vbmVgLD0BIHRoZW4gdGhlIGRlc3RpbmF0aW9ucyB3aG9zZSBYQ00gdmVyc2lvbiBpcyB1bmtub3duIGFyZSBjb25zaWRlcmVkIHVucmVhY2hhYmxlLgBAU3VwcG9ydGVkVmVyc2lvbgABCAUCwQs4BAAE8CBUaGUgTGF0ZXN0IHZlcnNpb25zIHRoYXQgd2Uga25vdyB2YXJpb3VzIGxvY2F0aW9ucyBzdXBwb3J0LgBAVmVyc2lvbk5vdGlmaWVycwABCAUCwQsoBAAEBQEgQWxsIGxvY2F0aW9ucyB0aGF0IHdlIGhhdmUgcmVxdWVzdGVkIHZlcnNpb24gbm90aWZpY2F0aW9ucyBmcm9tLgBQVmVyc2lvbk5vdGlmeVRhcmdldHMAAQgFAsELxQsEAAhxASBUaGUgdGFyZ2V0IGxvY2F0aW9ucyB0aGF0IGFyZSBzdWJzY3JpYmVkIHRvIG91ciB2ZXJzaW9uIGNoYW5nZXMsIGFzIHdlbGwgYXMgdGhlIG1vc3QgcmVjZW50lCBvZiBvdXIgdmVyc2lvbnMgd2UgaW5mb3JtZWQgdGhlbSBvZi4AVFZlcnNpb25EaXNjb3ZlcnlRdWV1ZQEAyQsEAAxlASBEZXN0aW5hdGlvbnMgd2hvc2UgbGF0ZXN0IFhDTSB2ZXJzaW9uIHdlIHdvdWxkIGxpa2UgdG8ga25vdy4gRHVwbGljYXRlcyBub3QgYWxsb3dlZCwgYW5kcQEgdGhlIGB1MzJgIGNvdW50ZXIgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGEgc2VuZCB0byB0aGUgZGVzdGluYXRpb24gaGFzIGJlZW4gYXR0ZW1wdGVkLIwgd2hpY2ggaXMgdXNlZCBhcyBhIHByaW9yaXRpemF0aW9uLgBAQ3VycmVudE1pZ3JhdGlvbgAA1QsEAAScIFRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHN0YWdlLCBpZiBhbnkuAFRSZW1vdGVMb2NrZWRGdW5naWJsZXMAAQwFAgLZC90LBAAE8CBGdW5naWJsZSBhc3NldHMgd2hpY2ggd2Uga25vdyBhcmUgbG9ja2VkIG9uIGEgcmVtb3RlIGNoYWluLgA8TG9ja2VkRnVuZ2libGVzAAEEAgTtCwQABOAgRnVuZ2libGUgYXNzZXRzIHdoaWNoIHdlIGtub3cgYXJlIGxvY2tlZCBvbiB0aGlzIGNoYWluLgBUWGNtRXhlY3V0aW9uU3VzcGVuZGVkAQBZAQQABLQgR2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4APFNob3VsZFJlY29yZFhjbQEAWQEEABxZASBXaGV0aGVyIG9yIG5vdCBpbmNvbWluZyBYQ01zIChib3RoIGV4ZWN1dGVkIGxvY2FsbHkgYW5kIHJlY2VpdmVkKSBzaG91bGQgYmUgcmVjb3JkZWQuxCBPbmx5IG9uZSBYQ00gcHJvZ3JhbSB3aWxsIGJlIHJlY29yZGVkIGF0IGEgdGltZS4pASBUaGlzIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gcnVudGltZSBBUElzLCBhbmQgaXQncyBhZHZpc2VkIGl0IHN0YXlzIGZhbHNlDQEgZm9yIGFsbCBvdGhlciB1c2UgY2FzZXMsIHNvIGFzIHRvIG5vdCBkZWdyYWRlIHJlZ3VsYXIgcGVyZm9ybWFuY2UuAFkBIE9ubHkgcmVsZXZhbnQgaWYgdGhpcyBwYWxsZXQgaXMgYmVpbmcgdXNlZCBhcyB0aGUgW2B4Y21fZXhlY3V0b3I6OnRyYWl0czo6UmVjb3JkWGNtYF3IIGltcGxlbWVudGF0aW9uIGluIHRoZSBYQ00gZXhlY3V0b3IgY29uZmlndXJhdGlvbi4ALFJlY29yZGVkWGNtAAD1AgQAGEkBIElmIFtgU2hvdWxkUmVjb3JkWGNtYF0gaXMgc2V0IHRvIHRydWUsIHRoZW4gdGhlIGxhc3QgWENNIHByb2dyYW0gZXhlY3V0ZWQgbG9jYWxseVQgd2lsbCBiZSBzdG9yZWQgaGVyZS4pASBSdW50aW1lIEFQSXMgY2FuIGZldGNoIHRoZSBYQ00gdGhhdCB3YXMgZXhlY3V0ZWQgYnkgYWNjZXNzaW5nIHRoaXMgdmFsdWUuAFkBIE9ubHkgcmVsZXZhbnQgaWYgdGhpcyBwYWxsZXQgaXMgYmVpbmcgdXNlZCBhcyB0aGUgW2B4Y21fZXhlY3V0b3I6OnRyYWl0czo6UmVjb3JkWGNtYF3IIGltcGxlbWVudGF0aW9uIGluIHRoZSBYQ00gZXhlY3V0b3IgY29uZmlndXJhdGlvbi4AREF1dGhvcml6ZWRBbGlhc2VzAAEEAqkB+QsEAAxlASBNYXAgb2YgYXV0aG9yaXplZCBhbGlhc2VycyBvZiBsb2NhbCBvcmlnaW5zLiBFYWNoIGxvY2FsIGxvY2F0aW9uIGNhbiBhdXRob3JpemUgYSBsaXN0IG9mWQEgb3RoZXIgbG9jYXRpb25zIHRvIGFsaWFzIGludG8gaXQuIEVhY2ggYWxpYXNlciBpcyBvbmx5IHZhbGlkIHVudGlsIGl0cyBpbm5lciBgZXhwaXJ5YDggYmxvY2sgbnVtYmVyLgABpQEIAQK5AVRoaXMgZXh0cmluc2ljIHVzZXMgYFdlaWdodExpbWl0OjpVbmxpbWl0ZWRgLCBwbGVhc2UgbWlncmF0ZSB0byBgbGltaXRlZF90ZWxlcG9ydF9hc3NldHNgIG9yIGB0cmFuc2Zlcl9hc3NldHNgAAIC2QFUaGlzIGV4dHJpbnNpYyB1c2VzIGBXZWlnaHRMaW1pdDo6VW5saW1pdGVkYCwgcGxlYXNlIG1pZ3JhdGUgdG8gYGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHNgIG9yIGB0cmFuc2Zlcl9hc3NldHNgAAGhCAAQRFVuaXZlcnNhbExvY2F0aW9uAQIYAgkCAHEXBIQgVGhpcyBjaGFpbidzIFVuaXZlcnNhbCBMb2NhdGlvbi4AUEFkdmVydGlzZWRYY21WZXJzaW9uOBAFAAAACCUBIFRoZSBsYXRlc3Qgc3VwcG9ydGVkIHZlcnNpb24gdGhhdCB3ZSBhZHZlcnRpc2UuIEdlbmVyYWxseSBqdXN0IHNldCBpdCB0b4QgYHBhbGxldF94Y206OkN1cnJlbnRYY21WZXJzaW9uYC4AKE1heExvY2tlcnM4EAgAAAAEGQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGxvY2FsIFhDTSBsb2NrcyB0aGF0IGEgc2luZ2xlIGFjY291bnQgbWF5IGhhdmUuAFhNYXhSZW1vdGVMb2NrQ29uc3VtZXJzOBAAAAAABPwgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBhIHNpbmdsZSByZW1vdGUgbG9jayBtYXkgaGF2ZS4AAREMBBgCvFVzZSBgTG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlV2l0aEVycm9yYCBpbnN0ZWFkARgyMC4wLjAILFJ1bnRpbWVDYWxsIARkIFRoZSBydW50aW1lIGBDYWxsYCB0eXBlLnBSZW1vdGVMb2NrQ29uc3VtZXJJZGVudGlmaWVyEATEIFRoZSBJRCB0eXBlIGZvciBsb2NhbCBjb25zdW1lcnMgb2YgcmVtb3RlIGxvY2tzLgAfAAAoQ3VtdWx1c1hjbQABpQMAAbEIAAAAAAAgAABEVG9LdXNhbWFYY21Sb3V0ZXIBRFRvS3VzYW1hWGNtUm91dGVyBBhCcmlkZ2UBABkMRAAAZKeztuANAAAAAAAAAAAAHGggQnJpZGdlIHRoYXQgd2UgYXJlIHVzaW5nLgBxASAqKmJyaWRnZXMtdjEqKiBhc3N1bXB0aW9uczogYWxsIG91dGJvdW5kIG1lc3NhZ2VzIHRocm91Z2ggdGhpcyByb3V0ZXIgYXJlIHVzaW5nIHNpbmdsZSBsYW5lbQEgYW5kIHRvIHNpbmdsZSByZW1vdGUgY29uc2Vuc3VzLiBJZiB0aGVyZSBpcyBzb21lIG90aGVyIHJlbW90ZSBjb25zZW5zdXMgdGhhdCB1c2VzIHRoZSBzYW1lYQEgYnJpZGdlIGh1YiwgdGhlIHNlcGFyYXRlIHBhbGxldCBpbnN0YW5jZSBzaGFsbCBiZSB1c2VkLCBJbiBgdjJgIHdlJ2xsIGhhdmUgYWxsIHJlcXVpcmVkcQEgcHJpbWl0aXZlcyAobGFuZS1pZCBha2EgYnJpZGdlLWlkLCBkZXJpdmVkIGZyb20gWENNIGxvY2F0aW9ucykgdG8gc3VwcG9ydCBtdWx0aXBsZSAgYnJpZGdlc3QgYnkgdGhlIHNhbWUgcGFsbGV0IGluc3RhbmNlLgABqQMAAbUIAAAAAAAiAAAwTWVzc2FnZVF1ZXVlATBNZXNzYWdlUXVldWUMMEJvb2tTdGF0ZUZvcgEBBAWxAx0MdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMwgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBhbmQgbGFzdCAobm9uLWVtcHR5KSBwYWdlcy4ALFNlcnZpY2VIZWFkAACxAwQABLwgVGhlIG9yaWdpbiBhdCB3aGljaCB3ZSBzaG91bGQgYmVnaW4gc2VydmljaW5nLgAUUGFnZXMAAQgFBSkMLQwEAASIIFRoZSBtYXAgb2YgcGFnZSBpbmRpY2VzIHRvIHBhZ2VzLgABrQMAAbkIABAgSGVhcFNpemU4EAAAAQAUPQEgVGhlIHNpemUgb2YgdGhlIHBhZ2U7IHRoaXMgaW1wbGllcyB0aGUgbWF4aW11bSBtZXNzYWdlIHNpemUgd2hpY2ggY2FuIGJlIHNlbnQuAFkBIEEgZ29vZCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBleHBlY3RlZCBtZXNzYWdlIHNpemVzLCB0aGVpciB3ZWlnaHRzLCB0aGUgd2VpZ2h0IHRoYXQgaXNdASBhdmFpbGFibGUgZm9yIHByb2Nlc3NpbmcgdGhlbSBhbmQgdGhlIG1heGltYWwgbmVlZGVkIG1lc3NhZ2Ugc2l6ZS4gVGhlIG1heGltYWwgbWVzc2FnZREBIHNpemUgaXMgc2xpZ2h0bHkgbG93ZXIgdGhhbiB0aGlzIGFzIGRlZmluZWQgYnkgW2BNYXhNZXNzYWdlTGVuT2ZgXS4AIE1heFN0YWxlOBAIAAAADF0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFsZSBwYWdlcyAoaS5lLiBvZiBvdmVyd2VpZ2h0IG1lc3NhZ2VzKSBhbGxvd2VkIGJlZm9yZSBjdWxsaW5nUQEgY2FuIGhhcHBlbi4gT25jZSB0aGVyZSBhcmUgbW9yZSBzdGFsZSBwYWdlcyB0aGFuIHRoaXMsIHRoZW4gaGlzdG9yaWNhbCBwYWdlcyBtYXkgYmX8IGRyb3BwZWQsIGV2ZW4gaWYgdGhleSBjb250YWluIHVucHJvY2Vzc2VkIG92ZXJ3ZWlnaHQgbWVzc2FnZXMuADRTZXJ2aWNlV2VpZ2h0DQEsAQcAEKXU6AIAQAEYQQEgVGhlIGFtb3VudCBvZiB3ZWlnaHQgKGlmIGFueSkgd2hpY2ggc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlIGZvcqggc2VydmljaW5nIGVucXVldWVkIGl0ZW1zIGBvbl9pbml0aWFsaXplYC4A/CBUaGlzIG1heSBiZSBsZWdpdGltYXRlbHkgYE5vbmVgIGluIHRoZSBjYXNlIHRoYXQgeW91IHdpbGwgY2FsbF0BIGBTZXJ2aWNlUXVldWVzOjpzZXJ2aWNlX3F1ZXVlc2AgbWFudWFsbHkgb3Igc2V0IFtgU2VsZjo6SWRsZU1heFNlcnZpY2VXZWlnaHRgXSB0byBoYXZlVCBpdCBydW4gaW4gYG9uX2lkbGVgLgBQSWRsZU1heFNlcnZpY2VXZWlnaHQNASwBBwAQpdToAgBAARRdASBUaGUgbWF4aW11bSBhbW91bnQgb2Ygd2VpZ2h0IChpZiBhbnkpIHRvIGJlIHVzZWQgZnJvbSByZW1haW5pbmcgd2VpZ2h0IGBvbl9pZGxlYCB3aGljaEEBIHNob3VsZCBiZSBwcm92aWRlZCB0byB0aGUgbWVzc2FnZSBxdWV1ZSBmb3Igc2VydmljaW5nIGVucXVldWVkIGl0ZW1zIGBvbl9pZGxlYC49ASBVc2VmdWwgZm9yIHBhcmFjaGFpbnMgdG8gcHJvY2VzcyBtZXNzYWdlcyBhdCB0aGUgc2FtZSBibG9jayB0aGV5IGFyZSByZWNlaXZlZC4AKQEgSWYgYE5vbmVgLCBpdCB3aWxsIG5vdCBjYWxsIGBTZXJ2aWNlUXVldWVzOjpzZXJ2aWNlX3F1ZXVlc2AgaW4gYG9uX2lkbGVgLgABNQwABBBTaXplOARUIFBhZ2UvaGVhcCBzaXplIHR5cGUuACMAAGBTbm93YnJpZGdlU3lzdGVtRnJvbnRlbmQBYFNub3dicmlkZ2VTeXN0ZW1Gcm9udGVuZARMRXhwb3J0T3BlcmF0aW5nTW9kZQEAuQMEAATYIFRoZSBjdXJyZW50IG9wZXJhdGluZyBtb2RlIGZvciBleHBvcnRpbmcgdG8gRXRoZXJldW0uAAG1AwABwQgAAAE5DAAAACQAABxVdGlsaXR5AAHJAwABxQgABExiYXRjaGVkX2NhbGxzX2xpbWl0OBCqKgAABKggVGhlIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgYmF0Y2hlZCBjYWxscy4AAT0MAAgsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS40UGFsbGV0c09yaWdpbtUDBPAgVGhlIGNhbGxlciBvcmlnaW4sIG92ZXJhcmNoaW5nIHR5cGUgb2YgYWxsIHBhbGxldHMgb3JpZ2lucy4AKAAAIE11bHRpc2lnASBNdWx0aXNpZwQkTXVsdGlzaWdzAAEIBQJBDEUMBAAElCBUaGUgc2V0IG9mIG9wZW4gbXVsdGlzaWcgb3BlcmF0aW9ucy4AAQ0EAAHJCAAMLERlcG9zaXRCYXNlVQFAANu7dwAAAAAAAAAAAAAAABhZASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGEgbXVsdGlzaWcgZXhlY3V0aW9uIG9yIHRvhCBzdG9yZSBhIGRpc3BhdGNoIGNhbGwgZm9yIGxhdGVyLgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMxASBgNCArIHNpemVvZigoQmxvY2tOdW1iZXIsIEJhbGFuY2UsIEFjY291bnRJZCkpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXOAIGAzMiArIHNpemVvZihBY2NvdW50SWQpYCBieXRlcy4ANERlcG9zaXRGYWN0b3JVAUAA1DAAAAAAAAAAAAAAAAAADFUBIFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciB1bml0IHRocmVzaG9sZCB3aGVuIGNyZWF0aW5nIGEgbXVsdGlzaWcgZXhlY3V0aW9uLgAlASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyAzMiBieXRlcyBtb3JlIGludG8gYSBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4AOE1heFNpZ25hdG9yaWVzOBBkAAAABOwgVGhlIG1heGltdW0gYW1vdW50IG9mIHNpZ25hdG9yaWVzIGFsbG93ZWQgaW4gdGhlIG11bHRpc2lnLgABTQwABCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLgApAAAUUHJveHkBFFByb3h5CBxQcm94aWVzAQEEBQRRDEQAAAAAAAAAAAAAAAAAAAAAAAhFASBUaGUgc2V0IG9mIGFjY291bnQgcHJveGllcy4gTWFwcyB0aGUgYWNjb3VudCB3aGljaCBoYXMgZGVsZWdhdGVkIHRvIHRoZSBhY2NvdW50cyEBIHdoaWNoIGFyZSBiZWluZyBkZWxlZ2F0ZWQgdG8sIHRvZ2V0aGVyIHdpdGggdGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQuADRBbm5vdW5jZW1lbnRzAQEEBQRhDEQAAAAAAAAAAAAAAAAAAAAAAASsIFRoZSBhbm5vdW5jZW1lbnRzIG1hZGUgYnkgdGhlIHByb3h5IChrZXkpLgABGQQAAc0IABhAUHJveHlEZXBvc2l0QmFzZVUBQACdcncAAAAAAAAAAAAAAAAQEQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhIHByb3h5LgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMlASBgc2l6ZW9mKEJhbGFuY2UpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXMgYHNpemVvZihBY2NvdW50SWQpYCBieXRlcy4ASFByb3h5RGVwb3NpdEZhY3RvclUBQKBaMgAAAAAAAAAAAAAAAAAUvCBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgcHJveHkgYWRkZWQuADUBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIDMyIGJ5dGVzIHBsdXMgYW4gaW5zdGFuY2Ugb2YgYFByb3h5VHlwZWAgbW9yZSBpbnRvIGFhASBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4gVGh1cywgd2hlbiBjb25maWd1cmluZyBgUHJveHlEZXBvc2l0RmFjdG9yYCBvbmUgc2hvdWxkIHRha2X0IGludG8gYWNjb3VudCBgMzIgKyBwcm94eV90eXBlLmVuY29kZSgpLmxlbigpYCBieXRlcyBvZiBkYXRhLgAoTWF4UHJveGllczgQIAAAAATwIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBwcm94aWVzIGFsbG93ZWQgZm9yIGEgc2luZ2xlIGFjY291bnQuAChNYXhQZW5kaW5nOBAgAAAABEUBIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lLWRlbGF5ZWQgYW5ub3VuY2VtZW50cyB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIHBlbmRpbmcuAFxBbm5vdW5jZW1lbnREZXBvc2l0QmFzZVUBQADSfncAAAAAAAAAAAAAAAAQMQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhbiBhbm5vdW5jZW1lbnQuAEkBIFRoaXMgaXMgaGVsZCB3aGVuIGEgbmV3IHN0b3JhZ2UgaXRlbSBob2xkaW5nIGEgYEJhbGFuY2VgIGlzIGNyZWF0ZWQgKHR5cGljYWxseSAxNiAgYnl0ZXMpLgBkQW5ub3VuY2VtZW50RGVwb3NpdEZhY3RvclUBQEC1ZAAAAAAAAAAAAAAAAAAQ1CBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgYW5ub3VuY2VtZW50IG1hZGUuAFkBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIGFuIGBBY2NvdW50SWRgLCBgSGFzaGAgYW5kIGBCbG9ja051bWJlcmAgKHR5cGljYWxseSA2OCBieXRlcymMIGludG8gYSBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4AAXEMAAgsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS4kUHJveHlUeXBlIQQQVQEgQSBraW5kIG9mIHByb3h5OyBzcGVjaWZpZWQgd2l0aCB0aGUgcHJveHkgYW5kIHBhc3NlZCBpbiB0byB0aGUgYElzUHJveHlhYmxlYCBmaWx0ZXIuUQEgVGhlIGluc3RhbmNlIGZpbHRlciBkZXRlcm1pbmVzIHdoZXRoZXIgYSBnaXZlbiBjYWxsIG1heSBiZSBwcm94aWVkIHVuZGVyIHRoaXMgdHlwZS4ATQEgSU1QT1JUQU5UOiBgRGVmYXVsdGAgbXVzdCBiZSBwcm92aWRlZCBhbmQgTVVTVCBCRSB0aGUgdGhlICptb3N0IHBlcm1pc3NpdmUqIHZhbHVlLggYCdeDRnJ6DvWMD6A7r6Mjy8UUiNkqGqcTewO/tQ78F0RjaGVja19wZXJtaXNzaW9ucwgQY2FsbCAocHJveHlfdHlwZSEEWQEE9CBDaGVjayBpZiBhIGBSdW50aW1lQ2FsbGAgaXMgYWxsb3dlZCBmb3IgYSBnaXZlbiBgUHJveHlUeXBlYC4AGAnXg0Zyeg71jA+gO6+jIxcUsGB9Yq8KOzsK0sXVXFgsaXNfc3VwZXJzZXQIIHRvX2NoZWNrIQQcYWdhaW5zdCEEWQEE9CBDaGVjayBpZiBvbmUgYFByb3h5VHlwZWAgaXMgYSBzdWJzZXQgb2YgYW5vdGhlciBgUHJveHlUeXBlYC4AKgAAHEluZGljZXMBHEluZGljZXMEIEFjY291bnRzAAEEAjh1DAQABIggVGhlIGxvb2t1cCBmcm9tIGluZGV4IHRvIGFjY291bnQuAAElBAAB1QgABBxEZXBvc2l0VQFAANJ+dwAAAAAAAAAAAAAAAASsIFRoZSBkZXBvc2l0IG5lZWRlZCBmb3IgcmVzZXJ2aW5nIGFuIGluZGV4LgABeQwABDBBY2NvdW50SW5kZXg4CFUBIFR5cGUgdXNlZCBmb3Igc3RvcmluZyBhbiBhY2NvdW50J3MgaW5kZXg7IGltcGxpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGFjY291bnRzIHRoZUQgc3lzdGVtIGNhbiBob2xkLgArAAAYQXNzZXRzARhBc3NldHMYFEFzc2V0AAEEAjh9DAQABFQgRGV0YWlscyBvZiBhbiBhc3NldC4AHEFjY291bnQAAQgCAoUMiQwEAATkIFRoZSBob2xkaW5ncyBvZiBhIHNwZWNpZmljIGFjY291bnQgZm9yIGEgc3BlY2lmaWMgYXNzZXQuACRBcHByb3ZhbHMAAQwCAgKVDJkMBAAMWQEgQXBwcm92ZWQgYmFsYW5jZSB0cmFuc2ZlcnMuIEZpcnN0IGJhbGFuY2UgaXMgdGhlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIuIFNlY29uZOggaXMgdGhlIGFtb3VudCBvZiBgVDo6Q3VycmVuY3lgIHJlc2VydmVkIGZvciBzdG9yaW5nIHRoaXMuSQEgRmlyc3Qga2V5IGlzIHRoZSBhc3NldCBJRCwgc2Vjb25kIGtleSBpcyB0aGUgb3duZXIgYW5kIHRoaXJkIGtleSBpcyB0aGUgZGVsZWdhdGUuACBNZXRhZGF0YQEBBAI4nQxQAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4AIFJlc2VydmVzAQEEAjgtBAQABPwgTWFwcyBhbiBhc3NldCB0byBhIGxpc3Qgb2YgaXRzIGNvbmZpZ3VyZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbi4ALE5leHRBc3NldElkAAA4BAAkbQEgVGhlIGFzc2V0IElEIGVuZm9yY2VkIGZvciB0aGUgbmV4dCBhc3NldCBjcmVhdGlvbiwgaWYgYW55IHByZXNlbnQuIE90aGVyd2lzZSwgdGhpcyBzdG9yYWdlUCBpdGVtIGhhcyBubyBlZmZlY3QuAGUBIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Igc2V0dGluZyB1cCBjb25zdHJhaW50cyBmb3IgSURzIG9mIHRoZSBuZXcgYXNzZXRzLiBGb3IgZXhhbXBsZSwgYnlpASBwcm92aWRpbmcgYW4gaW5pdGlhbCBbYE5leHRBc3NldElkYF0gYW5kIHVzaW5nIHRoZSBbYGNyYXRlOjpBdXRvSW5jQXNzZXRJZGBdIGNhbGxiYWNrLCBhbuggYXV0by1pbmNyZW1lbnQgbW9kZWwgY2FuIGJlIGFwcGxpZWQgdG8gYWxsIG5ldyBhc3NldCBJRHMuACEBIFRoZSBpbml0aWFsIG5leHQgYXNzZXQgSUQgY2FuIGJlIHNldCB1c2luZyB0aGUgW2BHZW5lc2lzQ29uZmlnYF0gb3IgdGhlIQEgW1NldE5leHRBc3NldElkXShgbWlncmF0aW9uOjpuZXh0X2Fzc2V0X2lkOjpTZXROZXh0QXNzZXRJZGApIG1pZ3JhdGlvbi4AASkEAAHZCAAcQFJlbW92ZUl0ZW1zTGltaXQ4EOgDAAAMUQEgTWF4IG51bWJlciBvZiBpdGVtcyB0byBkZXN0cm95IHBlciBgZGVzdHJveV9hY2NvdW50c2AgYW5kIGBkZXN0cm95X2FwcHJvdmFsc2AgY2FsbC4AOQEgTXVzdCBiZSBjb25maWd1cmVkIHRvIHJlc3VsdCBpbiBhIHdlaWdodCB0aGF0IG1ha2VzIGVhY2ggY2FsbCBmaXQgaW4gYSBibG9jay4AMEFzc2V0RGVwb3NpdFUBQMB+V3gAAAAAAAAAAAAAAAAE+CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gYXNzZXQuAExBc3NldEFjY291bnREZXBvc2l0VQFAAP5NdwAAAAAAAAAAAAAAAAhFASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYSBub24tcHJvdmlkZXIgYXNzZXQgYWNjb3VudCB0byBiZTAgbWFpbnRhaW5lZC4ATE1ldGFkYXRhRGVwb3NpdEJhc2VVAUCAVp13AAAAAAAAAAAAAAAABFEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgYXNzZXQuAFhNZXRhZGF0YURlcG9zaXRQZXJCeXRlVQFAoIYBAAAAAAAAAAAAAAAAAAhVASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgeW91IHN0b3JlIGluIHlvdXIoIG1ldGFkYXRhLgA8QXBwcm92YWxEZXBvc2l0VQFAAOH1BQAAAAAAAAAAAAAAAAQhASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGNyZWF0aW5nIGEgbmV3IGFwcHJvdmFsLgAsU3RyaW5nTGltaXQ4EDIAAAAE4CBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBuYW1lIG9yIHN5bWJvbCBzdG9yZWQgb24tY2hhaW4uAAGlDAAUHEJhbGFuY2VVAQScIFRoZSB1bml0cyBpbiB3aGljaCB3ZSByZWNvcmQgYmFsYW5jZXMuHEFzc2V0SWQ4BIwgSWRlbnRpZmllciBmb3IgdGhlIGNsYXNzIG9mIGFzc2V0LkBBc3NldElkUGFyYW1ldGVyYBxZASBXcmFwcGVyIGFyb3VuZCBgU2VsZjo6QXNzZXRJZGAgdG8gdXNlIGluIGRpc3BhdGNoYWJsZSBjYWxsIHNpZ25hdHVyZXMuIEFsbG93cyB0aGUgdXNlUQEgb2YgY29tcGFjdCBlbmNvZGluZyBpbiBpbnN0YW5jZXMgb2YgdGhlIHBhbGxldCwgd2hpY2ggd2lsbCBwcmV2ZW50IGJyZWFraW5nIGNoYW5nZXMFASByZXN1bHRpbmcgZnJvbSB0aGUgcmVtb3ZhbCBvZiBgSGFzQ29tcGFjdGAgZnJvbSBgU2VsZjo6QXNzZXRJZGAuAFkBIFRoaXMgdHlwZSBpbmNsdWRlcyB0aGUgYEZyb208U2VsZjo6QXNzZXRJZD5gIGJvdW5kLCBzaW5jZSB0aWdodGx5IGNvdXBsZWQgcGFsbGV0cyBtYXlFASB3YW50IHRvIGNvbnZlcnQgYW4gYEFzc2V0SWRgIGludG8gYSBwYXJhbWV0ZXIgZm9yIGNhbGxpbmcgZGlzcGF0Y2hhYmxlIGZ1bmN0aW9ucyggZGlyZWN0bHkuLFJlc2VydmVEYXRhEAToIEluZm9ybWF0aW9uIGFib3V0IHJlc2VydmUgbG9jYXRpb25zIGZvciBhIGNsYXNzIG9mIGFzc2V0LhRFeHRyYRAE+CBBZGRpdGlvbmFsIGRhdGEgdG8gYmUgc3RvcmVkIHdpdGggYW4gYWNjb3VudCdzIGFzc2V0IGJhbGFuY2UuEGgqWdUaueSKjIzEGP+XCNKnApetC0vdPaS3RimmWm5cNGFzc2V0X2RldGFpbHMECGlkOKkMBKggUHJvdmlkZSB0aGUgYXNzZXQgZGV0YWlscyBmb3IgYXNzZXQgYGlkYC4AaCpZ1Rq55IqMjMQY/5cI0lMax+IbdrEh52Hkc0GaGwIoYmFsYW5jZV9vZggMd2hvBAhpZDhJBAS0IFByb3ZpZGUgdGhlIGJhbGFuY2Ugb2YgYHdob2AgZm9yIGFzc2V0IGBpZGAuAGgqWdUaueSKjIzEGP+XCNIuh2akDRtp1hUb2AHldVBeMGdldF9tZXRhZGF0YQQIaWQ4rQwEwCBQcm92aWRlIHRoZSBjb25maWd1cmVkIG1ldGFkYXRhIGZvciBhc3NldCBgaWRgLgBoKlnVGrnkioyMxBj/lwjSZPY/KSPjmCgkMWOBrh5phkRnZXRfcmVzZXJ2ZXNfZGF0YQQIaWQ4MQQE1CBQcm92aWRlIHRoZSBjb25maWd1cmVkIHJlc2VydmVzIGRhdGEgZm9yIGFzc2V0IGBpZGAuADIAABxVbmlxdWVzARxVbmlxdWVzKBRDbGFzcwABBAI4sQwEAARkIERldGFpbHMgb2YgYSBjb2xsZWN0aW9uLgBMT3duZXJzaGlwQWNjZXB0YW5jZQABBAIEOAQABCkBIFRoZSBjb2xsZWN0aW9uLCBpZiBhbnksIG9mIHdoaWNoIGFuIGFjY291bnQgaXMgd2lsbGluZyB0byB0YWtlIG93bmVyc2hpcC4AHEFjY291bnQAAQwCAgK1DBAEAAhZASBUaGUgaXRlbXMgaGVsZCBieSBhbnkgZ2l2ZW4gYWNjb3VudDsgc2V0IG91dCB0aGlzIHdheSBzbyB0aGF0IGl0ZW1zIG93bmVkIGJ5IGEgc2luZ2xlbCBhY2NvdW50IGNhbiBiZSBlbnVtZXJhdGVkLgAwQ2xhc3NBY2NvdW50AAEIAgKJBRAEAAhpASBUaGUgY29sbGVjdGlvbnMgb3duZWQgYnkgYW55IGdpdmVuIGFjY291bnQ7IHNldCBvdXQgdGhpcyB3YXkgc28gdGhhdCBjb2xsZWN0aW9ucyBvd25lZCBieZAgYSBzaW5nbGUgYWNjb3VudCBjYW4gYmUgZW51bWVyYXRlZC4AFEFzc2V0AAEIAgLMuQwEAATQIFRoZSBpdGVtcyBpbiBleGlzdGVuY2UgYW5kIHRoZWlyIG93bmVyc2hpcCBkZXRhaWxzLgA8Q2xhc3NNZXRhZGF0YU9mAAEEAji9DAQABGggTWV0YWRhdGEgb2YgYSBjb2xsZWN0aW9uLgBISW5zdGFuY2VNZXRhZGF0YU9mAAEIAgLMwQwEAARUIE1ldGFkYXRhIG9mIGFuIGl0ZW0uACRBdHRyaWJ1dGUAAQwCAgLFDMkMBAAEcCBBdHRyaWJ1dGVzIG9mIGEgY29sbGVjdGlvbi4ALEl0ZW1QcmljZU9mAAEIAgLMzQwEAARwIFByaWNlIG9mIGFuIGFzc2V0IGluc3RhbmNlLgBMQ29sbGVjdGlvbk1heFN1cHBseQABBAI4OAQABPAgS2VlcHMgdHJhY2sgb2YgdGhlIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gbWlnaHQgaGF2ZS4AATUEAAHdCAAgRENvbGxlY3Rpb25EZXBvc2l0VQFAAOh2SBcAAAAAAAAAAAAAAAQBASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgY29sbGVjdGlvbi4ALEl0ZW1EZXBvc2l0VQFAAOH1BQAAAAAAAAAAAAAAAAT0IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBpdGVtLgBMTWV0YWRhdGFEZXBvc2l0QmFzZVUBQKBq+ncAAAAAAAAAAAAAAAAETQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBpdGVtLgBQQXR0cmlidXRlRGVwb3NpdEJhc2VVAUAAlDV3AAAAAAAAAAAAAAAABFUBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIGFuIGF0dHJpYnV0ZSB0byBhbiBpdGVtLgA4RGVwb3NpdFBlckJ5dGVVAUCghgEAAAAAAAAAAAAAAAAACFkBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyBzdG9yZSBpbiBtZXRhZGF0YSzAIGVpdGhlciAibm9ybWFsIiBtZXRhZGF0YSBvciBhdHRyaWJ1dGUgbWV0YWRhdGEuACxTdHJpbmdMaW1pdDgQgAAAAASwIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBkYXRhIHN0b3JlZCBvbi1jaGFpbi4AIEtleUxpbWl0OBAgAAAABKAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFuIGF0dHJpYnV0ZSBrZXkuAChWYWx1ZUxpbWl0OBBAAAAABKggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFuIGF0dHJpYnV0ZSB2YWx1ZS4AAdEMAAgwQ29sbGVjdGlvbklkOAScIElkZW50aWZpZXIgZm9yIHRoZSBjb2xsZWN0aW9uIG9mIGl0ZW0uGEl0ZW1JZDgE9CBUaGUgdHlwZSB1c2VkIHRvIGlkZW50aWZ5IGEgdW5pcXVlIGl0ZW0gd2l0aGluIGEgY29sbGVjdGlvbi4AMwAAEE5mdHMBEE5mdHM8KENvbGxlY3Rpb24AAQQCONUMBAAEZCBEZXRhaWxzIG9mIGEgY29sbGVjdGlvbi4ATE93bmVyc2hpcEFjY2VwdGFuY2UAAQQCBDgEAAQpASBUaGUgY29sbGVjdGlvbiwgaWYgYW55LCBvZiB3aGljaCBhbiBhY2NvdW50IGlzIHdpbGxpbmcgdG8gdGFrZSBvd25lcnNoaXAuABxBY2NvdW50AAEMAgICtQwQBAAIWQEgVGhlIGl0ZW1zIGhlbGQgYnkgYW55IGdpdmVuIGFjY291bnQ7IHNldCBvdXQgdGhpcyB3YXkgc28gdGhhdCBpdGVtcyBvd25lZCBieSBhIHNpbmdsZWwgYWNjb3VudCBjYW4gYmUgZW51bWVyYXRlZC4ARENvbGxlY3Rpb25BY2NvdW50AAEIAgKJBRAEAAhpASBUaGUgY29sbGVjdGlvbnMgb3duZWQgYnkgYW55IGdpdmVuIGFjY291bnQ7IHNldCBvdXQgdGhpcyB3YXkgc28gdGhhdCBjb2xsZWN0aW9ucyBvd25lZCBieZAgYSBzaW5nbGUgYWNjb3VudCBjYW4gYmUgZW51bWVyYXRlZC4AQENvbGxlY3Rpb25Sb2xlT2YAAQgCAoUM2QwEAAjQIFRoZSBpdGVtcyBpbiBleGlzdGVuY2UgYW5kIHRoZWlyIG93bmVyc2hpcCBkZXRhaWxzLqAgU3RvcmVzIGNvbGxlY3Rpb24gcm9sZXMgYXMgcGVyIGFjY291bnQuABBJdGVtAAEIAgLM4QwEAATQIFRoZSBpdGVtcyBpbiBleGlzdGVuY2UgYW5kIHRoZWlyIG93bmVyc2hpcCBkZXRhaWxzLgBQQ29sbGVjdGlvbk1ldGFkYXRhT2YAAQQCOPkMBAAEaCBNZXRhZGF0YSBvZiBhIGNvbGxlY3Rpb24uADhJdGVtTWV0YWRhdGFPZgABCAICzP0MBAAEVCBNZXRhZGF0YSBvZiBhbiBpdGVtLgAkQXR0cmlidXRlAAEQAgICAgUNCQ0EAARwIEF0dHJpYnV0ZXMgb2YgYSBjb2xsZWN0aW9uLgAsSXRlbVByaWNlT2YAAQgCAszNDAQABFAgQSBwcmljZSBvZiBhbiBpdGVtLgBkSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbHNPZgEBCAICzBENBAAEaCBJdGVtIGF0dHJpYnV0ZSBhcHByb3ZhbHMuAEBOZXh0Q29sbGVjdGlvbklkAAA4BAAIMQEgU3RvcmVzIHRoZSBgQ29sbGVjdGlvbklkYCB0aGF0IGlzIGdvaW5nIHRvIGJlIHVzZWQgZm9yIHRoZSBuZXh0IGNvbGxlY3Rpb24u8CBUaGlzIGdldHMgaW5jcmVtZW50ZWQgd2hlbmV2ZXIgYSBuZXcgY29sbGVjdGlvbiBpcyBjcmVhdGVkLgA0UGVuZGluZ1N3YXBPZgABCAICzBkNBAAEfCBIYW5kbGVzIGFsbCB0aGUgcGVuZGluZyBzd2Fwcy4ASENvbGxlY3Rpb25Db25maWdPZgABBAI4UQQEAARgIENvbmZpZyBvZiBhIGNvbGxlY3Rpb24uADBJdGVtQ29uZmlnT2YAAQgCAsx5BAQABEwgQ29uZmlnIG9mIGFuIGl0ZW0uAAFNBAAB4QgAOERDb2xsZWN0aW9uRGVwb3NpdFUBQEDx+3cAAAAAAAAAAAAAAAAEAQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGNvbGxlY3Rpb24uACxJdGVtRGVwb3NpdFUBQBAyAQMAAAAAAAAAAAAAAAAE9CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gaXRlbS4ATE1ldGFkYXRhRGVwb3NpdEJhc2VVAUAQcf8LAAAAAAAAAAAAAAAABE0BIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgaXRlbS4AUEF0dHJpYnV0ZURlcG9zaXRCYXNlVQFAAMLrCwAAAAAAAAAAAAAAAARVASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBhbiBhdHRyaWJ1dGUgdG8gYW4gaXRlbS4AOERlcG9zaXRQZXJCeXRlVQFAoIYBAAAAAAAAAAAAAAAAAAhZASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgc3RvcmUgaW4gbWV0YWRhdGEswCBlaXRoZXIgIm5vcm1hbCIgbWV0YWRhdGEgb3IgYXR0cmlidXRlIG1ldGFkYXRhLgAsU3RyaW5nTGltaXQ4EAABAAAEsCBUaGUgbWF4aW11bSBsZW5ndGggb2YgZGF0YSBzdG9yZWQgb24tY2hhaW4uACBLZXlMaW1pdDgQQAAAAASgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbiBhdHRyaWJ1dGUga2V5LgAoVmFsdWVMaW1pdDgQAAEAAASoIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbiBhdHRyaWJ1dGUgdmFsdWUuADhBcHByb3ZhbHNMaW1pdDgQFAAAAASoIFRoZSBtYXhpbXVtIGFwcHJvdmFscyBhbiBpdGVtIGNvdWxkIGhhdmUuAHBJdGVtQXR0cmlidXRlc0FwcHJvdmFsc0xpbWl0OBAeAAAABNQgVGhlIG1heGltdW0gYXR0cmlidXRlcyBhcHByb3ZhbHMgYW4gaXRlbSBjb3VsZCBoYXZlLgAcTWF4VGlwczgQCgAAAASoIFRoZSBtYXggbnVtYmVyIG9mIHRpcHMgYSB1c2VyIGNvdWxkIHNlbmQuAExNYXhEZWFkbGluZUR1cmF0aW9uOBAAGk8ABKggVGhlIG1heCBkdXJhdGlvbiBpbiBibG9ja3MgZm9yIGRlYWRsaW5lcy4AUE1heEF0dHJpYnV0ZXNQZXJDYWxsOBAKAAAABOAgVGhlIG1heCBudW1iZXIgb2YgYXR0cmlidXRlcyBhIHVzZXIgY291bGQgc2V0IHBlciBjYWxsLgAgRmVhdHVyZXMdDSAAAAAAAAAAAASQIERpc2FibGVzIHNvbWUgb2YgcGFsbGV0J3MgZmVhdHVyZXMuAAElDQAMMENvbGxlY3Rpb25JZDgknCBJZGVudGlmaWVyIGZvciB0aGUgY29sbGVjdGlvbiBvZiBpdGVtLgBJASBTQUZFVFk6IFRoZSBmdW5jdGlvbnMgaW4gdGhlIGBJbmNyZW1lbnRhYmxlYCB0cmFpdCBhcmUgZmFsbGlibGUuIElmIHRoZSBmdW5jdGlvbnNBASBvZiB0aGUgaW1wbGVtZW50YXRpb24gYm90aCByZXR1cm4gYE5vbmVgLCB0aGUgYXV0b21hdGljIENvbGxlY3Rpb25JZCBnZW5lcmF0aW9uKQEgc2hvdWxkIG5vdCBiZSB1c2VkLiBTbyB0aGUgYGNyZWF0ZWAgYW5kIGBmb3JjZV9jcmVhdGVgIGV4dHJpbnNpY3MgYW5kIHRoZU0BIGBjcmVhdGVfY29sbGVjdGlvbmAgZnVuY3Rpb24gd2lsbCByZXR1cm4gYW4gYFVua25vd25Db2xsZWN0aW9uYCBFcnJvci4gSW5zdGVhZCB1c2VBASB0aGUgYGNyZWF0ZV9jb2xsZWN0aW9uX3dpdGhfaWRgIGZ1bmN0aW9uLiBIb3dldmVyLCBpZiB0aGUgYEluY3JlbWVudGFibGVgIHRyYWl0SQEgaW1wbGVtZW50YXRpb24gaGFzIGFuIGluY3JlbWVudGFsIG9yZGVyLCB0aGUgYGNyZWF0ZV9jb2xsZWN0aW9uX3dpdGhfaWRgIGZ1bmN0aW9u/CBzaG91bGQgbm90IGJlIHVzZWQgYXMgaXQgY2FuIGNsYWltIGEgdmFsdWUgaW4gdGhlIElEIHNlcXVlbmNlLhhJdGVtSWQ4BPQgVGhlIHR5cGUgdXNlZCB0byBpZGVudGlmeSBhIHVuaXF1ZSBpdGVtIHdpdGhpbiBhIGNvbGxlY3Rpb24uRE9mZmNoYWluU2lnbmF0dXJloQQMaCBPZmYtQ2hhaW4gc2lnbmF0dXJlIHR5cGUuAAkBIENhbiB2ZXJpZnkgd2hldGhlciBhbiBgU2VsZjo6T2ZmY2hhaW5QdWJsaWNgIGNyZWF0ZWQgYSBzaWduYXR1cmUuADQAADRGb3JlaWduQXNzZXRzATRGb3JlaWduQXNzZXRzGBRBc3NldAABBAL9AX0MBAAEVCBEZXRhaWxzIG9mIGFuIGFzc2V0LgAcQWNjb3VudAABCAICKQ2JDAQABOQgVGhlIGhvbGRpbmdzIG9mIGEgc3BlY2lmaWMgYWNjb3VudCBmb3IgYSBzcGVjaWZpYyBhc3NldC4AJEFwcHJvdmFscwABDAICAi0NmQwEAAxZASBBcHByb3ZlZCBiYWxhbmNlIHRyYW5zZmVycy4gRmlyc3QgYmFsYW5jZSBpcyB0aGUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2Zlci4gU2Vjb25k6CBpcyB0aGUgYW1vdW50IG9mIGBUOjpDdXJyZW5jeWAgcmVzZXJ2ZWQgZm9yIHN0b3JpbmcgdGhpcy5JASBGaXJzdCBrZXkgaXMgdGhlIGFzc2V0IElELCBzZWNvbmQga2V5IGlzIHRoZSBvd25lciBhbmQgdGhpcmQga2V5IGlzIHRoZSBkZWxlZ2F0ZS4AIE1ldGFkYXRhAQEEAv0BMQ1QAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4AIFJlc2VydmVzAQEEAv0BsQQEAAT8IE1hcHMgYW4gYXNzZXQgdG8gYSBsaXN0IG9mIGl0cyBjb25maWd1cmVkIHJlc2VydmUgaW5mb3JtYXRpb24uACxOZXh0QXNzZXRJZAAA/QEEACRtASBUaGUgYXNzZXQgSUQgZW5mb3JjZWQgZm9yIHRoZSBuZXh0IGFzc2V0IGNyZWF0aW9uLCBpZiBhbnkgcHJlc2VudC4gT3RoZXJ3aXNlLCB0aGlzIHN0b3JhZ2VQIGl0ZW0gaGFzIG5vIGVmZmVjdC4AZQEgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBzZXR0aW5nIHVwIGNvbnN0cmFpbnRzIGZvciBJRHMgb2YgdGhlIG5ldyBhc3NldHMuIEZvciBleGFtcGxlLCBieWkBIHByb3ZpZGluZyBhbiBpbml0aWFsIFtgTmV4dEFzc2V0SWRgXSBhbmQgdXNpbmcgdGhlIFtgY3JhdGU6OkF1dG9JbmNBc3NldElkYF0gY2FsbGJhY2ssIGFu6CBhdXRvLWluY3JlbWVudCBtb2RlbCBjYW4gYmUgYXBwbGllZCB0byBhbGwgbmV3IGFzc2V0IElEcy4AIQEgVGhlIGluaXRpYWwgbmV4dCBhc3NldCBJRCBjYW4gYmUgc2V0IHVzaW5nIHRoZSBbYEdlbmVzaXNDb25maWdgXSBvciB0aGUhASBbU2V0TmV4dEFzc2V0SWRdKGBtaWdyYXRpb246Om5leHRfYXNzZXRfaWQ6OlNldE5leHRBc3NldElkYCkgbWlncmF0aW9uLgABrQQAAekIABxAUmVtb3ZlSXRlbXNMaW1pdDgQ6AMAAAxRASBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIGRlc3Ryb3kgcGVyIGBkZXN0cm95X2FjY291bnRzYCBhbmQgYGRlc3Ryb3lfYXBwcm92YWxzYCBjYWxsLgA5ASBNdXN0IGJlIGNvbmZpZ3VyZWQgdG8gcmVzdWx0IGluIGEgd2VpZ2h0IHRoYXQgbWFrZXMgZWFjaCBjYWxsIGZpdCBpbiBhIGJsb2NrLgAwQXNzZXREZXBvc2l0VQFAwH5XeAAAAAAAAAAAAAAAAAT4IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBhc3NldC4ATEFzc2V0QWNjb3VudERlcG9zaXRVAUAA/k13AAAAAAAAAAAAAAAACEUBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhIG5vbi1wcm92aWRlciBhc3NldCBhY2NvdW50IHRvIGJlMCBtYWludGFpbmVkLgBMTWV0YWRhdGFEZXBvc2l0QmFzZVUBQIBWnXcAAAAAAAAAAAAAAAAEUQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBhc3NldC4AWE1ldGFkYXRhRGVwb3NpdFBlckJ5dGVVAUCghgEAAAAAAAAAAAAAAAAACFUBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyB5b3Ugc3RvcmUgaW4geW91ciggbWV0YWRhdGEuADxBcHByb3ZhbERlcG9zaXRVAUAA4fUFAAAAAAAAAAAAAAAABCEBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gY3JlYXRpbmcgYSBuZXcgYXBwcm92YWwuACxTdHJpbmdMaW1pdDgQMgAAAATgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIG5hbWUgb3Igc3ltYm9sIHN0b3JlZCBvbi1jaGFpbi4AATkNABQcQmFsYW5jZVUBBJwgVGhlIHVuaXRzIGluIHdoaWNoIHdlIHJlY29yZCBiYWxhbmNlcy4cQXNzZXRJZP0BBIwgSWRlbnRpZmllciBmb3IgdGhlIGNsYXNzIG9mIGFzc2V0LkBBc3NldElkUGFyYW1ldGVy/QEcWQEgV3JhcHBlciBhcm91bmQgYFNlbGY6OkFzc2V0SWRgIHRvIHVzZSBpbiBkaXNwYXRjaGFibGUgY2FsbCBzaWduYXR1cmVzLiBBbGxvd3MgdGhlIHVzZVEBIG9mIGNvbXBhY3QgZW5jb2RpbmcgaW4gaW5zdGFuY2VzIG9mIHRoZSBwYWxsZXQsIHdoaWNoIHdpbGwgcHJldmVudCBicmVha2luZyBjaGFuZ2VzBQEgcmVzdWx0aW5nIGZyb20gdGhlIHJlbW92YWwgb2YgYEhhc0NvbXBhY3RgIGZyb20gYFNlbGY6OkFzc2V0SWRgLgBZASBUaGlzIHR5cGUgaW5jbHVkZXMgdGhlIGBGcm9tPFNlbGY6OkFzc2V0SWQ+YCBib3VuZCwgc2luY2UgdGlnaHRseSBjb3VwbGVkIHBhbGxldHMgbWF5RQEgd2FudCB0byBjb252ZXJ0IGFuIGBBc3NldElkYCBpbnRvIGEgcGFyYW1ldGVyIGZvciBjYWxsaW5nIGRpc3BhdGNoYWJsZSBmdW5jdGlvbnMoIGRpcmVjdGx5LixSZXNlcnZlRGF0YbUEBOggSW5mb3JtYXRpb24gYWJvdXQgcmVzZXJ2ZSBsb2NhdGlvbnMgZm9yIGEgY2xhc3Mgb2YgYXNzZXQuFEV4dHJhEAT4IEFkZGl0aW9uYWwgZGF0YSB0byBiZSBzdG9yZWQgd2l0aCBhbiBhY2NvdW50J3MgYXNzZXQgYmFsYW5jZS4QMOZKVgJvS148LRlig6mhfacCl60LS909pLdGKaZablw0YXNzZXRfZGV0YWlscwQIaWT9AakMBKggUHJvdmlkZSB0aGUgYXNzZXQgZGV0YWlscyBmb3IgYXNzZXQgYGlkYC4AMOZKVgJvS148LRlig6mhfVMax+IbdrEh52Hkc0GaGwIoYmFsYW5jZV9vZggMd2hvBAhpZP0BSQQEtCBQcm92aWRlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGZvciBhc3NldCBgaWRgLgAw5kpWAm9LXjwtGWKDqaF9LodmpA0badYVG9gB5XVQXjBnZXRfbWV0YWRhdGEECGlk/QE9DQTAIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgbWV0YWRhdGEgZm9yIGFzc2V0IGBpZGAuADDmSlYCb0tePC0ZYoOpoX1k9j8pI+OYKCQxY4GuHmmGRGdldF9yZXNlcnZlc19kYXRhBAhpZP0BuQQE1CBQcm92aWRlIHRoZSBjb25maWd1cmVkIHJlc2VydmVzIGRhdGEgZm9yIGFzc2V0IGBpZGAuADUAAChQb29sQXNzZXRzAShQb29sQXNzZXRzGBRBc3NldAABBAI4fQwEAARUIERldGFpbHMgb2YgYW4gYXNzZXQuABxBY2NvdW50AAEIAgKFDIkMBAAE5CBUaGUgaG9sZGluZ3Mgb2YgYSBzcGVjaWZpYyBhY2NvdW50IGZvciBhIHNwZWNpZmljIGFzc2V0LgAkQXBwcm92YWxzAAEMAgIClQyZDAQADFkBIEFwcHJvdmVkIGJhbGFuY2UgdHJhbnNmZXJzLiBGaXJzdCBiYWxhbmNlIGlzIHRoZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyLiBTZWNvbmToIGlzIHRoZSBhbW91bnQgb2YgYFQ6OkN1cnJlbmN5YCByZXNlcnZlZCBmb3Igc3RvcmluZyB0aGlzLkkBIEZpcnN0IGtleSBpcyB0aGUgYXNzZXQgSUQsIHNlY29uZCBrZXkgaXMgdGhlIG93bmVyIGFuZCB0aGlyZCBrZXkgaXMgdGhlIGRlbGVnYXRlLgAgTWV0YWRhdGEBAQQCOEENUAAAAAAAAAAAAAAAAAAAAAAAAAAABFggTWV0YWRhdGEgb2YgYW4gYXNzZXQuACBSZXNlcnZlcwEBBAI4LQQEAAT8IE1hcHMgYW4gYXNzZXQgdG8gYSBsaXN0IG9mIGl0cyBjb25maWd1cmVkIHJlc2VydmUgaW5mb3JtYXRpb24uACxOZXh0QXNzZXRJZAAAOAQAJG0BIFRoZSBhc3NldCBJRCBlbmZvcmNlZCBmb3IgdGhlIG5leHQgYXNzZXQgY3JlYXRpb24sIGlmIGFueSBwcmVzZW50LiBPdGhlcndpc2UsIHRoaXMgc3RvcmFnZVAgaXRlbSBoYXMgbm8gZWZmZWN0LgBlASBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHNldHRpbmcgdXAgY29uc3RyYWludHMgZm9yIElEcyBvZiB0aGUgbmV3IGFzc2V0cy4gRm9yIGV4YW1wbGUsIGJ5aQEgcHJvdmlkaW5nIGFuIGluaXRpYWwgW2BOZXh0QXNzZXRJZGBdIGFuZCB1c2luZyB0aGUgW2BjcmF0ZTo6QXV0b0luY0Fzc2V0SWRgXSBjYWxsYmFjaywgYW7oIGF1dG8taW5jcmVtZW50IG1vZGVsIGNhbiBiZSBhcHBsaWVkIHRvIGFsbCBuZXcgYXNzZXQgSURzLgAhASBUaGUgaW5pdGlhbCBuZXh0IGFzc2V0IElEIGNhbiBiZSBzZXQgdXNpbmcgdGhlIFtgR2VuZXNpc0NvbmZpZ2BdIG9yIHRoZSEBIFtTZXROZXh0QXNzZXRJZF0oYG1pZ3JhdGlvbjo6bmV4dF9hc3NldF9pZDo6U2V0TmV4dEFzc2V0SWRgKSBtaWdyYXRpb24uAAG9BAAB7QgAHEBSZW1vdmVJdGVtc0xpbWl0OBDoAwAADFEBIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gZGVzdHJveSBwZXIgYGRlc3Ryb3lfYWNjb3VudHNgIGFuZCBgZGVzdHJveV9hcHByb3ZhbHNgIGNhbGwuADkBIE11c3QgYmUgY29uZmlndXJlZCB0byByZXN1bHQgaW4gYSB3ZWlnaHQgdGhhdCBtYWtlcyBlYWNoIGNhbGwgZml0IGluIGEgYmxvY2suADBBc3NldERlcG9zaXRVAUAAAAAAAAAAAAAAAAAAAAAABPggVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGFzc2V0LgBMQXNzZXRBY2NvdW50RGVwb3NpdFUBQAD+TXcAAAAAAAAAAAAAAAAIRQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGEgbm9uLXByb3ZpZGVyIGFzc2V0IGFjY291bnQgdG8gYmUwIG1haW50YWluZWQuAExNZXRhZGF0YURlcG9zaXRCYXNlVQFAAAAAAAAAAAAAAAAAAAAAAARRASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGFzc2V0LgBYTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZVUBQAAAAAAAAAAAAAAAAAAAAAAIVQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHlvdSBzdG9yZSBpbiB5b3VyKCBtZXRhZGF0YS4APEFwcHJvdmFsRGVwb3NpdFUBQADh9QUAAAAAAAAAAAAAAAAEIQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBhcHByb3ZhbC4ALFN0cmluZ0xpbWl0OBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgABSQ0AFBxCYWxhbmNlVQEEnCBUaGUgdW5pdHMgaW4gd2hpY2ggd2UgcmVjb3JkIGJhbGFuY2VzLhxBc3NldElkOASMIElkZW50aWZpZXIgZm9yIHRoZSBjbGFzcyBvZiBhc3NldC5AQXNzZXRJZFBhcmFtZXRlcjgcWQEgV3JhcHBlciBhcm91bmQgYFNlbGY6OkFzc2V0SWRgIHRvIHVzZSBpbiBkaXNwYXRjaGFibGUgY2FsbCBzaWduYXR1cmVzLiBBbGxvd3MgdGhlIHVzZVEBIG9mIGNvbXBhY3QgZW5jb2RpbmcgaW4gaW5zdGFuY2VzIG9mIHRoZSBwYWxsZXQsIHdoaWNoIHdpbGwgcHJldmVudCBicmVha2luZyBjaGFuZ2VzBQEgcmVzdWx0aW5nIGZyb20gdGhlIHJlbW92YWwgb2YgYEhhc0NvbXBhY3RgIGZyb20gYFNlbGY6OkFzc2V0SWRgLgBZASBUaGlzIHR5cGUgaW5jbHVkZXMgdGhlIGBGcm9tPFNlbGY6OkFzc2V0SWQ+YCBib3VuZCwgc2luY2UgdGlnaHRseSBjb3VwbGVkIHBhbGxldHMgbWF5RQEgd2FudCB0byBjb252ZXJ0IGFuIGBBc3NldElkYCBpbnRvIGEgcGFyYW1ldGVyIGZvciBjYWxsaW5nIGRpc3BhdGNoYWJsZSBmdW5jdGlvbnMoIGRpcmVjdGx5LixSZXNlcnZlRGF0YRAE6CBJbmZvcm1hdGlvbiBhYm91dCByZXNlcnZlIGxvY2F0aW9ucyBmb3IgYSBjbGFzcyBvZiBhc3NldC4URXh0cmEQBPggQWRkaXRpb25hbCBkYXRhIHRvIGJlIHN0b3JlZCB3aXRoIGFuIGFjY291bnQncyBhc3NldCBiYWxhbmNlLhBNsGuhym8Yse2wb/CC0kQJpwKXrQtL3T2kt0YpplpuXDRhc3NldF9kZXRhaWxzBAhpZDipDASoIFByb3ZpZGUgdGhlIGFzc2V0IGRldGFpbHMgZm9yIGFzc2V0IGBpZGAuAE2wa6HKbxix7bBv8ILSRAlTGsfiG3axIedh5HNBmhsCKGJhbGFuY2Vfb2YIDHdobwQIaWQ4SQQEtCBQcm92aWRlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGZvciBhc3NldCBgaWRgLgBNsGuhym8Yse2wb/CC0kQJLodmpA0badYVG9gB5XVQXjBnZXRfbWV0YWRhdGEECGlkOE0NBMAgUHJvdmlkZSB0aGUgY29uZmlndXJlZCBtZXRhZGF0YSBmb3IgYXNzZXQgYGlkYC4ATbBrocpvGLHtsG/wgtJECWT2Pykj45goJDFjga4eaYZEZ2V0X3Jlc2VydmVzX2RhdGEECGlkODEEBNQgUHJvdmlkZSB0aGUgY29uZmlndXJlZCByZXNlcnZlcyBkYXRhIGZvciBhc3NldCBgaWRgLgA2AAA8QXNzZXRDb252ZXJzaW9uATxBc3NldENvbnZlcnNpb24IFFBvb2xzAAEEAvUIUQ0EAAhpASBNYXAgZnJvbSBgUG9vbEFzc2V0SWRgIHRvIGBQb29sSW5mb2AuIFRoaXMgZXN0YWJsaXNoZXMgd2hldGhlciBhIHBvb2wgaGFzIGJlZW4gb2ZmaWNpYWxseT0BIGNyZWF0ZWQgcmF0aGVyIHRoYW4gcGVvcGxlIHNlbmRpbmcgdG9rZW5zIGRpcmVjdGx5IHRvIGEgcG9vbCdzIHB1YmxpYyBhY2NvdW50LgA8TmV4dFBvb2xBc3NldElkAAA4BAAIJQEgU3RvcmVzIHRoZSBgUG9vbEFzc2V0SWRgIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBmb3IgdGhlIG5leHQgbHAgdG9rZW4u5CBUaGlzIGdldHMgaW5jcmVtZW50ZWQgd2hlbmV2ZXIgYSBuZXcgbHAgcG9vbCBpcyBjcmVhdGVkLgABwQQAAfEIABwUTFBGZWX5CBC4CwAABB0BIFRoZSBmcmFjdGlvbiBvZiBldmVyeSBzd2FwIHRoYXQgdGhlIGxpcXVpZGl0eSBwcm92aWRlcnMgdGFrZSBhcyBhIGZlZS4AMFBvb2xTZXR1cEZlZVUBQEAtk+8AAAAAAAAAAAAAAAAEiCBBIG9uZS10aW1lIGZlZSB0byBzZXR1cCB0aGUgcG9vbC4ARFBvb2xTZXR1cEZlZUFzc2V0/QEIAQAEOQEgQXNzZXQgY2xhc3MgZnJvbSBbYENvbmZpZzo6QXNzZXRzYF0gdXNlZCB0byBwYXkgdGhlIFtgQ29uZmlnOjpQb29sU2V0dXBGZWVgXS4AWExpcXVpZGl0eVdpdGhkcmF3YWxGZWX5CBAAAAAABIQgQSBmZWUgdG8gd2l0aGRyYXcgdGhlIGxpcXVpZGl0eS4AQE1pbnRNaW5MaXF1aWRpdHlVAUBkAAAAAAAAAAAAAAAAAAAABD0BIFRoZSBtaW5pbXVtIExQIHRva2VuIGFtb3VudCB0aGF0IGNvdWxkIGJlIG1pbnRlZC4gQW1lbGlvcmF0ZXMgcm91bmRpbmcgZXJyb3JzLgBETWF4U3dhcFBhdGhMZW5ndGg4EAMAAAAEiCBUaGUgbWF4IG51bWJlciBvZiBob3BzIGluIGEgc3dhcC4AIFBhbGxldElkSQsgcHkvYXNjb24E9CBUaGUgcGFsbGV0J3MgaWQsIHVzZWQgZm9yIGRlcml2aW5nIGl0cyBzb3ZlcmVpZ24gYWNjb3VudCBJRC4AAVUNAAgkQXNzZXRLaW5k/QEIXQEgVHlwZSBvZiBhc3NldCBjbGFzcywgc291cmNlZCBmcm9tIFtgQ29uZmlnOjpBc3NldHNgXSwgdXRpbGl6ZWQgdG8gb2ZmZXIgbGlxdWlkaXR5IHRvIGEYIHBvb2wuGFBvb2xJZPUIBGwgTGlxdWlkaXR5IHBvb2wgaWRlbnRpZmllci4MtSYG2oDQKrN0QoNppfJG8UtaZ1Zm3v/90xrRL9uq/+MwZ2V0X3Jlc2VydmVzCBhhc3NldDH9ARhhc3NldDL9AVkNCLwgUmV0dXJucyB0aGUgYmFsYW5jZSBvZiBlYWNoIGFzc2V0IGluIHRoZSBwb29sLlUBIFRoZSB0dXBsZSByZXN1bHQgaXMgaW4gdGhlIG9yZGVyIHJlcXVlc3RlZCAobm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHBvb2wgb3JkZXIpLgC1JgbagNAqs3RCg2ml8kbxeOeDcL3VXJhkSbxs1VAQC4xxdW90ZV9wcmljZV9leGFjdF90b2tlbnNfZm9yX3Rva2VucxAYYXNzZXQx/QEYYXNzZXQy/QEYYW1vdW50VQEsaW5jbHVkZV9mZWVZAUkEHBEBIEdldHMgYSBxdW90ZSBmb3Igc3dhcHBpbmcgYW4gZXhhY3QgYW1vdW50IG9mIGBhc3NldDFgIGZvciBgYXNzZXQyYC4ANQEgSWYgYGluY2x1ZGVfZmVlYCBpcyB0cnVlLCB0aGUgcXVvdGUgd2lsbCBpbmNsdWRlIHRoZSBsaXF1aWRpdHkgcHJvdmlkZXIgZmVlLhEBIElmIHRoZSBwb29sIGRvZXMgbm90IGV4aXN0IG9yIGhhcyBubyBsaXF1aWRpdHksIGBOb25lYCBpcyByZXR1cm5lZC45ASBOb3RlIHRoYXQgdGhlIHByaWNlIG1heSBoYXZlIGNoYW5nZWQgYnkgdGhlIHRpbWUgdGhlIHRyYW5zYWN0aW9uIGlzIGV4ZWN1dGVkLrAgKFVzZSBgYW1vdW50X291dF9taW5gIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKaggUmV0dXJucyBgU29tZShxdW90ZWRfYW1vdW50KWAgb24gc3VjY2Vzcy4AtSYG2oDQKrN0QoNppfJG8Sh5D++bLeNfRI0+w3OTaY2McXVvdGVfcHJpY2VfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnMQGGFzc2V0Mf0BGGFzc2V0Mv0BGGFtb3VudFUBLGluY2x1ZGVfZmVlWQFJBBxBASBHZXRzIGEgcXVvdGUgZm9yIHN3YXBwaW5nIGBhbW91bnRgIG9mIGBhc3NldDFgIGZvciBhbiBleGFjdCBhbW91bnQgb2YgYGFzc2V0MmAuADUBIElmIGBpbmNsdWRlX2ZlZWAgaXMgdHJ1ZSwgdGhlIHF1b3RlIHdpbGwgaW5jbHVkZSB0aGUgbGlxdWlkaXR5IHByb3ZpZGVyIGZlZS4RASBJZiB0aGUgcG9vbCBkb2VzIG5vdCBleGlzdCBvciBoYXMgbm8gbGlxdWlkaXR5LCBgTm9uZWAgaXMgcmV0dXJuZWQuOQEgTm90ZSB0aGF0IHRoZSBwcmljZSBtYXkgaGF2ZSBjaGFuZ2VkIGJ5IHRoZSB0aW1lIHRoZSB0cmFuc2FjdGlvbiBpcyBleGVjdXRlZC6sIChVc2UgYGFtb3VudF9pbl9tYXhgIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKaggUmV0dXJucyBgU29tZShxdW90ZWRfYW1vdW50KWAgb24gc3VjY2Vzcy4ANwAANEFzc2V0c0ZyZWV6ZXIBNEFzc2V0c0ZyZWV6ZXIIHEZyZWV6ZXMBAQgCAoUM/QoEAAQVASBBIG1hcCB0aGF0IHN0b3JlcyBmcmVlemVzIGFwcGxpZWQgb24gYW4gYWNjb3VudCBmb3IgYSBnaXZlbiBBc3NldElkLgA4RnJvemVuQmFsYW5jZXMAAQgCAoUMVQEEAARlASBBIG1hcCB0aGF0IHN0b3JlcyB0aGUgY3VycmVudCB0b3RhbCBmcm96ZW4gYmFsYW5jZSBmb3IgZXZlcnkgYWNjb3VudCBvbiBhIGdpdmVuIEFzc2V0SWQuAAABBQkAAAFhDQAETFJ1bnRpbWVGcmVlemVSZWFzb24FCwR8IFRoZSBvdmVyYXJjaGluZyBmcmVlemUgcmVhc29uLgA4AAAwQXNzZXRzSG9sZGVyATBBc3NldHNIb2xkZXIIFEhvbGRzAQEIAgKFDPEKBAAEDQEgQSBtYXAgdGhhdCBzdG9yZXMgaG9sZHMgYXBwbGllZCBvbiBhbiBhY2NvdW50IGZvciBhIGdpdmVuIEFzc2V0SWQuADhCYWxhbmNlc09uSG9sZAABCAIChQxVAQQABGkBIEEgbWFwIHRoYXQgc3RvcmVzIHRoZSBjdXJyZW50IHRvdGFsIGJhbGFuY2Ugb24gaG9sZCBmb3IgZXZlcnkgYWNjb3VudCBvbiBhIGdpdmVuIEFzc2V0SWQuAAABCQkAAAFlDQAERFJ1bnRpbWVIb2xkUmVhc29uVQgEfCBUaGUgb3ZlcmFyY2hpbmcgZnJlZXplIHJlYXNvbi4AOQAAIFRyZWFzdXJ5ASBUcmVhc3VyeRw0UHJvcG9zYWxDb3VudAEAOBAAAAAAEEEBIERFUFJFQ0FURUQ6IGFzc29jaWF0ZWQgd2l0aCBgc3BlbmRfbG9jYWxgIGNhbGwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBNYXkgMjAyNS5pASBSZWZlciB0byA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvcG9sa2Fkb3Qtc2RrL3B1bGwvNTk2MT4gZm9yIG1pZ3JhdGlvbiB0byBgc3BlbmRgLgCkIE51bWJlciBvZiBwcm9wb3NhbHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4AJFByb3Bvc2FscwABBAU4aQ0EABBBASBERVBSRUNBVEVEOiBhc3NvY2lhdGVkIHdpdGggYHNwZW5kX2xvY2FsYCBjYWxsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gTWF5IDIwMjUuaQEgUmVmZXIgdG8gPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9wdWxsLzU5NjE+IGZvciBtaWdyYXRpb24gdG8gYHNwZW5kYC4AfCBQcm9wb3NhbHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4ALERlYWN0aXZhdGVkAQBVAUAAAAAAAAAAAAAAAAAAAAAABPAgVGhlIGFtb3VudCB3aGljaCBoYXMgYmVlbiByZXBvcnRlZCBhcyBpbmFjdGl2ZSB0byBDdXJyZW5jeS4AJEFwcHJvdmFscwEAbQ0EABBBASBERVBSRUNBVEVEOiBhc3NvY2lhdGVkIHdpdGggYHNwZW5kX2xvY2FsYCBjYWxsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gTWF5IDIwMjUuaQEgUmVmZXIgdG8gPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9wdWxsLzU5NjE+IGZvciBtaWdyYXRpb24gdG8gYHNwZW5kYC4A+CBQcm9wb3NhbCBpbmRpY2VzIHRoYXQgaGF2ZSBiZWVuIGFwcHJvdmVkIGJ1dCBub3QgeWV0IGF3YXJkZWQuAChTcGVuZENvdW50AQA4EAAAAAAEpCBUaGUgY291bnQgb2Ygc3BlbmRzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuABhTcGVuZHMAAQQFOHENBAAE0CBTcGVuZHMgdGhhdCBoYXZlIGJlZW4gYXBwcm92ZWQgYW5kIGJlaW5nIHByb2Nlc3NlZC4APExhc3RTcGVuZFBlcmlvZAAAOAQABNQgVGhlIGJsb2NrbnVtYmVyIGZvciB0aGUgbGFzdCB0cmlnZ2VyZWQgc3BlbmQgcGVyaW9kLgAByQQIAwKVAVRoZSBgc3BlbmRfbG9jYWxgIGNhbGwgd2lsbCBiZSByZW1vdmVkIGJ5IE1heSAyMDI1LiBNaWdyYXRlIHRvIHRoZSBuZXcgZmxvdyBhbmQgdXNlIHRoZSBgc3BlbmRgIGNhbGwuAAQCtQFUaGUgYHJlbW92ZV9hcHByb3ZhbGAgY2FsbCB3aWxsIGJlIHJlbW92ZWQgYnkgTWF5IDIwMjUuIEl0IGFzc29jaWF0ZWQgd2l0aCB0aGUgZGVwcmVjYXRlZCBgc3BlbmRfbG9jYWxgIGNhbGwuAAENCQAYLFNwZW5kUGVyaW9kOBDAqAAABIggUGVyaW9kIGJldHdlZW4gc3VjY2Vzc2l2ZSBzcGVuZHMuABBCdXJu+QgQAAAAAAQRASBQZXJjZW50YWdlIG9mIHNwYXJlIGZ1bmRzIChpZiBhbnkpIHRoYXQgYXJlIGJ1cm50IHBlciBzcGVuZCBwZXJpb2QuACBQYWxsZXRJZEkLIHB5L3Ryc3J5BBkBIFRoZSB0cmVhc3VyeSdzIHBhbGxldCBpZCwgdXNlZCBmb3IgZGVyaXZpbmcgaXRzIHNvdmVyZWlnbiBhY2NvdW50IElELgAwTWF4QXBwcm92YWxzOBBkAAAAGEEBIERFUFJFQ0FURUQ6IGFzc29jaWF0ZWQgd2l0aCBgc3BlbmRfbG9jYWxgIGNhbGwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBNYXkgMjAyNS5pASBSZWZlciB0byA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvcG9sa2Fkb3Qtc2RrL3B1bGwvNTk2MT4gZm9yIG1pZ3JhdGlvbiB0byBgc3BlbmRgLgAVASBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXBwcm92YWxzIHRoYXQgY2FuIHdhaXQgaW4gdGhlIHNwZW5kaW5nIHF1ZXVlLgBNASBOT1RFOiBUaGlzIHBhcmFtZXRlciBpcyBhbHNvIHVzZWQgd2l0aGluIHRoZSBCb3VudGllcyBQYWxsZXQgZXh0ZW5zaW9uIGlmIGVuYWJsZWQuADBQYXlvdXRQZXJpb2Q4EADhAAAEGQEgVGhlIHBlcmlvZCBkdXJpbmcgd2hpY2ggYW4gYXBwcm92ZWQgdHJlYXN1cnkgc3BlbmQgaGFzIHRvIGJlIGNsYWltZWQuACxwb3RfYWNjb3VudASAbW9kbHB5L3Ryc3J5AAAAAAAAAAAAAAAAAAAAAAAAAAAEoCBHZXRzIHRoaXMgcGFsbGV0J3MgZGVyaXZlZCBwb3QgYWNjb3VudC4AAXkNAAgkQXNzZXRLaW5kzQQELQEgVHlwZSBwYXJhbWV0ZXIgcmVwcmVzZW50aW5nIHRoZSBhc3NldCBraW5kcyB0byBiZSBzcGVudCBmcm9tIHRoZSB0cmVhc3VyeS4sQmVuZWZpY2lhcnnRBARdASBUeXBlIHBhcmFtZXRlciB1c2VkIHRvIGlkZW50aWZ5IHRoZSBiZW5lZmljaWFyaWVzIGVsaWdpYmxlIHRvIHJlY2VpdmUgdHJlYXN1cnkgc3BlbmRzLgA8AABAQ29udmljdGlvblZvdGluZwFAQ29udmljdGlvblZvdGluZwgkVm90aW5nRm9yAQEIBQV9DYEN2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAh1ASBBbGwgdm90aW5nIGZvciBhIHBhcnRpY3VsYXIgdm90ZXIgaW4gYSBwYXJ0aWN1bGFyIHZvdGluZyBjbGFzcy4gV2Ugc3RvcmUgdGhlIGJhbGFuY2UgZm9yIHRoZZwgbnVtYmVyIG9mIHZvdGVzIHRoYXQgd2UgaGF2ZSByZWNvcmRlZC4ANENsYXNzTG9ja3NGb3IBAQQFBKENBAAMaQEgVGhlIHZvdGluZyBjbGFzc2VzIHdoaWNoIGhhdmUgYSBub24temVybyBsb2NrIHJlcXVpcmVtZW50IGFuZCB0aGUgbG9jayBhbW91bnRzIHdoaWNoIHRoZXltASByZXF1aXJlLiBUaGUgYWN0dWFsIGFtb3VudCBsb2NrZWQgb24gYmVoYWxmIG9mIHRoaXMgcGFsbGV0IHNob3VsZCBhbHdheXMgYmUgdGhlIG1heGltdW0gb2YsIHRoaXMgbGlzdC4AAdUEAAERCQAIIE1heFZvdGVzOBAAAgAAEPAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbmN1cnJlbnQgdm90ZXMgYW4gYWNjb3VudCBtYXkgaGF2ZS4AVQEgQWxzbyB1c2VkIHRvIGNvbXB1dGUgd2VpZ2h0LCBhbiBvdmVybHkgbGFyZ2UgdmFsdWUgY2FuIGxlYWQgdG8gZXh0cmluc2ljcyB3aXRoIGxhcmdlwCB3ZWlnaHQgZXN0aW1hdGlvbjogc2VlIGBkZWxlZ2F0ZWAgZm9yIGluc3RhbmNlLgBEVm90ZUxvY2tpbmdQZXJpb2Q4EMCJAQAQkCBUaGUgbWluaW11bSBwZXJpb2Qgb2Ygdm90ZSBsb2NraW5nLgBlASBJdCBzaG91bGQgYmUgbm8gc2hvcnRlciB0aGFuIGVuYWN0bWVudCBwZXJpb2QgdG8gZW5zdXJlIHRoYXQgaW4gdGhlIGNhc2Ugb2YgYW4gYXBwcm92YWwsSQEgdGhvc2Ugc3VjY2Vzc2Z1bCB2b3RlcnMgYXJlIGxvY2tlZCBpbnRvIHRoZSBjb25zZXF1ZW5jZXMgdGhhdCB0aGVpciB2b3RlcyBlbnRhaWwuAAGtDQAAAD0AACRSZWZlcmVuZGEBJFJlZmVyZW5kYRQ8UmVmZXJlbmR1bUNvdW50AQA4EAAAAAAEMQEgVGhlIG5leHQgZnJlZSByZWZlcmVuZHVtIGluZGV4LCBha2EgdGhlIG51bWJlciBvZiByZWZlcmVuZGEgc3RhcnRlZCBzbyBmYXIuAERSZWZlcmVuZHVtSW5mb0ZvcgABBAI4sQ0EAAS0IEluZm9ybWF0aW9uIGNvbmNlcm5pbmcgYW55IGdpdmVuIHJlZmVyZW5kdW0uAChUcmFja1F1ZXVlAQEEBdED0Q0EABBdASBUaGUgc29ydGVkIGxpc3Qgb2YgcmVmZXJlbmRhIHJlYWR5IHRvIGJlIGRlY2lkZWQgYnV0IG5vdCB5ZXQgYmVpbmcgZGVjaWRlZCwgb3JkZXJlZCBieXwgY29udmljdGlvbi13ZWlnaHRlZCBhcHByb3ZhbHMuAEEBIFRoaXMgc2hvdWxkIGJlIGVtcHR5IGlmIGBEZWNpZGluZ0NvdW50YCBpcyBsZXNzIHRoYW4gYFRyYWNrSW5mbzo6bWF4X2RlY2lkaW5nYC4ANERlY2lkaW5nQ291bnQBAQQF0QM4EAAAAAAExCBUaGUgbnVtYmVyIG9mIHJlZmVyZW5kYSBiZWluZyBkZWNpZGVkIGN1cnJlbnRseS4AKE1ldGFkYXRhT2YAAQQCODwEABgFASBUaGUgbWV0YWRhdGEgaXMgYSBnZW5lcmFsIGluZm9ybWF0aW9uIGNvbmNlcm5pbmcgdGhlIHJlZmVyZW5kdW0uSQEgVGhlIGBIYXNoYCByZWZlcnMgdG8gdGhlIHByZWltYWdlIG9mIHRoZSBgUHJlaW1hZ2VzYCBwcm92aWRlciB3aGljaCBjYW4gYmUgYSBKU09OiCBkdW1wIG9yIElQRlMgaGFzaCBvZiBhIEpTT04gZmlsZS4AdQEgQ29uc2lkZXIgYSBnYXJiYWdlIGNvbGxlY3Rpb24gZm9yIGEgbWV0YWRhdGEgb2YgZmluaXNoZWQgcmVmZXJlbmR1bXMgdG8gYHVucmVxdWVzdGAgKHJlbW92ZSlEIGxhcmdlIHByZWltYWdlcy4AAekEAAEVCQAURFN1Ym1pc3Npb25EZXBvc2l0VQFAAOh2SBcAAAAAAAAAAAAAAAQ1ASBUaGUgbWluaW11bSBhbW91bnQgdG8gYmUgdXNlZCBhcyBhIGRlcG9zaXQgZm9yIGEgcHVibGljIHJlZmVyZW5kdW0gcHJvcG9zYWwuACRNYXhRdWV1ZWQ4EGQAAAAE5CBNYXhpbXVtIHNpemUgb2YgdGhlIHJlZmVyZW5kdW0gcXVldWUgZm9yIGEgc2luZ2xlIHRyYWNrLgBEVW5kZWNpZGluZ1RpbWVvdXQ4EMCoAAAIVQEgVGhlIG51bWJlciBvZiBibG9ja3MgYWZ0ZXIgc3VibWlzc2lvbiB0aGF0IGEgcmVmZXJlbmR1bSBtdXN0IGJlZ2luIGJlaW5nIGRlY2lkZWQgYnku5CBPbmNlIHRoaXMgcGFzc2VzLCB0aGVuIGFueW9uZSBtYXkgY2FuY2VsIHRoZSByZWZlcmVuZHVtLgA0QWxhcm1JbnRlcnZhbDgQAQAAAAxdASBRdWFudGl6YXRpb24gbGV2ZWwgZm9yIHRoZSByZWZlcmVuZHVtIHdha2V1cCBzY2hlZHVsZXIuIEEgaGlnaGVyIG51bWJlciB3aWxsIHJlc3VsdCBpbl0BIGZld2VyIHN0b3JhZ2UgcmVhZHMvd3JpdGVzIG5lZWRlZCBmb3Igc21hbGxlciB2b3RlcnMsIGJ1dCBhbHNvIHJlc3VsdCBpbiBkZWxheXMgdG8gdGhlVQEgYXV0b21hdGljIHJlZmVyZW5kdW0gc3RhdHVzIGNoYW5nZXMuIEV4cGxpY2l0IHNlcnZpY2luZyBpbnN0cnVjdGlvbnMgYXJlIHVuYWZmZWN0ZWQuABhUcmFja3PdDRUaQAAAZHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAIDGpH6NAwAAAAAAAAAAALAEAAAAJwYAQDgAAEA4AAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAADKmjsAAAAAAGXNHQEAZHdoaXRlbGlzdGVkX2NhbGxlcgAAAAAAAABkAAAAAEB6EPNaAAAAAAAAAAAAACwBAAAAJwYAZAAAAGQAAAAC7JclEAAAAAB7VzwXAAAAAEI5LxIAAAAAAg4AhAAAAAAA1uYfAQAAAAA5YnkCAAAAAAIAZHdpc2hfZm9yX2NoYW5nZQAAAAAAAAAAAAAKAAAAAID0IOa1AAAAAAAAAAAAALAEAAAAJwYAQDgAAGQAAAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAADKmjsAAAAAAGXNHQoAZHN0YWtpbmdfYWRtaW4AAAAAAAAAAAAAAAAKAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////wsAZHRyZWFzdXJlcgAAAAAAAAAAAAAAAAAAAAACAAAAAKAxqV/jAAAAAAAAAAAAALAEAAAAJwYAwIkBAEA4AAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAADKmjuAlpgAAGXNHQwAZGxlYXNlX2FkbWluAAAAAAAAAAAAAAAAAAAKAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////w0AZGZlbGxvd3NoaXBfYWRtaW4AAAAAAAAAAAAKAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////w4AZGdlbmVyYWxfYWRtaW4AAAAAAAAAAAAAAAAKAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAlmi9AIAAAAAoylrBQAAAAAua0r9/////w8AZGF1Y3Rpb25fYWRtaW4AAAAAAAAAAAAAAAAKAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAlmi9AIAAAAAoylrBQAAAAAua0r9/////xQAZHJlZmVyZW5kdW1fY2FuY2VsbGVyAAAAAAD0AQAAACA9iHktAAAAAAAAAAAAALAEAADAiQEACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////xUAZHJlZmVyZW5kdW1fa2lsbGVyAAAAAAAAAADoAwAAAEBjUr/GAQAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////x4AZHNtYWxsX3RpcHBlcgAAAAAAAAAAAAAAAADIAAAAAOQLVAIAAAAAAAAAAAAAAAoAAADAiQEAZAAAAAoAAAAASZFJFQBlzR0Aypo7Avm6GAAAAAAAKk0xAAAAAABrWef//////x8AZGJpZ190aXBwZXIAAAAAAAAAAAAAAAAAAABkAAAAAOh2SBcAAAAAAAAAAAAAAGQAAADAiQEAWAIAAGQAAAAASZFJFQBlzR0Aypo7AmlPPwAAAAAANZZ9AAAAAADlNMH//////yAAZHNtYWxsX3NwZW5kZXIAAAAAAAAAAAAAAAAFAAAAAKByThgJAAAAAAAAAAAAAGAJAAAAJwYAgHAAAEA4AAAAyUMwJABlzR0Aypo7AgqzOgAAAAAAU611AAAAAAA3CxIAAAAAACEAZG1lZGl1bV9zcGVuZGVyAAAAAAAAAAAAAAAyAAAAACBKqdEBAAAAAAAAAAAAAGAJAAAAJwYAAOEAAEA4AAAAWwH2MABlzR0Aypo7AiCeaQAAAAAAT3fSAAAAAAD+HOT//////yIAZGJpZ19zcGVuZGVyAAAAAAAAAAAAAAAAAAADAAAAACA9iHktAAAAAAAAAAAAAGAJAAAAJwYAwIkBAEA4AAAAAMqaOwBlzR0Aypo7As1YYgAAAAAAWyTFAAAAAAA1WREAAAAAAAxIIEEgbGlzdCBvZiB0cmFja3MuAF0BIE5vdGU6IGlmIHRoZSB0cmFja3MgYXJlIGR5bmFtaWMsIHRoZSB2YWx1ZSBpbiB0aGUgc3RhdGljIG1ldGFkYXRhIG1pZ2h0IGJlIGluYWNjdXJhdGUuAAH1DQAMLFJ1bnRpbWVDYWxsIAAUVm90ZXNVAQTMIFRoZSBjb3VudGluZyB0eXBlIGZvciB2b3Rlcy4gVXN1YWxseSBqdXN0IGJhbGFuY2UuFFRhbGx5GQkETCBUaGUgdGFsbHlpbmcgdHlwZS4APgAAHE9yaWdpbnMAAAAAAAAAPwAAJFdoaXRlbGlzdAEkV2hpdGVsaXN0BDxXaGl0ZWxpc3RlZENhbGwAAQQFPBAEAAAAAf0EAAEdCQAAAfkNAAQsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS4AQAAAIEJvdW50aWVzASBCb3VudGllcxAsQm91bnR5Q291bnQBADgQAAAAAATAIE51bWJlciBvZiBib3VudHkgcHJvcG9zYWxzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuACBCb3VudGllcwABBAU4/Q0EAAR4IEJvdW50aWVzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuAEhCb3VudHlEZXNjcmlwdGlvbnMAAQQFOAUOBAAEgCBUaGUgZGVzY3JpcHRpb24gb2YgZWFjaCBib3VudHkuADxCb3VudHlBcHByb3ZhbHMBAG0NBAAE7CBCb3VudHkgaW5kaWNlcyB0aGF0IGhhdmUgYmVlbiBhcHByb3ZlZCBidXQgbm90IHlldCBmdW5kZWQuAAEBBQABLQkAJERCb3VudHlEZXBvc2l0QmFzZVUBQACODAEAAAAAAAAAAAAAAAAE6CBUaGUgYW1vdW50IGhlbGQgb24gZGVwb3NpdCBmb3IgcGxhY2luZyBhIGJvdW50eSBwcm9wb3NhbC4AYEJvdW50eURlcG9zaXRQYXlvdXREZWxheTgQAAAAAARZASBUaGUgZGVsYXkgcGVyaW9kIGZvciB3aGljaCBhIGJvdW50eSBiZW5lZmljaWFyeSBuZWVkIHRvIHdhaXQgYmVmb3JlIGNsYWltIHRoZSBwYXlvdXQuAEhCb3VudHlVcGRhdGVQZXJpb2Q4EAAEFwMY9CBUaGUgdGltZSBsaW1pdCBmb3IgYSBjdXJhdG9yIHRvIGFjdCBiZWZvcmUgYSBib3VudHkgZXhwaXJlcy4AVQEgVGhlIHBlcmlvZCB0aGF0IHN0YXJ0cyB3aGVuIGEgY3VyYXRvciBpcyBhcHByb3ZlZCwgZHVyaW5nIHdoaWNoIHRoZXkgbXVzdCBleGVjdXRlIG9yVQEgdXBkYXRlIHRoZSBib3VudHkgdmlhIGBleHRlbmRfYm91bnR5X2V4cGlyeWAuIElmIG1pc3NlZCwgdGhlIGJvdW50eSBleHBpcmVzLCBhbmQgdGhlVQEgY3VyYXRvciBtYXkgYmUgc2xhc2hlZC4gSWYgYEJsb2NrTnVtYmVyRm9yOjpNQVhgLCBib3VudGllcyBzdGF5IGFjdGl2ZSBpbmRlZmluaXRlbHksuCByZW1vdmluZyB0aGUgbmVlZCBmb3IgYGV4dGVuZF9ib3VudHlfZXhwaXJ5YC4AYEN1cmF0b3JEZXBvc2l0TXVsdGlwbGllcvkIECChBwAQGQEgVGhlIGN1cmF0b3IgZGVwb3NpdCBpcyBjYWxjdWxhdGVkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgY3VyYXRvciBmZWUuADkBIFRoaXMgZGVwb3NpdCBoYXMgb3B0aW9uYWwgdXBwZXIgYW5kIGxvd2VyIGJvdW5kcyB3aXRoIGBDdXJhdG9yRGVwb3NpdE1heGAgYW5kVCBgQ3VyYXRvckRlcG9zaXRNaW5gLgBEQ3VyYXRvckRlcG9zaXRNYXhJBEQBACBKqdEBAAAAAAAAAAAAAARJASBNYXhpbXVtIGFtb3VudCBvZiBmdW5kcyB0aGF0IHNob3VsZCBiZSBwbGFjZWQgaW4gYSBkZXBvc2l0IGZvciBtYWtpbmcgYSBwcm9wb3NhbC4AREN1cmF0b3JEZXBvc2l0TWluSQREAQDodkgXAAAAAAAAAAAAAAAESQEgTWluaW11bSBhbW91bnQgb2YgZnVuZHMgdGhhdCBzaG91bGQgYmUgcGxhY2VkIGluIGEgZGVwb3NpdCBmb3IgbWFraW5nIGEgcHJvcG9zYWwuAEhCb3VudHlWYWx1ZU1pbmltdW1VAUAA6HZIFwAAAAAAAAAAAAAABHAgTWluaW11bSB2YWx1ZSBmb3IgYSBib3VudHkuAEhEYXRhRGVwb3NpdFBlckJ5dGVVAUCghgEAAAAAAAAAAAAAAAAABGEBIFRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0IHBlciBieXRlIHdpdGhpbiB0aGUgdGlwIHJlcG9ydCByZWFzb24gb3IgYm91bnR5IGRlc2NyaXB0aW9uLgBMTWF4aW11bVJlYXNvbkxlbmd0aDgQAEAAAAyIIE1heGltdW0gYWNjZXB0YWJsZSByZWFzb24gbGVuZ3RoLgBlASBCZW5jaG1hcmtzIGRlcGVuZCBvbiB0aGlzIHZhbHVlLCBiZSBzdXJlIHRvIHVwZGF0ZSB3ZWlnaHRzIGZpbGUgd2hlbiBjaGFuZ2luZyB0aGlzIHZhbHVlAAEJDgAAAEEAADRDaGlsZEJvdW50aWVzATRDaGlsZEJvdW50aWVzHEBDaGlsZEJvdW50eUNvdW50AQA4EAAAAAAIbQEgREVQUkVDQVRFRDogUmVwbGFjZWQgd2l0aCBgUGFyZW50VG90YWxDaGlsZEJvdW50aWVzYCBzdG9yYWdlIGl0ZW0ga2VlcGluZyBkZWRpY2F0ZWQgY291bnRzVQEgZm9yIGVhY2ggcGFyZW50IGJvdW50eS4gTnVtYmVyIG9mIHRvdGFsIGNoaWxkIGJvdW50aWVzLiBXaWxsIGJlIHJlbW92ZWQgaW4gTWF5IDIwMjUuAExQYXJlbnRDaGlsZEJvdW50aWVzAQEEBTg4EAAAAAAIzCBOdW1iZXIgb2YgYWN0aXZlIGNoaWxkIGJvdW50aWVzIHBlciBwYXJlbnQgYm91bnR5LuAgTWFwIG9mIHBhcmVudCBib3VudHkgaW5kZXggdG8gbnVtYmVyIG9mIGNoaWxkIGJvdW50aWVzLgBgUGFyZW50VG90YWxDaGlsZEJvdW50aWVzAQEEBTg4EAAAAAAEQQEgTnVtYmVyIG9mIHRvdGFsIGNoaWxkIGJvdW50aWVzIHBlciBwYXJlbnQgYm91bnR5LCBpbmNsdWRpbmcgY29tcGxldGVkIGJvdW50aWVzLgA0Q2hpbGRCb3VudGllcwABCAUFzA0OBAAElCBDaGlsZCBib3VudGllcyB0aGF0IGhhdmUgYmVlbiBhZGRlZC4AZENoaWxkQm91bnR5RGVzY3JpcHRpb25zVjEAAQgFBcwFDgQADCkBIFRoZSBkZXNjcmlwdGlvbiBvZiBlYWNoIGNoaWxkLWJvdW50eS4gSW5kZXhlZCBieSBgKHBhcmVudF9pZCwgY2hpbGRfaWQpYC4AbQEgVGhpcyBpdGVtIHJlcGxhY2VzIHRoZSBgQ2hpbGRCb3VudHlEZXNjcmlwdGlvbnNgIHN0b3JhZ2UgaXRlbSBmcm9tIHRoZSBWMCBzdG9yYWdlIHZlcnNpb24uAFBWMFRvVjFDaGlsZEJvdW50eUlkcwABBAU4zAQAFF0BIFRoZSBtYXBwaW5nIG9mIHRoZSBjaGlsZCBib3VudHkgaWRzIGZyb20gc3RvcmFnZSB2ZXJzaW9uIGBWMGAgdG8gdGhlIG5ldyBgVjFgIHZlcnNpb24uAG0BIFRoZSBgVjBgIGlkcyBiYXNlZCBvbiB0b3RhbCBjaGlsZCBib3VudHkgY291bnQgW2BDaGlsZEJvdW50eUNvdW50YF1gLiBUaGUgYFYxYCB2ZXJzaW9uIGlkc0EBIGJhc2VkIG9uIHRoZSBjaGlsZCBib3VudHkgY291bnQgcGVyIHBhcmVudCBib3VudHkgW2BQYXJlbnRUb3RhbENoaWxkQm91bnRpZXNgXS5lASBUaGUgaXRlbSBpbnRlbmRlZCBzb2xlbHkgZm9yIGNsaWVudCBjb252ZW5pZW5jZSBhbmQgbm90IHVzZWQgaW4gdGhlIHBhbGxldCdzIGNvcmUgbG9naWMuAExDaGlsZHJlbkN1cmF0b3JGZWVzAQEEBThVAUAAAAAAAAAAAAAAAAAAAAAABAEBIFRoZSBjdW11bGF0aXZlIGNoaWxkLWJvdW50eSBjdXJhdG9yIGZlZSBmb3IgZWFjaCBwYXJlbnQgYm91bnR5LgABBQUAATEJAAhkTWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudDgQZAAAAAQdASBNYXhpbXVtIG51bWJlciBvZiBjaGlsZCBib3VudGllcyB0aGF0IGNhbiBiZSBhZGRlZCB0byBhIHBhcmVudCBib3VudHkuAFxDaGlsZEJvdW50eVZhbHVlTWluaW11bVUBQADkC1QCAAAAAAAAAAAAAAAEiCBNaW5pbXVtIHZhbHVlIGZvciBhIGNoaWxkLWJvdW50eS4AARUOAAAAQgAAJEFzc2V0UmF0ZQEkQXNzZXRSYXRlBFhDb252ZXJzaW9uUmF0ZVRvTmF0aXZlAAEEAs0EDQUEAAwdASBNYXBzIGFuIGFzc2V0IHRvIGl0cyBmaXhlZCBwb2ludCByZXByZXNlbnRhdGlvbiBpbiB0aGUgbmF0aXZlIGJhbGFuY2UuAE0BIEUuZy4gYG5hdGl2ZV9hbW91bnQgPSBhc3NldF9hbW91bnQgKiBDb252ZXJzaW9uUmF0ZVRvTmF0aXZlOjo8VD46OmdldChhc3NldF9raW5kKWAAAQkFAAE1CQAAARkOAAQkQXNzZXRLaW5kzQQERQEgVGhlIHR5cGUgZm9yIGFzc2V0IGtpbmRzIGZvciB3aGljaCB0aGUgY29udmVyc2lvbiByYXRlIHRvIG5hdGl2ZSBiYWxhbmNlIGlzIHNldC4AQwAASE11bHRpQXNzZXRCb3VudGllcwFITXVsdGlBc3NldEJvdW50aWVzHCxCb3VudHlDb3VudAEAOBAAAAAABMAgTnVtYmVyIG9mIGJvdW50eSBwcm9wb3NhbHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4AIEJvdW50aWVzAAEEBTgdDgQABHggQm91bnRpZXMgdGhhdCBoYXZlIGJlZW4gbWFkZS4ANENoaWxkQm91bnRpZXMAAQgFBcwpDgQADJQgQ2hpbGQgYm91bnRpZXMgdGhhdCBoYXZlIGJlZW4gYWRkZWQuAMggSW5kZXhlZCBieSBgKHBhcmVudF9ib3VudHlfaWQsIGNoaWxkX2JvdW50eV9pZClgLgBYQ2hpbGRCb3VudGllc1BlclBhcmVudAEBBAU4OBAAAAAADMwgTnVtYmVyIG9mIGFjdGl2ZSBjaGlsZCBib3VudGllcyBwZXIgcGFyZW50IGJvdW50eS4AfCBJbmRleGVkIGJ5IGBwYXJlbnRfYm91bnR5X2lkYC4AbFRvdGFsQ2hpbGRCb3VudGllc1BlclBhcmVudAEBBAU4OBAAAAAADEEBIE51bWJlciBvZiB0b3RhbCBjaGlsZCBib3VudGllcyBwZXIgcGFyZW50IGJvdW50eSwgaW5jbHVkaW5nIGNvbXBsZXRlZCBib3VudGllcy4AfCBJbmRleGVkIGJ5IGBwYXJlbnRfYm91bnR5X2lkYC4AbENoaWxkQm91bnRpZXNWYWx1ZVBlclBhcmVudAEBBAU4VQFAAAAAAAAAAAAAAAAAAAAAABBtASBUaGUgY3VtdWxhdGl2ZSBjaGlsZC1ib3VudHkgdmFsdWUgZm9yIGVhY2ggcGFyZW50IGJvdW50eS4gVG8gYmUgc3VidHJhY3RlZCBmcm9tIHRoZSBwYXJlbnSQIGJvdW50eSBwYXlvdXQgd2hlbiBhd2FyZGluZyBib3VudHkuAHwgSW5kZXhlZCBieSBgcGFyZW50X2JvdW50eV9pZGAuADhDdXJhdG9yRGVwb3NpdAABCAUFLQ4xDgQALGUBIFRoZSBjb25zaWRlcmF0aW9uIGNvc3QgaW5jdXJyZWQgYnkgdGhlIGNoaWxkLS9ib3VudHkgY3VyYXRvciBmb3IgY29tbWl0dGluZyB0byB0aGUgcm9sZS4AcQEgRGV0ZXJtaW5lZCBieSBbYHBhbGxldDo6Q29uZmlnOjpDb25zaWRlcmF0aW9uYF0uIEl0IGlzIGNyZWF0ZWQgd2hlbiB0aGUgY3VyYXRvciBhY2NlcHRzIHRoZUUBIHJvbGUsIGFuZCBpcyBlaXRoZXIgYnVybmVkIGlmIHRoZSBjdXJhdG9yIG1pc2JlaGF2ZXMgb3IgY29uc3VtZWQgdXBvbiBzdWNjZXNzZnVshCBjb21wbGV0aW9uIG9mIHRoZSBjaGlsZC0vYm91bnR5LgARASBOb3RlOiBJZiB0aGUgcGFyZW50IGN1cmF0b3IgaXMgYWxzbyBhc3NpZ25lZCB0byB0aGUgY2hpbGQtYm91bnR5LCAgDQEgdGhlIGNvbnNpZGVyYXRpb24gY29zdCBpcyBjaGFyZ2VkIG9ubHkgb25jZSDigJQgd2hlbiB0aGUgY3VyYXRvciAgoCBhY2NlcHRzIHRoZSByb2xlIGZvciB0aGUgcGFyZW50IGJvdW50eS4AyCBJbmRleGVkIGJ5IGAocGFyZW50X2JvdW50eV9pZCwgY2hpbGRfYm91bnR5X2lkKWAuAAERBQABOQkADEhCb3VudHlWYWx1ZU1pbmltdW1VAUAAyBeoBAAAAAAAAAAAAAAABHAgTWluaW11bSB2YWx1ZSBmb3IgYSBib3VudHkuAFxDaGlsZEJvdW50eVZhbHVlTWluaW11bVUBQACUNXcAAAAAAAAAAAAAAAAEiCBNaW5pbXVtIHZhbHVlIGZvciBhIGNoaWxkLWJvdW50eS4AZE1heEFjdGl2ZUNoaWxkQm91bnR5Q291bnQ4EGQAAAAEHQEgTWF4aW11bSBudW1iZXIgb2YgY2hpbGQgYm91bnRpZXMgdGhhdCBjYW4gYmUgYWRkZWQgdG8gYSBwYXJlbnQgYm91bnR5LgABNQ4ACCRBc3NldEtpbmTNBAhBASBUeXBlIHBhcmFtZXRlciByZXByZXNlbnRpbmcgdGhlIGFzc2V0IGtpbmRzIHVzZWQgdG8gZnVuZCwgcmVmdW5kIGFuZCBzcGVuZCBmcm9tKCBib3VudGllcy4sQmVuZWZpY2lhcnnRBARBASBUeXBlIHBhcmFtZXRlciB1c2VkIHRvIGlkZW50aWZ5IHRoZSBiZW5lZmljaWFyaWVzIGVsaWdpYmxlIHRvIHJlY2VpdmUgcGF5bWVudHMuAEQAAAxEYXABDERhcAhAQnVkZ2V0QWxsb2NhdGlvbgEAGQUEABC8IEJ1ZGdldCBhbGxvY2F0aW9uIG1hcDogYEJ1ZGdldEtleSAtPiBQZXJiaWxsYC4ANQEgS2V5cyBtdXN0IGNvcnJlc3BvbmQgdG8gcmVnaXN0ZXJlZCBgQnVkZ2V0UmVjaXBpZW50c2AuIFN1bSBvZiB2YWx1ZXMgbXVzdCBiZSkBIGV4YWN0bHkgYFBlcmJpbGw6Om9uZSgpYCAoMTAwJSkuIFJlY2lwaWVudHMgbm90IGluY2x1ZGVkIHJlY2VpdmUgbm90aGluZy4AVExhc3RJc3N1YW5jZVRpbWVzdGFtcAEAKCAAAAAAAAAAABCoIFRpbWVzdGFtcCAobXMpIG9mIHRoZSBsYXN0IGlzc3VhbmNlIGRyaXAuALAgT24gZXhpc3RpbmcgY2hhaW5zLCB0aGlzIG11c3QgYmUgc2VlZGVkIHZpYTkBIFtgbWlncmF0aW9uczo6TWlncmF0ZVYxVG9WMmBdIHRvIHByZXZlbnQgaW5jb3JyZWN0IG1pbnRpbmcgb24gdGhlIGZpcnN0IGRyaXAuAAEVBQABPQkADCBQYWxsZXRJZEkLIGRhcC9idWZmBMQgVGhlIHBhbGxldCBJRCB1c2VkIHRvIGRlcml2ZSB0aGUgYnVmZmVyIGFjY291bnQuADxJc3N1YW5jZUNhZGVuY2UoIGDqAAAAAAAAGMggTWluaW11bSBlbGFwc2VkIHRpbWUgKG1zKSBiZXR3ZWVuIGlzc3VhbmNlIGRyaXBzLgBkIC0gYDBgID0gZHJpcCBldmVyeSBibG9ja7QgLSBgNjBfMDAwYCA9IGRyaXAgZXZlcnkgbWludXRlIChSZWNvbW1lbmRlZCkAoCBTaG91bGQgYmUgc21hbGwgcmVsYXRpdmUgdG8gZXJhIGxlbmd0aC4ARE1heEVsYXBzZWRQZXJEcmlwKCDAJwkAAAAAABQdASBTYWZldHkgY2VpbGluZzogbWF4aW11bSBlbGFwc2VkIHRpbWUgKG1zKSBjb25zaWRlcmVkIGluIGEgc2luZ2xlIGRyaXAuABUBIElmIG1vcmUgdGltZSBoYXMgcGFzc2VkIHRoYW4gdGhpcywgZWxhcHNlZCBpcyBjbGFtcGVkIHRvIHRoaXMgdmFsdWUuGQEgUHJldmVudHMgYWNjaWRlbnRhbCBvdmVyLW1pbnRpbmcgZnJvbSBidWdzLCBtaXNjb25maWd1cmF0aW9uLCBvciBsb25nYCBwZXJpb2RzIHdpdGhvdXQgYmxvY2tzLgABOQ4AAAjNFDEPhSb1BNuNmFSNi+42hlr7SN7NdkcDLDTwUTR5RURidWRnZXRfcmVjaXBpZW50cwA9DhAdASBBbGwgcmVnaXN0ZXJlZCBidWRnZXQgcmVjaXBpZW50cyB3aXRoIHRoZWlyIGN1cnJlbnQgYWxsb2NhdGlvbiBzaGFyZXMuAB0BIFRoZSBgUGVyYmlsbGAgaXMgdGFrZW4gZnJvbSBgQnVkZ2V0QWxsb2NhdGlvbmA7IHJlY2lwaWVudHMgYWJzZW50IGZyb22cIHRoZSBtYXAgYXBwZWFyIHdpdGggYFBlcmJpbGw6Onplcm8oKWAuAM0UMQ+FJvUE242YVI2L7japZ2sG/fgSxL9xSQ7M7Z09HHN0YWdpbmcABAwVASBBY2NvdW50IHRoYXQgaG9sZHMgYnVybmVkL3NsYXNoZWQgZnVuZHMgYmVmb3JlIHRoZXkgYXJlIGRyYWluZWQgaW50bxkBIHRoZSBEQVAgYnVmZmVyIGJ5IGBvbl9pZGxlYC4gRXhwb3NlZCB0byBjbGllbnRzIHNvIHRoZXkgZG9uJ3QgaGF2ZSB0b5ggcmUtZGVyaXZlIHRoZSBzdWItYWNjb3VudCB0aGVtc2VsdmVzLgBFAABIU3RhdGVUcmllTWlncmF0aW9uAUhTdGF0ZVRyaWVNaWdyYXRpb24MQE1pZ3JhdGlvblByb2Nlc3MBADkFOAAAAAAAAAAAAAAAAAAAEFAgTWlncmF0aW9uIHByb2dyZXNzLgBdASBUaGlzIHN0b3JlcyB0aGUgc25hcHNob3Qgb2YgdGhlIGxhc3QgbWlncmF0ZWQga2V5cy4gSXQgY2FuIGJlIHNldCBpbnRvIG1vdGlvbiBhbmQgbW92ZdQgZm9yd2FyZCBieSBhbnkgb2YgdGhlIG1lYW5zIHByb3ZpZGVkIGJ5IHRoaXMgcGFsbGV0LgAoQXV0b0xpbWl0cwEAMQUEAAzUIFRoZSBsaW1pdHMgdGhhdCBhcmUgaW1wb3NlZCBvbiBhdXRvbWF0aWMgbWlncmF0aW9ucy4A1CBJZiBzZXQgdG8gTm9uZSwgdGhlbiBubyBhdXRvbWF0aWMgbWlncmF0aW9uIGhhcHBlbnMuAGBTaWduZWRNaWdyYXRpb25NYXhMaW1pdHMAADUFBAAM4CBUaGUgbWF4aW11bSBsaW1pdHMgdGhhdCB0aGUgc2lnbmVkIG1pZ3JhdGlvbiBjb3VsZCB1c2UuALQgSWYgbm90IHNldCwgbm8gc2lnbmVkIHN1Ym1pc3Npb24gaXMgYWxsb3dlZC4AAS0FAAFFCQAEJE1heEtleUxlbjgQAAIAAFS0IE1heGltYWwgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgYSBrZXkgY2FuIGhhdmUuALAgRlJBTUUgaXRzZWxmIGRvZXMgbm90IGxpbWl0IHRoZSBrZXkgbGVuZ3RoLgEBIFRoZSBjb25jcmV0ZSB2YWx1ZSBtdXN0IHRoZXJlZm9yZSBkZXBlbmQgb24geW91ciBzdG9yYWdlIHVzYWdlLlkBIEEgW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlTk1hcGBdIGZvciBleGFtcGxlIGNhbiBoYXZlIGFuIGFyYml0cmFyeSBudW1iZXIgb2ZFASBrZXlzIHdoaWNoIGFyZSB0aGVuIGhhc2hlZCBhbmQgY29uY2F0ZW5hdGVkLCByZXN1bHRpbmcgaW4gYXJiaXRyYXJpbHkgbG9uZyBrZXlzLgBBASBVc2UgdGhlICpzdGF0ZSBtaWdyYXRpb24gUlBDKiB0byByZXRyaWV2ZSB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IGtleSBpbiB5b3VyAQEgc3RvcmFnZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9pc3N1ZXMvMTE2NDI+ACkBIFRoZSBtaWdyYXRpb24gd2lsbCBoYWx0IHdpdGggYSBgSGFsdGVkYCBldmVudCBpZiB0aGlzIHZhbHVlIGlzIHRvbyBzbWFsbC5JASBTaW5jZSB0aGVyZSBpcyBubyByZWFsIHBlbmFsdHkgZnJvbSBvdmVyLWVzdGltYXRpbmcsIGl0IGlzIGFkdmlzZWQgdG8gdXNlIGEgbGFyZ2WAIHZhbHVlLiBUaGUgZGVmYXVsdCBpcyA1MTIgYnl0ZS4AgCBTb21lIGtleSBsZW5ndGhzIGZvciByZWZlcmVuY2U60CAtIFtgZnJhbWVfc3VwcG9ydDo6c3RvcmFnZTo6U3RvcmFnZVZhbHVlYF06IDMyIGJ5dGXIIC0gW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlTWFwYF06IDY0IGJ5dGXgIC0gW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlRG91YmxlTWFwYF06IDk2IGJ5dGUASCBGb3IgbW9yZSBpbmZvIHNlZUUBIDxodHRwczovL3d3dy5zaGF3bnRhYnJpemkuY29tL2Jsb2cvaW50ZXJhY3Rpbmctd2l0aC10aGUtc3Vic3RyYXRlLXJwYy1lbmRwb2ludC8+AAFNCQAAAEYAADxOb21pbmF0aW9uUG9vbHMBPE5vbWluYXRpb25Qb29sc1RAVG90YWxWYWx1ZUxvY2tlZAEAVQFAAAAAAAAAAAAAAAAAAAAAABSMIFRoZSBzdW0gb2YgZnVuZHMgYWNyb3NzIGFsbCBwb29scy4AcQEgVGhpcyBtaWdodCBiZSBsb3dlciBidXQgbmV2ZXIgaGlnaGVyIHRoYW4gdGhlIHN1bSBvZiBgdG90YWxfYmFsYW5jZWAgb2YgYWxsIFtgUG9vbE1lbWJlcnNgXVkBIGJlY2F1c2UgY2FsbGluZyBgcG9vbF93aXRoZHJhd191bmJvbmRlZGAgbWlnaHQgZGVjcmVhc2UgdGhlIHRvdGFsIHN0YWtlIG9mIHRoZSBwb29sJ3MpASBgYm9uZGVkX2FjY291bnRgIHdpdGhvdXQgYWRqdXN0aW5nIHRoZSBwYWxsZXQtaW50ZXJuYWwgYFVuYm9uZGluZ1Bvb2xgJ3MuACxNaW5Kb2luQm9uZAEAVQFAAAAAAAAAAAAAAAAAAAAAAAScIE1pbmltdW0gYW1vdW50IHRvIGJvbmQgdG8gam9pbiBhIHBvb2wuADRNaW5DcmVhdGVCb25kAQBVAUAAAAAAAAAAAAAAAAAAAAAAHKAgTWluaW11bSBib25kIHJlcXVpcmVkIHRvIGNyZWF0ZSBhIHBvb2wuAGUBIFRoaXMgaXMgdGhlIGFtb3VudCB0aGF0IHRoZSBkZXBvc2l0b3IgbXVzdCBwdXQgYXMgdGhlaXIgaW5pdGlhbCBzdGFrZSBpbiB0aGUgcG9vbCwgYXMgYW6IIGluZGljYXRpb24gb2YgInNraW4gaW4gdGhlIGdhbWUiLgBpASBUaGlzIGlzIHRoZSB2YWx1ZSB0aGF0IHdpbGwgYWx3YXlzIGV4aXN0IGluIHRoZSBzdGFraW5nIGxlZGdlciBvZiB0aGUgcG9vbCBib25kZWQgYWNjb3VudIAgd2hpbGUgYWxsIG90aGVyIGFjY291bnRzIGxlYXZlLgAgTWF4UG9vbHMAADgEAAhpASBNYXhpbXVtIG51bWJlciBvZiBub21pbmF0aW9uIHBvb2xzIHRoYXQgY2FuIGV4aXN0LiBJZiBgTm9uZWAsIHRoZW4gYW4gdW5ib3VuZGVkIG51bWJlciBvZkQgcG9vbHMgY2FuIGV4aXN0LgA4TWF4UG9vbE1lbWJlcnMAADgEAAhJASBNYXhpbXVtIG51bWJlciBvZiBtZW1iZXJzIHRoYXQgY2FuIGV4aXN0IGluIHRoZSBzeXN0ZW0uIElmIGBOb25lYCwgdGhlbiB0aGUgY291bnS4IG1lbWJlcnMgYXJlIG5vdCBib3VuZCBvbiBhIHN5c3RlbSB3aWRlIGJhc2lzLgBUTWF4UG9vbE1lbWJlcnNQZXJQb29sAAA4BAAIQQEgTWF4aW11bSBudW1iZXIgb2YgbWVtYmVycyB0aGF0IG1heSBiZWxvbmcgdG8gcG9vbC4gSWYgYE5vbmVgLCB0aGVuIHRoZSBjb3VudCBvZqggbWVtYmVycyBpcyBub3QgYm91bmQgb24gYSBwZXIgcG9vbCBiYXNpcy4ATEdsb2JhbE1heENvbW1pc3Npb24AAB0FBAAMaQEgVGhlIG1heGltdW0gY29tbWlzc2lvbiB0aGF0IGNhbiBiZSBjaGFyZ2VkIGJ5IGEgcG9vbC4gVXNlZCBvbiBjb21taXNzaW9uIHBheW91dHMgdG8gYm91bmQlASBwb29sIGNvbW1pc3Npb25zIHRoYXQgYXJlID4gYEdsb2JhbE1heENvbW1pc3Npb25gLCBuZWNlc3NhcnkgaWYgYSBmdXR1cmUNASBgR2xvYmFsTWF4Q29tbWlzc2lvbmAgaXMgbG93ZXIgdGhhbiBzb21lIGN1cnJlbnQgcG9vbCBjb21taXNzaW9ucy4ALFBvb2xNZW1iZXJzAAEEBQRFDgQADEAgQWN0aXZlIG1lbWJlcnMuANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAFRDb3VudGVyRm9yUG9vbE1lbWJlcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAsQm9uZGVkUG9vbHMAAQQFOFEOBAAEaCBTdG9yYWdlIGZvciBib25kZWQgcG9vbHMuAFRDb3VudGVyRm9yQm9uZGVkUG9vbHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAsUmV3YXJkUG9vbHMAAQQFOGEOBAAIdQEgUmV3YXJkIHBvb2xzLiBUaGlzIGlzIHdoZXJlIHRoZXJlIHJld2FyZHMgZm9yIGVhY2ggcG9vbCBhY2N1bXVsYXRlLiBXaGVuIGEgbWVtYmVycyBwYXlvdXQgaXNZASBjbGFpbWVkLCB0aGUgYmFsYW5jZSBjb21lcyBvdXQgb2YgdGhlIHJld2FyZCBwb29sLiBLZXllZCBieSB0aGUgYm9uZGVkIHBvb2xzIGFjY291bnQuAFRDb3VudGVyRm9yUmV3YXJkUG9vbHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAA8U3ViUG9vbHNTdG9yYWdlAAEEBThlDgQACBkBIEdyb3VwcyBvZiB1bmJvbmRpbmcgcG9vbHMuIEVhY2ggZ3JvdXAgb2YgdW5ib25kaW5nIHBvb2xzIGJlbG9uZ3MgdG8gYSkBIGJvbmRlZCBwb29sLCBoZW5jZSB0aGUgbmFtZSBzdWItcG9vbHMuIEtleWVkIGJ5IHRoZSBib25kZWQgcG9vbHMgYWNjb3VudC4AZENvdW50ZXJGb3JTdWJQb29sc1N0b3JhZ2UBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAgTWV0YWRhdGEBAQQFOEEBBAAEXCBNZXRhZGF0YSBmb3IgdGhlIHBvb2wuAEhDb3VudGVyRm9yTWV0YWRhdGEBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAoTGFzdFBvb2xJZAEAOBAAAAAABNAgRXZlciBpbmNyZWFzaW5nIG51bWJlciBvZiBhbGwgcG9vbHMgY3JlYXRlZCBzbyBmYXIuAExSZXZlcnNlUG9vbElkTG9va3VwAAEEBQQ4BAAQ3CBBIHJldmVyc2UgbG9va3VwIGZyb20gdGhlIHBvb2wncyBhY2NvdW50IGlkIHRvIGl0cyBpZC4AdQEgVGhpcyBpcyBvbmx5IHVzZWQgZm9yIHNsYXNoaW5nIGFuZCBvbiBhdXRvbWF0aWMgd2l0aGRyYXcgdXBkYXRlLiBJbiBhbGwgb3RoZXIgaW5zdGFuY2VzLCB0aGUlASBwb29sIGlkIGlzIHVzZWQsIGFuZCB0aGUgYWNjb3VudHMgYXJlIGRldGVybWluaXN0aWNhbGx5IGRlcml2ZWQgZnJvbSBpdC4AdENvdW50ZXJGb3JSZXZlcnNlUG9vbElkTG9va3VwAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAQENsYWltUGVybWlzc2lvbnMBAQQFBGEFBAIEAQEgTWFwIGZyb20gYSBwb29sIG1lbWJlciBhY2NvdW50IHRvIHRoZWlyIG9wdGVkIGNsYWltIHBlcm1pc3Npb24uAAFFBQABUQkADCBQYWxsZXRJZEkLIHB5L25vcGxzBIQgVGhlIG5vbWluYXRpb24gcG9vbCdzIHBhbGxldCBpZC4ASE1heFBvaW50c1RvQmFsYW5jZQwECjAdASBUaGUgbWF4aW11bSBwb29sIHBvaW50cy10by1iYWxhbmNlIHJhdGlvIHRoYXQgYW4gYG9wZW5gIHBvb2wgY2FuIGhhdmUuAFUBIFRoaXMgaXMgaW1wb3J0YW50IGluIHRoZSBldmVudCBzbGFzaGluZyB0YWtlcyBwbGFjZSBhbmQgdGhlIHBvb2wncyBwb2ludHMtdG8tYmFsYW5jZXwgcmF0aW8gYmVjb21lcyBkaXNwcm9wb3J0aW9uYWwuAGUBIE1vcmVvdmVyLCB0aGlzIHJlbGF0ZXMgdG8gdGhlIGBSZXdhcmRDb3VudGVyYCB0eXBlIGFzIHdlbGwsIGFzIHRoZSBhcml0aG1ldGljIG9wZXJhdGlvbnNVASBhcmUgYSBmdW5jdGlvbiBvZiBudW1iZXIgb2YgcG9pbnRzLCBhbmQgYnkgc2V0dGluZyB0aGlzIHZhbHVlIHRvIGUuZy4gMTAsIHlvdSBlbnN1cmVlASB0aGF0IHRoZSB0b3RhbCBudW1iZXIgb2YgcG9pbnRzIGluIHRoZSBzeXN0ZW0gYXJlIGF0IG1vc3QgMTAgdGltZXMgdGhlIHRvdGFsX2lzc3VhbmNlIG9mnCB0aGUgY2hhaW4sIGluIHRoZSBhYnNvbHV0ZSB3b3JzZSBjYXNlLgBJASBGb3IgYSB2YWx1ZSBvZiAxMCwgdGhlIHRocmVzaG9sZCB3b3VsZCBiZSBhIHBvb2wgcG9pbnRzLXRvLWJhbGFuY2UgcmF0aW8gb2YgMTA6MS4xASBTdWNoIGEgc2NlbmFyaW8gd291bGQgYWxzbyBiZSB0aGUgZXF1aXZhbGVudCBvZiB0aGUgcG9vbCBiZWluZyA5MCUgc2xhc2hlZC4AME1heFVuYm9uZGluZzgQIAAAAAQ9ASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIHVuYm9uZGluZyBjaHVua3MgdGhhdCBjYW4gZXhpc3QgcGVyIG1lbWJlci4AAX0OAAQ0UmV3YXJkQ291bnRlcg0FMKggVGhlIHR5cGUgdGhhdCBpcyB1c2VkIGZvciByZXdhcmQgY291bnRlci4ANQEgVGhlIGFyaXRobWV0aWMgb2YgdGhlIHJld2FyZCBjb3VudGVyIG1pZ2h0IHNhdHVyYXRlIGJhc2VkIG9uIHRoZSBzaXplIG9mIHRoZWUBIGBDdXJyZW5jeTo6QmFsYW5jZWAuIElmIHRoaXMgaGFwcGVucywgb3BlcmF0aW9ucyBmYWlscy4gTm9uZXRoZWxlc3MsIHRoaXMgdHlwZSBzaG91bGQgYmVlASBjaG9zZW4gc3VjaCB0aGF0IHRoaXMgZmFpbHVyZSBhbG1vc3QgbmV2ZXIgaGFwcGVucywgYXMgaWYgaXQgaGFwcGVucywgdGhlIHBvb2wgYmFzaWNhbGx5ZQEgbmVlZHMgdG8gYmUgZGlzbWFudGxlZCAob3IgYWxsIHBvb2xzIG1pZ3JhdGVkIHRvIGEgbGFyZ2VyIGBSZXdhcmRDb3VudGVyYCB0eXBlLCB3aGljaCBpczwgYSBQSVRBIHRvIGRvKS4AYQEgU2VlIHRoZSBpbmxpbmUgY29kZSBkb2NzIG9mIGBNZW1iZXI6OnBlbmRpbmdfcmV3YXJkc2AgYW5kIGBSZXdhcmRQb29sOjp1cGRhdGVfcmVjb3JkZWRgZQEgZm9yIGV4YW1wbGUgYW5hbHlzaXMuIEEgW2BzcF9ydW50aW1lOjpGaXhlZFUxMjhgXSBzaG91bGQgYmUgZmluZSBmb3IgY2hhaW5zIHdpdGggYmFsYW5jZVEBIHR5cGVzIHNpbWlsYXIgdG8gdGhhdCBvZiBQb2xrYWRvdCBhbmQgS3VzYW1hLCBpbiB0aGUgYWJzZW5jZSBvZiBzZXZlcmUgc2xhc2hpbmcgKG9yPQEgcHJldmVudGVkIHZpYSBhIHJlYXNvbmFibGUgYE1heFBvaW50c1RvQmFsYW5jZWApLCBmb3IgbWFueSBtYW55IHllYXJzIHRvIGNvbWUuAFAAACRWb3Rlckxpc3QBJFZvdGVyTGlzdBwkTGlzdE5vZGVzAAEEBQSFDgQADIAgQSBzaW5nbGUgbm9kZSwgd2l0aGluIHNvbWUgYmFnLgAFASBOb2RlcyBzdG9yZSBsaW5rcyBmb3J3YXJkIGFuZCBiYWNrIHdpdGhpbiB0aGVpciByZXNwZWN0aXZlIGJhZ3MuAExDb3VudGVyRm9yTGlzdE5vZGVzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAIExpc3RCYWdzAAEEBSiJDgQADGQgQSBiYWcgc3RvcmVkIGluIHN0b3JhZ2UuABkBIFN0b3JlcyBhIGBCYWdgIHN0cnVjdCwgd2hpY2ggc3RvcmVzIGhlYWQgYW5kIHRhaWwgcG9pbnRlcnMgdG8gaXRzZWxmLgBQTmV4dE5vZGVBdXRvUmViYWdnZWQAAAQEAAgFASBQb2ludGVyIHRoYXQgcmVtZW1iZXJzIHRoZSBuZXh0IG5vZGUgdGhhdCB3aWxsIGJlIGF1dG8tcmViYWdnZWQuAQEgV2hlbiBgTm9uZWAsIHRoZSBuZXh0IHNjYW4gd2lsbCBzdGFydCBmcm9tIHRoZSBsaXN0IGhlYWQgYWdhaW4uABBMb2NrAAAQBAAQhCBMb2NrIGFsbCB1cGRhdGVzIHRvIHRoaXMgcGFsbGV0LgA5ASBJZiBhbnkgbm9kZXMgbmVlZHMgdXBkYXRpbmcsIHJlbW92YWwgb3IgYWRkaXRpb24gZHVlIHRvIGEgdGVtcG9yYXJ5IGxvY2ssIHRoZXQgW2BDYWxsOjpyZWJhZ2BdIGNhbiBiZSB1c2VkLgAwUGVuZGluZ1JlYmFnAAEEBQQQBAA4HQEgQWNjb3VudHMgdGhhdCBmYWlsZWQgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgYmFncy1saXN0IGR1ZSB0byBsb2NraW5nLlkBIFRoZXNlIGFjY291bnRzIHdpbGwgYmUgcHJvY2Vzc2VkIHdpdGggcHJpb3JpdHkgaW4gYG9uX2lkbGVgIG9yIHZpYSBgcmViYWdgIGV4dHJpbnNpYy4ATQEgTm90ZTogVGhpcyBzdG9yYWdlIGlzIGludGVudGlvbmFsbHkgdW5ib3VuZGVkLiBUaGUgZm9sbG93aW5nIGZhY3RvcnMgbWFrZSBib3VuZGluZzQgdW5uZWNlc3Nhcnk6UQEgMS4gVGhlIHN0b3JhZ2UgdXNhZ2UgaXMgdGVtcG9yYXJ5IC0gYWNjb3VudHMgYXJlIHByb2Nlc3NlZCBhbmQgcmVtb3ZlZCBpbiBgb25faWRsZWBFASAyLiBUaGUgcGFsbGV0IGlzIG9ubHkgbG9ja2VkIGR1cmluZyBzbmFwc2hvdCBnZW5lcmF0aW9uLCB3aGljaCBpcyB3ZWlnaHQtbGltaXRlZG0BIDMuIFByb2Nlc3NpbmcgaGFwcGVucyBhdCBtdWx0aXBsZSBhY2NvdW50cyBwZXIgYmxvY2ssIGNsZWFyaW5nIGV2ZW4gbGFyZ2UgYmFja2xvZ3MgcXVpY2tseUEBIDQuIEFuIGFydGlmaWNpYWwgbGltaXQgY291bGQgYmUgZXhoYXVzdGVkIGJ5IGFuIGF0dGFja2VyLCBwcmV2ZW50aW5nIGxlZ2l0aW1hdGUBASAgICBhdXRvLXJlYmFnZ2luZyBmcm9tIHB1dHRpbmcgYWNjb3VudHMgaW4gdGhlIGNvcnJlY3QgcG9zaXRpb24AaQEgV2UgZG9uJ3Qgc3RvcmUgdGhlIHNjb3JlIGhlcmUgLSBpdCdzIGFsd2F5cyBmZXRjaGVkIGZyb20gYFNjb3JlUHJvdmlkZXJgIHdoZW4gcHJvY2Vzc2luZyxpASBlbnN1cmluZyB3ZSB1c2UgdGhlIG1vc3QgdXAtdG8tZGF0ZSBzY29yZSAoYWNjb3VudHMgbWF5IGhhdmUgYmVlbiBzbGFzaGVkLCByZXdhcmRlZCwgZXRjLnQgd2hpbGUgd2FpdGluZyBpbiB0aGUgcXVldWUpLgBYQ291bnRlckZvclBlbmRpbmdSZWJhZwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAAF5BQABWQkACDRCYWdUaHJlc2hvbGRzjQ4JGSEDAOQLVAIAAADznoCXAgAAAKixl+ICAAAAlEkuNgMAAAAnnDqTAwAAAAO8zvoDAAAAQsAbbgQAAAAbR3XuBAAAADheVX0FAAAARtxgHAYAAACJOGzNBgAAALbugJIHAAAA/n7jbQgAAADoGxpiCQAAALAZ9HEKAAAAEDWSoAsAAADPyW/xDAAAAEEUbWgOAAAA55vaCRAAAADO6IXaEQAAACipx98TAAAAu3CTHxYAAACOQImgGAAAAIEKCWobAAAANmpIhB4AAABb02r4IQAAAIB8nNAlAAAAyVUwGCoAAAC9Y8HbLgAAAHHgVyk0AAAAaJCSEDoAAADtxNSiQAAAAGmTefNHAAAAj9gMGFAAAABLr4ooWQAAAGoWpj9jAAAACZUXe24AAAB4xfT7egAAAGLIEeeIAAAAUb9tZZgAAAAEjqukqQAAAFRGmNe8AAAAkcrANtIAAAAXXxgB6gAAAL0VsnwEAQAAQzWP9yEBAAC4/ITIQgEAAJlnPFBnAQAAB+RO+o8BAACzQYM+vQEAAAJ/LqLvAQAAmIO8uScCAAAWTWUqZgIAALSVE6yrAgAALY6CC/kCAACh5pgsTwMAAKYWCA2vAwAAzJ03xxkEAACg1YSVkAQAAELn4NUUBQAAAozXDagFAAAPdQrvSwYAAOqNLlwCBwAAw8uZbs0HAACx5XF8rwgAAKorjh+rCQAAtcEgPcMKAAAm0D0O+wsAAHDHWSlWDQAA663ajNgOAAD3l9uqhhAAAM/wRHZlEgAAHyZgcXoUAAAJphG+yxYAAB376C9gGQAAlDo8YD8cAACK/onEcR8AAM7ZY8cAIwAAA6kq5PYmAAD+cu7FXysAADbJzGlIMAAA2uMyRb81AAAGKnRw1DsAAHyXMtaZQgAAhKMkaCNKAABXGtRZh1IAAOfxAmLeWwAADbh2A0RmAACuBAHe1nEAAH2eswi5fgAAHgRKdhCNAAA6HfBkB50AAOBPr9rMrgAAVnnwL5XCAACVw6qpmtgAAJZ8BSUe8QAAF3pm1mcMAQAoyx8eyCoBAPooL3WYTAEA1X3IdDxyAQB9xLP7IpwBADZc3nTHygEAnrjhQrP+AQAMMa5UfzgCAF/hAejVeAIAY3PafnTAAgBR0aYNLhADAMfppGjtaAMAYcCR97fLAwC/J6G3sDkEAHsUmZQbtAQAhSPtImE8BQBppdTFEtQFAOyMk03vfAYA9aqQG+g4BwCMvl3bJgoIAAKXjOET8wgA+uMUQ132CQDd8S26/hYLAC663G9KWAwADFUYxPK9DQDwu1QxFUwPAEmOhmtGBxEAssFT3p/0EgAnii+yzhkVALI5n4QkfRcA4ZnnBKolGgC6E/WrMxsdACZHhcx4ZiAAiL+APy0RJAAcmCP4HSYoAMzEItRQsSwA8IiCBSjAMQA2fG1+iWE3AG6TKdMKpj0AjLxsEyKgRAAAcPMqXGRMALQ7hGmZCVUAgLSr5FCpXgCgzal5219pAEzCf0zHTHUA0KwOujSTggBIPgzPPVqRAGjGjnRpzaEAKB5vpSsdtACYqSMmdH/IAPCadGNNMN8AgM38S41y+ACQFGAtmpAUAfC0E9lF3TMBIJc1lsG0VgFQ3PuurX19AeARmLlHqqgBMMfuFru52AEgbkiGlzkOAqD6Sx1yx0kCwBFxcLUSjAKAihZDpt7VAsD4I7GiBCgDgK9ZcKJ2gwPAby2H/0HpA0CTf6yPkloEAJEJcRe22ARAD99bISBlBQBJwUlEbgEGAI68puVsrwYAWVaGhRxxB4BoqjSkt0gIgKHinlK5OAkAvavogORDCgAqcrQgTG0LgPHAEzNcuAwAoDzL3OMoDoC4YpqeIMMPAN5Wk9LKixEAXX9MkyOIEwAah981BL4VAKfOS4TvMxgAARD76iTxGgCAKuXRtf0dACKhNGCdYiEARCFr8NopJQACYfGCj14pAGYgz4UeDS4AhBAZUlJDMwCgwY/KhBA5ACatFJPMhT8A0M0kZi+2RgCc4Zoc2rZOAFjMwgxfn1cAIAp1ePuJYQAwu7vW5JNsAGDLp9ye3XgAuDvAQluLhgC4hiNhZMWVAPjxX9yTuKYAIGqRwNaWuQDY7+KPwJfOAGgpm/Uu+eX//////////6zQIFRoZSBsaXN0IG9mIHRocmVzaG9sZHMgc2VwYXJhdGluZyB0aGUgdmFyaW91cyBiYWdzLgBJASBJZHMgYXJlIHNlcGFyYXRlZCBpbnRvIHVuc29ydGVkIGJhZ3MgYWNjb3JkaW5nIHRvIHRoZWlyIHNjb3JlLiBUaGlzIHNwZWNpZmllcyB0aGVhASB0aHJlc2hvbGRzIHNlcGFyYXRpbmcgdGhlIGJhZ3MuIEFuIGlkJ3MgYmFnIGlzIHRoZSBsYXJnZXN0IGJhZyBmb3Igd2hpY2ggdGhlIGlkJ3Mgc2NvcmW4IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBpdHMgdXBwZXIgdGhyZXNob2xkLgBlASBXaGVuIGlkcyBhcmUgaXRlcmF0ZWQsIGhpZ2hlciBiYWdzIGFyZSBpdGVyYXRlZCBjb21wbGV0ZWx5IGJlZm9yZSBsb3dlciBiYWdzLiBUaGlzIG1lYW5zWQEgdGhhdCBpdGVyYXRpb24gaXMgX3NlbWktc29ydGVkXzogaWRzIG9mIGhpZ2hlciBzY29yZSB0ZW5kIHRvIGNvbWUgYmVmb3JlIGlkcyBvZiBsb3dlci0BIHNjb3JlLCBidXQgcGVlciBpZHMgd2l0aGluIGEgcGFydGljdWxhciBiYWcgYXJlIHNvcnRlZCBpbiBpbnNlcnRpb24gb3JkZXIuAGggIyBFeHByZXNzaW5nIHRoZSBjb25zdGFudABNASBUaGlzIGNvbnN0YW50IG11c3QgYmUgc29ydGVkIGluIHN0cmljdGx5IGluY3JlYXNpbmcgb3JkZXIuIER1cGxpY2F0ZSBpdGVtcyBhcmUgbm90LCBwZXJtaXR0ZWQuAEEBIFRoZXJlIGlzIGFuIGltcGxpZWQgdXBwZXIgbGltaXQgb2YgYFNjb3JlOjpNQVhgOyB0aGF0IHZhbHVlIGRvZXMgbm90IG5lZWQgdG8gYmUhASBzcGVjaWZpZWQgd2l0aGluIHRoZSBiYWcuIEZvciBhbnkgdHdvIHRocmVzaG9sZCBsaXN0cywgaWYgb25lIGVuZHMgd2l0aDEBIGBTY29yZTo6TUFYYCwgdGhlIG90aGVyIG9uZSBkb2VzIG5vdCwgYW5kIHRoZXkgYXJlIG90aGVyd2lzZSBlcXVhbCwgdGhlIHR3b3wgbGlzdHMgd2lsbCBiZWhhdmUgaWRlbnRpY2FsbHkuADggIyBDYWxjdWxhdGlvbgBVASBJdCBpcyByZWNvbW1lbmRlZCB0byBnZW5lcmF0ZSB0aGUgc2V0IG9mIHRocmVzaG9sZHMgaW4gYSBnZW9tZXRyaWMgc2VyaWVzLCBzdWNoIHRoYXRBASB0aGVyZSBleGlzdHMgc29tZSBjb25zdGFudCByYXRpbyBzdWNoIHRoYXQgYHRocmVzaG9sZFtrICsgMV0gPT0gKHRocmVzaG9sZFtrXSAq0CBjb25zdGFudF9yYXRpbykubWF4KHRocmVzaG9sZFtrXSArIDEpYCBmb3IgYWxsIGBrYC4AWQEgVGhlIGhlbHBlcnMgaW4gdGhlIGAvdXRpbHMvZnJhbWUvZ2VuZXJhdGUtYmFnc2AgbW9kdWxlIGNhbiBzaW1wbGlmeSB0aGlzIGNhbGN1bGF0aW9uLgAsICMgRXhhbXBsZXMAUQEgLSBJZiBgQmFnVGhyZXNob2xkczo6Z2V0KCkuaXNfZW1wdHkoKWAsIHRoZW4gYWxsIGlkcyBhcmUgcHV0IGludG8gdGhlIHNhbWUgYmFnLCBhbmSwICAgaXRlcmF0aW9uIGlzIHN0cmljdGx5IGluIGluc2VydGlvbiBvcmRlci5hASAtIElmIGBCYWdUaHJlc2hvbGRzOjpnZXQoKS5sZW4oKSA9PSA2NGAsIGFuZCB0aGUgdGhyZXNob2xkcyBhcmUgZGV0ZXJtaW5lZCBhY2NvcmRpbmcgdG8RASAgIHRoZSBwcm9jZWR1cmUgZ2l2ZW4gYWJvdmUsIHRoZW4gdGhlIGNvbnN0YW50IHJhdGlvIGlzIGVxdWFsIHRvIDIuZQEgLSBJZiBgQmFnVGhyZXNob2xkczo6Z2V0KCkubGVuKCkgPT0gMjAwYCwgYW5kIHRoZSB0aHJlc2hvbGRzIGFyZSBkZXRlcm1pbmVkIGFjY29yZGluZyB0b1kBICAgdGhlIHByb2NlZHVyZSBnaXZlbiBhYm92ZSwgdGhlbiB0aGUgY29uc3RhbnQgcmF0aW8gaXMgYXBwcm94aW1hdGVseSBlcXVhbCB0byAxLjI0OC5hASAtIElmIHRoZSB0aHJlc2hvbGQgbGlzdCBiZWdpbnMgYFsxLCAyLCAzLCAuLi5dYCwgdGhlbiBhbiBpZCB3aXRoIHNjb3JlIDAgb3IgMSB3aWxsIGZhbGzwICAgaW50byBiYWcgMCwgYW4gaWQgd2l0aCBzY29yZSAyIHdpbGwgZmFsbCBpbnRvIGJhZyAxLCBldGMuADAgIyBNaWdyYXRpb24AYQEgSW4gdGhlIGV2ZW50IHRoYXQgdGhpcyBsaXN0IGV2ZXIgY2hhbmdlcywgYSBjb3B5IG9mIHRoZSBvbGQgYmFncyBsaXN0IG11c3QgYmUgcmV0YWluZWQuXQEgV2l0aCB0aGF0IGBMaXN0OjptaWdyYXRlYCBjYW4gYmUgY2FsbGVkLCB3aGljaCB3aWxsIHBlcmZvcm0gdGhlIGFwcHJvcHJpYXRlIG1pZ3JhdGlvbi4AUE1heEF1dG9SZWJhZ1BlckJsb2NrOBAKAAAAEDUBIE1heGltdW0gbnVtYmVyIG9mIGFjY291bnRzIHRoYXQgbWF5IGJlIHJlLWJhZ2dlZCBhdXRvbWF0aWNhbGx5IGluIGBvbl9pZGxlYC4AUQEgQSB2YWx1ZSBvZiBgMGAgKG9idGFpbmVkIGJ5IGNvbmZpZ3VyaW5nIGB0eXBlIE1heEF1dG9SZWJhZ1BlckJsb2NrID0gKCk7YCkgZGlzYWJsZXM0IHRoZSBmZWF0dXJlLgABkQ4ABBRTY29yZSgECQEgVGhlIHR5cGUgdXNlZCB0byBkaWN0YXRlIGEgbm9kZSBwb3NpdGlvbiByZWxhdGl2ZSB0byBvdGhlciBub2Rlcy4EdN1wLaRvd9es939aSNSvfRJGUJ0hzbEm6LrFaBPEop4Yc2NvcmVzBAx3aG8EmQ4YsCBHZXQgdGhlIGN1cnJlbnQgYHNjb3JlYCBvZiBhIGdpdmVuIGFjY291bnQuAGEBIFJldHVybnMgYChjdXJyZW50LCByZWFsX3Njb3JlKWAsIHRoZSBmb3JtZXIgYmVpbmcgdGhlIGN1cnJlbnQgc2NvcmUgdGhhdCB0aGlzIHBhbGxldCBpc1kBIGF3YXJlIG9mLCB3aGljaCBtYXkgb3IgbWF5IG5vdCBiZSB1cCB0byBkYXRlLCBhbmQgdGhlIGxhdHRlciBiZWluZyB0aGUgcmVhbCBzY29yZSwgYXMwIHByb3ZpZGVkIGJ5HQEgSWYgdGhlIHR3byBkaWZmZXIsIGl0IG1lYW5zIHRoaXMgbm9kZSBpcyBlbGlnaWJsZSBmb3IgW2BDYWxsOjpyZWJhZ2BdLgBSAABARGVsZWdhdGVkU3Rha2luZwFARGVsZWdhdGVkU3Rha2luZxAoRGVsZWdhdG9ycwABBAUEnQ4EABCkIE1hcCBvZiBEZWxlZ2F0b3JzIHRvIHRoZWlyIGBEZWxlZ2F0aW9uYC4AYQEgSW1wbGVtZW50YXRpb24gbm90ZTogV2UgYXJlIG5vdCB1c2luZyBhIGRvdWJsZSBtYXAgd2l0aCBgZGVsZWdhdG9yYCBhbmQgYGFnZW50YCBhY2NvdW50YQEgYXMga2V5cyBzaW5jZSB3ZSB3YW50IHRvIHJlc3RyaWN0IGRlbGVnYXRvcnMgdG8gZGVsZWdhdGUgb25seSB0byBvbmUgYWNjb3VudCBhdCBhIHRpbWUuAFBDb3VudGVyRm9yRGVsZWdhdG9ycwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwABhBZ2VudHMAAQQFBKEOBAAEiCBNYXAgb2YgYEFnZW50YCB0byB0aGVpciBgTGVkZ2VyYC4AQENvdW50ZXJGb3JBZ2VudHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAAAV0JAAggUGFsbGV0SWRJCyBweS9kbHN0awSQIEluamVjdGVkIGlkZW50aWZpZXIgZm9yIHRoZSBwYWxsZXQuAExTbGFzaFJld2FyZEZyYWN0aW9uHQUQgJaYAARRASBGcmFjdGlvbiBvZiB0aGUgc2xhc2ggdGhhdCBpcyByZXdhcmRlZCB0byB0aGUgY2FsbGVyIG9mIHBlbmRpbmcgc2xhc2ggdG8gdGhlIGFnZW50LgABpQ4AAABTAAA8U3Rha2luZ1JjQ2xpZW50ATxTdGFraW5nUmNDbGllbnQMXEluY29tcGxldGVTZXNzaW9uUmVwb3J0AACBBQQABB0BIEFuIGluY29tcGxldGUgaW5jb21pbmcgc2Vzc2lvbiByZXBvcnQgdGhhdCB3ZSBoYXZlIG5vdCBhY3RlZCB1cG9uIHlldC4AcExhc3RTZXNzaW9uUmVwb3J0RW5kaW5nSW5kZXgAADgEACD8IFRoZSBsYXN0IHNlc3Npb24gcmVwb3J0J3MgYGVuZF9pbmRleGAgdGhhdCB3ZSBoYXZlIGFjdGVkIHVwb24uAGEBIFRoaXMgYWxsb3dzIHRoaXMgcGFsbGV0IHRvIGVuc3VyZSBhIHNlcXVlbnRpYWxseSBpbmNyZWFzaW5nIHNlcXVlbmNlIG9mIHNlc3Npb24gcmVwb3J0c0wgcGFzc2VkIHRvIHN0YWtpbmcuAF0BIE5vdGUgdGhhdCB3aXRoIHRoZSBYQ00gYmVpbmcgdGhlIGJhY2tib25lIG9mIGNvbW11bmljYXRpb24sIHdlIGhhdmUgYSBndWFyYW50ZWUgb24gdGhlYQEgb3JkZXJpbmcgb2YgbWVzc2FnZXMuIEFzIGxvbmcgYXMgdGhlIFJDIHNlbmRzIHNlc3Npb24gcmVwb3J0cyBpbiBvcmRlciwgd2UgX2V2ZW50dWFsbHlfwCByZWNlaXZlIHRoZW0gaW4gdGhlIHNhbWUgY29ycmVjdCBvcmRlciBhcyB3ZWxsLgBQT3V0Z29pbmdWYWxpZGF0b3JTZXQAAKkOBAAQ2CBBIHZhbGlkYXRvciBzZXQgdGhhdCBpcyBvdXRnb2luZywgYW5kIHNob3VsZCBiZSBzZW50LgB1ASBUaGlzIHdpbGwgYmUgYXR0ZW1wdGVkIHRvIGJlIHNlbnQsIHBvc3NpYmx5IG9uIGV2ZXJ5IGBvbl9pbml0aWFsaXplYCBjYWxsLCB1bnRpbCBpdCBpcyBzZW50LPQgb3IgdGhlIHNlY29uZCB2YWx1ZSByZWFjaGVzIHplcm8sIGF0IHdoaWNoIHBvaW50IHdlIGRyb3AgaXQuAAF9BQABYQkABChLZXlEZXBvc2l0VQFAAOh2SBcAAAAAAAAAAAAAAAQtASBEZXBvc2l0IGhlbGQgd2hlbiBhIHZhbGlkYXRvciBzZXRzIHNlc3Npb24ga2V5cy4gUmVsZWFzZWQgb24gYHB1cmdlX2tleXNgLgABsQ4AAABUAABITXVsdGlCbG9ja0VsZWN0aW9uAUhNdWx0aUJsb2NrRWxlY3Rpb24cFFJvdW5kAQA4EAAAAAAYrCBJbnRlcm5hbCBjb3VudGVyIGZvciB0aGUgbnVtYmVyIG9mIHJvdW5kcy4AVQEgVGhpcyBpcyB1c2VmdWwgZm9yIGRlLWR1cGxpY2F0aW9uIG9mIHRyYW5zYWN0aW9ucyBzdWJtaXR0ZWQgdG8gdGhlIHBvb2wsIGFuZCBnZW5lcmFsbCBkaWFnbm9zdGljcyBvZiB0aGUgcGFsbGV0LgBNASBUaGlzIGlzIG1lcmVseSBpbmNyZW1lbnRlZCBvbmNlIHBlciBldmVyeSB0aW1lIHRoYXQgYW4gdXBzdHJlYW0gYGVsZWN0YCBpcyBjYWxsZWQuADBDdXJyZW50UGhhc2UBAKkFBAAEPCBDdXJyZW50IHBoYXNlLgA4RGVzaXJlZFRhcmdldHMAAQQFODgEAATMIERlc2lyZWQgbnVtYmVyIG9mIHRhcmdldHMgdG8gZWxlY3QgZm9yIHRoaXMgcm91bmQuAEhQYWdlZFZvdGVyU25hcHNob3QAAQgFBcy1DgQABAEBIFBhZ2luYXRlZCB2b3RlciBzbmFwc2hvdC4gQXQgbW9zdCBbYFQ6OlBhZ2VzYF0ga2V5cyB3aWxsIGV4aXN0LgBYUGFnZWRWb3RlclNuYXBzaG90SGFzaAABCAUFzDwEAAwxASBTYW1lIGFzIFtgUGFnZWRWb3RlclNuYXBzaG90YF0sIGJ1dCBpdCB3aWxsIHN0b3JlIHRoZSBoYXNoIG9mIHRoZSBzbmFwc2hvdC4A/CBUaGUgaGFzaCBpcyBnZW5lcmF0ZWQgdXNpbmcgW2BmcmFtZV9zeXN0ZW06OkNvbmZpZzo6SGFzaGluZ2BdLgBMUGFnZWRUYXJnZXRTbmFwc2hvdAABCAUFzMUOBAAMbCBQYWdpbmF0ZWQgdGFyZ2V0IHNuYXBzaG90LgBZASBGb3IgdGhlIHRpbWUgYmVpbmcsIHNpbmNlIHdlIGFzc3VtZSBvbmUgcGFnZXMgb2YgdGFyZ2V0cywgYXQgbW9zdCBPTkUga2V5IHdpbGwgZXhpc3QuAFxQYWdlZFRhcmdldFNuYXBzaG90SGFzaAABCAUFzDwEAAw1ASBTYW1lIGFzIFtgUGFnZWRUYXJnZXRTbmFwc2hvdGBdLCBidXQgaXQgd2lsbCBzdG9yZSB0aGUgaGFzaCBvZiB0aGUgc25hcHNob3QuAPwgVGhlIGhhc2ggaXMgZ2VuZXJhdGVkIHVzaW5nIFtgZnJhbWVfc3lzdGVtOjpDb25maWc6Okhhc2hpbmdgXS4AAaEFAAFpCQAYNFVuc2lnbmVkUGhhc2U4EJYAAAAEgCBEdXJhdGlvbiBvZiB0aGUgdW5zaWduZWQgcGhhc2UuACxTaWduZWRQaGFzZTgQLAEAAAR4IER1cmF0aW9uIG9mIHRoZSBzaWduZWQgcGhhc2UuAFRTaWduZWRWYWxpZGF0aW9uUGhhc2U4EAACAAAQpCBEdXJhdGlvbiBvZiB0aGUgc2luZ2VkIHZhbGlkYXRpb24gcGhhc2UuAFUBIFRoZSBkdXJhdGlvbiBvZiB0aGlzIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIGBUOjpQYWdlc2AsIGFuZCB0aGVyZSBpcyBubyBwb2ludCBpbiBpdAEBIGJlaW5nIG1vcmUgdGhhbiBgU2lnbmVkUGhhc2U6Ok1heFN1Ym1pc3Npb246OmdldCgpICogVDo6UGFnZXNgLgBUVm90ZXJTbmFwc2hvdFBlckJsb2NrOBDAAgAABMggVGhlIG51bWJlciBvZiBzbmFwc2hvdCB2b3RlcnMgdG8gZmV0Y2ggcGVyIGJsb2NrLgBYVGFyZ2V0U25hcHNob3RQZXJCbG9jazgQ0AcAAATMIFRoZSBudW1iZXIgb2Ygc25hcHNob3QgdGFyZ2V0cyB0byBmZXRjaCBwZXIgYmxvY2suABRQYWdlczgQIAAAABhUIFRoZSBudW1iZXIgb2YgcGFnZXMuAAEBIFRoZSBzbmFwc2hvdCBpcyBjcmVhdGVkIHdpdGggdGhpcyBtYW55IGtleXMgaW4gdGhlIHN0b3JhZ2UgbWFwLgBRASBUaGUgc29sdXRpb25zIG1heSBjb250YWluIGF0IE1PU1QgdGhpcyBtYW55IHBhZ2VzLCBidXQgbGVzcyBwYWdlcyBhcmUgYWNjZXB0YWJsZSBhcxggd2VsbC4AAckOAAAAVQAAaE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyAWhNdWx0aUJsb2NrRWxlY3Rpb25WZXJpZmllchw8UXVldWVkU29sdXRpb25YAAEIBQXMsQUEABw9ASBUaGUgYFhgIHZhcmlhbnQgb2YgdGhlIGN1cnJlbnQgcXVldWVkIHNvbHV0aW9uLiBNaWdodCBiZSB0aGUgdmFsaWQgb25lIG9yIG5vdC4AaQEgVGhlIHR3byB2YXJpYW50cyBvZiB0aGlzIHN0b3JhZ2UgaXRlbSBpcyB0byBhdm9pZCB0aGUgbmVlZCBvZiBjb3B5aW5nLiBSZWNhbGwgdGhhdCBvbmNlIGFxASBgVmVyaWZ5aW5nU29sdXRpb25gIGlzIGJlaW5nIHByb2Nlc3NlZCwgaXQgbmVlZHMgdG8gd3JpdGUgaXRzIHBhcnRpYWwgc3VwcG9ydHMgKnNvbWV3aGVyZSouaQEgV3JpdGluZyB0aGVzZXMgc3VwcG9ydHMgb24gdG9wIG9mIGEgKmdvb2QqIHF1ZXVlZCBzdXBwb3J0cyBpcyB3cm9uZywgc2luY2Ugd2UgbWlnaHQgYmFpbC51ASBXcml0aW5nIHRoZW0gdG8gYSBidWdnZXIgYW5kIGNvcHlpbmcgYXQgdGhlIG5lZCBpcyBzbGlnaHRseSBiZXR0ZXIsIGJ1dCBleHBlbnNpdmUuIFRoaXMgZmxhZ3wgc3lzdGVtIGlzIGJlc3Qgb2YgYm90aCB3b3JsZHMuADxRdWV1ZWRTb2x1dGlvblkAAQgFBcyxBQQABD0BIFRoZSBgWWAgdmFyaWFudCBvZiB0aGUgY3VycmVudCBxdWV1ZWQgc29sdXRpb24uIE1pZ2h0IGJlIHRoZSB2YWxpZCBvbmUgb3Igbm90LgBIUXVldWVkVmFsaWRWYXJpYW50AQEEBTjNDgQBCF0BIFBvaW50ZXIgdG8gdGhlIHZhcmlhbnQgb2YgW2BRdWV1ZWRTb2x1dGlvblhgXSBvciBbYFF1ZXVlZFNvbHV0aW9uWWBdIHRoYXQgaXMgY3VycmVudGx5HCB2YWxpZC4AWFF1ZXVlZFNvbHV0aW9uQmFja2luZ3MAAQgFBczRDgQAINQgVGhlIGAoYW1vdW50LCBjb3VudClgIG9mIGJhY2tpbmdzLCBkaXZpZGVkIHBlciBwYWdlLgBxASBUaGlzIGlzIHN0b3JlZCBiZWNhdXNlIGluIHRoZSBsYXN0IGJsb2NrIG9mIHZlcmlmaWNhdGlvbiB3ZSBuZWVkIHRoZW0gdG8gY29tcHV0ZSB0aGUgc2NvcmUsmCBhbmQgY2hlY2sgYE1heEJhY2tlcnNQZXJXaW5uZXJGaW5hbGAuAHEBIFRoaXMgY2FuIG9ubHkgZXZlciBsaXZlIGZvciB0aGUgaW52YWxpZCB2YXJpYW50IG9mIHRoZSBzb2x1dGlvbi4gT25jZSBpdCBpcyB2YWxpZCwgd2UgZG9uJ3QVASBuZWVkIHRoaXMgaW5mb3JtYXRpb24gYW55bW9yZTsgdGhlIHNjb3JlIGlzIGFscmVhZHkgY29tcHV0ZWQgb25jZSBpbvQgW2BRdWV1ZWRTb2x1dGlvblNjb3JlYF0sIGFuZCB0aGUgYmFja2luZyBjb3VudHMgYXJlIGNoZWNrZWQuAExRdWV1ZWRTb2x1dGlvblNjb3JlAAEEBTjRBQQADNggVGhlIHNjb3JlIG9mIHRoZSB2YWxpZCB2YXJpYW50IG9mIFtgUXVldWVkU29sdXRpb25gXS4AuCBUaGlzIG9ubHkgZXZlciBsaXZlcyBmb3IgdGhlIGB2YWxpZGAgdmFyaWFudC4AME1pbmltdW1TY29yZQAA0QUEAARVASBUaGUgbWluaW11bSBzY29yZSB0aGF0IGVhY2ggc29sdXRpb24gbXVzdCBhdHRhaW4gaW4gb3JkZXIgdG8gYmUgY29uc2lkZXJlZCBmZWFzaWJsZS4ANFN0YXR1c1N0b3JhZ2UBAOEOBAEEdCBTdG9yYWdlIGl0ZW0gZm9yIFtgU3RhdHVzYF0uAAHVBQABbQkADGBNYXhCYWNrZXJzUGVyV2lubmVyRmluYWw4EORXAAAUHQEgTWF4aW11bSBudW1iZXIgb2YgYmFja2VycywgcGVyIHdpbm5lciwgYW1vbmcgYWxsIHBhZ2VzIG9mIGFuIGVsZWN0aW9uLgAFASBUaGlzIGNhbiBvbmx5IGJlIGNoZWNrZWQgYXQgdGhlIHZlcnkgZmluYWwgc3RlcCBvZiB2ZXJpZmljYXRpb24uAF0BIE5PVEU6IGF0IHRoZSBtb21lbnQsIHdlIGRvbid0IGNoZWNrIHRoaXMsIGFuZCBpdCBpcyBpbiBwbGFjZSBmb3IgZnV0dXJlIGNvbXBhdGliaWxpdHkuAExNYXhCYWNrZXJzUGVyV2lubmVyOBDAAgAABMQgTWF4aW11bSBudW1iZXIgb2YgYmFja2VycywgcGVyIHdpbm5lciwgcGVyIHBhZ2UuAERNYXhXaW5uZXJzUGVyUGFnZTgQ6AMAAAhhASBNYXhpbXVtIG51bWJlciBvZiBzdXBwb3J0cyAoYWthLiB3aW5uZXJzL3ZhbGlkYXRvcnMvdGFyZ2V0cykgdGhhdCBjYW4gYmUgcmVwcmVzZW50ZWQgaW5MIGEgcGFnZSBvZiByZXN1bHRzLgAAAABWAABoTXVsdGlCbG9ja0VsZWN0aW9uVW5zaWduZWQAAdkFAAAAAAAAVwAAYE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZAFgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkEDRJbnZ1bG5lcmFibGVzAQC9DgQAJBUBIEFjY291bnRzIHdoaXRlbGlzdGVkIGJ5IGdvdmVybmFuY2UgdG8gYWx3YXlzIHN1Ym1pdCB0aGVpciBzb2x1dGlvbnMuAHAgVGhleSBhcmUgZGlmZmVyZW50IGluIHRoYXQ6APwgKiBUaGV5IGFsd2F5cyBwYXkgYSBmaXhlZCBkZXBvc2l0IGZvciBzdWJtaXNzaW9uLCBzcGVjaWZpZWQgYnn0ICAgW2BDb25maWc6OkludnVsbmVyYWJsZURlcG9zaXRgXS4gVGhleSBwYXkgbm8gcGFnZSBkZXBvc2l0LmkBICogSWYgX2VqZWN0ZWRfIGJ5IGJldHRlciBzb2x1dGlvbiBmcm9tIFtgU29ydGVkU2NvcmVzYF0sIHRoZXkgd2lsbCBnZXQgdGhlaXIgZnVsbCBkZXBvc2l0ICAgIGJhY2suCQEgKiBUaGV5IGFsd2F5cyBnZXQgdGhlaXIgdHgtZmVlIGJhY2sgZXZlbiBpZiB0aGV5IGFyZSBfZGlzY2FyZGVkXy4AMFNvcnRlZFNjb3JlcwEBBAU45Q4EAAAARFN1Ym1pc3Npb25TdG9yYWdlAAEMBQUF8Q7lBQQABOwgVHJpcGxlIG1hcCBmcm9tIChyb3VuZCwgYWNjb3VudCwgcGFnZSkgdG8gYSBzb2x1dGlvbiBwYWdlLgBkU3VibWlzc2lvbk1ldGFkYXRhU3RvcmFnZQABCAUFhQz1DgQAENggTWFwIGZyb20gYWNjb3VudCB0byB0aGUgbWV0YWRhdGEgb2YgdGhlaXIgc3VibWlzc2lvbi4AcQEgaW52YXJpYW50OiBmb3IgYW55IEtleTEgb2YgdHlwZSBgQWNjb3VudElkYCBpbiBbYFN1Ym1pc3Npb25zYF0sIHRoaXMgc3RvcmFnZSBtYXAgYWxzbyBoYXMgYRwgdmFsdWUuAAGxBgABfQkAAAEBDwAABHcLZVBCaAvPBTnSBN9Z0yiJr6YLyclMjiR27ZuqqTAFLGRlcG9zaXRfZm9yCAx3aG8EFHBhZ2VzOFUBFBEBIEdldCB0aGUgZGVwb3NpdCBhbW91bnQgdGhhdCB3aWxsIGJlIGhlbGQgZm9yIGEgc29sdXRpb24gb2YgYHBhZ2VzYC4AQQEgVGhpcyBhbGxvd3MgYW4gb2ZmY2hhaW4gYXBwbGljYXRpb24gdG8ga25vdyB3aGF0IFtgQ29uZmlnOjpEZXBvc2l0UGVyUGFnZWBdIGFuZGUBIFtgQ29uZmlnOjpEZXBvc2l0QmFzZWBdIGFyZSBkb2luZyB1bmRlciB0aGUgaG9vZC4gSXQgYWxzbyB0YWtlcyBpbnRvIGFjY291bnQgaWYgYHdob2AgaXNoIFtgSW52dWxuZXJhYmxlc2BdIG9yIG5vdC4AWAAAHFN0YWtpbmcBHFN0YWtpbmfQOFZhbGlkYXRvckNvdW50AQA4EAAAAAAEnCBUaGUgaWRlYWwgbnVtYmVyIG9mIGFjdGl2ZSB2YWxpZGF0b3JzLgAYQm9uZGVkAAEEBQQEBAAMAQEgTWFwIGZyb20gYWxsIGxvY2tlZCAic3Rhc2giIGFjY291bnRzIHRvIHRoZSBjb250cm9sbGVyIGFjY291bnQuANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAEBNaW5Ob21pbmF0b3JCb25kAQBVAUAAAAAAAAAAAAAAAAAAAAAABCEBIFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIHRvIGJlY29tZSBhbmQgbWFpbnRhaW4gdGhlIHJvbGUgb2YgYSBub21pbmF0b3IuAEBNaW5WYWxpZGF0b3JCb25kAQBVAUAAAAAAAAAAAAAAAAAAAAAABCEBIFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIHRvIGJlY29tZSBhbmQgbWFpbnRhaW4gdGhlIHJvbGUgb2YgYSB2YWxpZGF0b3IuAEhNaW5pbXVtQWN0aXZlU3Rha2UBAFUBQAAAAAAAAAAAAAAAAAAAAAAEEQEgVGhlIG1pbmltdW0gYWN0aXZlIG5vbWluYXRvciBzdGFrZSBvZiB0aGUgbGFzdCBzdWNjZXNzZnVsIGVsZWN0aW9uLgA0TWluQ29tbWlzc2lvbgEAHQUQAAAAAAzoIFRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgdmFsaWRhdG9ycyBjYW4gc2V0LgCAIElmIHNldCB0byBgMGAsIG5vIGxpbWl0IGV4aXN0cy4ANE1heENvbW1pc3Npb24BAB0FEADKmjsMwCBUaGUgbWF4aW11bSBjb21taXNzaW9uIHRoYXQgdmFsaWRhdG9ycyBjYW4gc2V0LgAZASBJZiBub3Qgc2V0LCBkZWZhdWx0cyB0byBgUGVyYmlsbDo6b25lKClgICgxMDAlKSwgaS5lLiBubyB1cHBlciBsaW1pdC4ATERpc2FibGVNaW50aW5nR3VhcmQAADgEABw9ASBTYWZldHkgZ3VhcmQ6IHRoZSBlcmEgZnJvbSB3aGljaCBsZWdhY3kgbWludGluZyBpcyBwZXJtYW5lbnRseSBkaXNhYmxlZCBvbiB0aGUVASBwYXlvdXQgc2lkZS4gKipJcnJldmVyc2libGUqKiDigJQgb25jZSBzZXQsIHNob3VsZCBuZXZlciBiZSBjbGVhcmVkLgAxASBTZXBhcmF0ZSBmcm9tIFtgQ29uZmlnOjpEaXNhYmxlTWludGluZ2BdIHdoaWNoIGNvbnRyb2xzIHRoZSBgZW5kX2VyYWAgcGF0aC41ASBUaGlzIHN0b3JhZ2UgZ3VhcmRzIGFnYWluc3QgbWludGluZyBkdXJpbmcgcGF5b3V0IGZvciBlcmFzIHRoYXQgd2VyZSBjcmVhdGVkSQEgaW4gREFQIG1vZGUuIFNldCBhdXRvbWF0aWNhbGx5IGJ5IGBlbmRfZXJhX2RhcGAgb24gZmlyc3Qgc3VjY2Vzc2Z1bCBwb3Qgc25hcHNob3QuGQEgSW4gbGVnYWN5IG1vZGUgKEt1c2FtYSksIHRoaXMgaXMgbmV2ZXIgc2V0IGFuZCB0aGUgZ3VhcmQgaXMgaW5hY3RpdmUuAEBPcHRpbXVtU2VsZlN0YWtlAQBVAUAAAAAAAAAAAAAAAAAAAAAAELQgT3B0aW11bSBzZWxmLXN0YWtlIHRocmVzaG9sZCBmb3IgdmFsaWRhdG9ycy4AIQEgQmVsb3cgdGhpcyB0aHJlc2hvbGQsIHRoZSBpbmNlbnRpdmUgd2VpZ2h0IGdyb3dzIGFzIGBzcXJ0KHNlbGZfc3Rha2UpYC7oIEFib3ZlIGl0LCBncm93dGggaXMgZGFtcGVuZWQgYnkgW2BTZWxmU3Rha2VTbG9wZUZhY3RvcmBdLgBASGFyZENhcFNlbGZTdGFrZQEAVQFAAAAAAAAAAAAAAAAAAAAAAAywIEhhcmQgY2FwIG9uIGVmZmVjdGl2ZSB2YWxpZGF0b3Igc2VsZi1zdGFrZS4ANQEgU2VsZi1zdGFrZSBhYm92ZSB0aGlzIHZhbHVlIHJlY2VpdmVzIG5vIGFkZGl0aW9uYWwgcmV3YXJkIGJlbmVmaXQgKHBsYXRlYXUpLgBQU2VsZlN0YWtlU2xvcGVGYWN0b3IBAB0FEAAAAAAMZQEgU2xvcGUgZmFjdG9yIGNvbnRyb2xsaW5nIHRoZSBkaXNjb3VyYWdlbWVudCByYXRlIGZvciBzZWxmLXN0YWtlIGJldHdlZW4gb3B0aW11bSBhbmQgY2FwLgBFASBWYWx1ZSBiZXR3ZWVuIDAgYW5kIDE6IGs9MSBtZWFucyBubyBkaXNjb3VyYWdlbWVudCwgaz0wIG1lYW5zIGltbWVkaWF0ZSBwbGF0ZWF1LgBwRXJhc1ZhbGlkYXRvckluY2VudGl2ZUJ1ZGdldAEBBAU4VQFAAAAAAAAAAAAAAAAAAAAAAAxBASBUaGUgdG90YWwgdmFsaWRhdG9yIGluY2VudGl2ZSBidWRnZXQgZm9yIHRoZSBnaXZlbiBlcmEsIHNuYXBzaG90dGVkIGF0IGVyYSBlbmQuAFUBIFRoaXMgaXMgdGhlIHNpbWlsYXIgdG8gW2BFcmFzVmFsaWRhdG9yUmV3YXJkYF0gYnV0IGZvciB0aGUgc2VsZi1zdGFrZSBpbmNlbnRpdmUgcG90LgB8RXJhc1N1bVZhbGlkYXRvckluY2VudGl2ZVdlaWdodAEBBAU4VQFAAAAAAAAAAAAAAAAAAAAAAAzYIFN1bSBvZiBhbGwgdmFsaWRhdG9ycycgaW5jZW50aXZlIHdlaWdodHMgZm9yIHRoZSBlcmEuANQgRGlyZWN0bHkgbGlua2VkIHRvIFtgRXJhc1ZhbGlkYXRvckluY2VudGl2ZVdlaWdodGBdLgBwRXJhc1ZhbGlkYXRvckluY2VudGl2ZVdlaWdodAABCAUFhQxVAQQACLwgSW5kaXZpZHVhbCB2YWxpZGF0b3IgaW5jZW50aXZlIHdlaWdodCBwZXIgZXJhLi0BIEVhY2ggdmFsaWRhdG9yJ3Mgc2hhcmUgb2YgdGhlIGluY2VudGl2ZSBwb3QgPSBgdGhlaXJfd2VpZ2h0IC8gc3VtX3dlaWdodGAuAFhBcmVOb21pbmF0b3JzU2xhc2hhYmxlAQBZAQQBHKQgV2hldGhlciBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUgb3Igbm90LgBtASAtIFdoZW4gc2V0IHRvIGB0cnVlYCAoZGVmYXVsdCksIG5vbWluYXRvcnMgYXJlIHNsYXNoZWQgYWxvbmcgd2l0aCB2YWxpZGF0b3JzIGFuZCBtdXN0IHdhaXQpASAgIHRoZSBmdWxsIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSBiZWZvcmUgd2l0aGRyYXdpbmcgdW5ib25kZWQgZnVuZHMuFQEgLSBXaGVuIHNldCB0byBgZmFsc2VgLCBub21pbmF0b3JzIGFyZSBub3Qgc2xhc2hlZCwgYW5kIGNhbiB1bmJvbmQgaW4NASAgIFtgQ29uZmlnOjpOb21pbmF0b3JGYXN0VW5ib25kRHVyYXRpb25gXSBlcmFzIGluc3RlYWQgb2YgdGhlIGZ1bGxZASAgIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSAoc2VlIFtgU3Rha2luZ0ludGVyZmFjZTo6bm9taW5hdG9yX2JvbmRpbmdfZHVyYXRpb25gXSkuAFxFcmFzTm9taW5hdG9yc1NsYXNoYWJsZQABBAU4WQEEABzYIFBlci1lcmEgc25hcHNob3Qgb2Ygd2hldGhlciBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUuAGUBIFRoaXMgaXMgY29waWVkIGZyb20gW2BBcmVOb21pbmF0b3JzU2xhc2hhYmxlYF0gYXQgdGhlIHN0YXJ0IG9mIGVhY2ggZXJhLiBXaGVuIHByb2Nlc3NpbmdRASBvZmZlbmNlcywgd2UgdXNlIHRoZSB2YWx1ZSBmcm9tIHRoaXMgc3RvcmFnZSBmb3IgdGhlIG9mZmVuY2UgZXJhIHRvIGVuc3VyZSB0aGF0IHRoZTkBIHNsYXNoaW5nIHJ1bGVzIGF0IHRoZSB0aW1lIG9mIHRoZSBvZmZlbmNlIGFyZSBhcHBsaWVkLCBub3QgdGhlIGN1cnJlbnQgcnVsZXMuAGUBIElmIGFuIGVudHJ5IGRvZXMgbm90IGV4aXN0IGZvciBhbiBlcmEsIG5vbWluYXRvcnMgYXJlIGFzc3VtZWQgdG8gYmUgc2xhc2hhYmxlIChkZWZhdWx0KS4AGExlZGdlcgABBAIEBQ8EABBFASBNYXAgZnJvbSBhbGwgKHVubG9ja2VkKSAiY29udHJvbGxlciIgYWNjb3VudHMgdG8gdGhlIGluZm8gcmVnYXJkaW5nIHRoZSBzdGFraW5nLgB1ASBOb3RlOiBBbGwgdGhlIHJlYWRzIGFuZCBtdXRhdGlvbnMgdG8gdGhpcyBzdG9yYWdlICpNVVNUKiBiZSBkb25lIHRocm91Z2ggdGhlIG1ldGhvZHMgZXhwb3NlZOggYnkgW2BTdGFraW5nTGVkZ2VyYF0gdG8gZW5zdXJlIGRhdGEgYW5kIGxvY2sgY29uc2lzdGVuY3kuABRQYXllZQABBAUEvQYEAAzkIFdoZXJlIHRoZSByZXdhcmQgcGF5bWVudCBzaG91bGQgYmUgbWFkZS4gS2V5ZWQgYnkgc3Rhc2guANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAChWYWxpZGF0b3JzAQEEBQTBBggAAAxFASBUaGUgbWFwIGZyb20gKHdhbm5hYmUpIHZhbGlkYXRvciBzdGFzaCBrZXkgdG8gdGhlIHByZWZlcmVuY2VzIG9mIHRoYXQgdmFsaWRhdG9yLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgBQQ291bnRlckZvclZhbGlkYXRvcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcABITWF4VmFsaWRhdG9yc0NvdW50AAA4BAAMMQEgVGhlIG1heGltdW0gdmFsaWRhdG9yIGNvdW50IGJlZm9yZSB3ZSBzdG9wIGFsbG93aW5nIG5ldyB2YWxpZGF0b3JzIHRvIGpvaW4uANAgV2hlbiB0aGlzIHZhbHVlIGlzIG5vdCBzZXQsIG5vIGxpbWl0cyBhcmUgZW5mb3JjZWQuAEBMYXN0VmFsaWRhdG9yRXJhAAEEBQQ4BAAwZQEgVHJhY2tzIHRoZSBsYXN0IGVyYSBpbiB3aGljaCBhbiBhY2NvdW50IHdhcyBhY3RpdmUgYXMgYSB2YWxpZGF0b3IgKGluY2x1ZGVkIGluIHRoZSBlcmEnc1AgZXhwb3N1cmUvc25hcHNob3QpLgBZASBUaGlzIGlzIHVzZWQgdG8gZW5mb3JjZSB0aGF0IGFjY291bnRzIHdobyB3ZXJlIHJlY2VudGx5IHZhbGlkYXRvcnMgbXVzdCB3YWl0IHRoZSBmdWxsYQEgW2BDb25maWc6OkJvbmRpbmdEdXJhdGlvbmBdIGJlZm9yZSB0aGVpciBmdW5kcyBjYW4gYmUgd2l0aGRyYXduLCBldmVuIGlmIHRoZXkgc3dpdGNoIHRvvCBub21pbmF0b3Igcm9sZS4gVGhpcyBwcmV2ZW50cyB2YWxpZGF0b3JzIGZyb206rCAxLiBDb21taXR0aW5nIGEgc2xhc2hhYmxlIG9mZmVuY2UgaW4gZXJhIE58IDIuIFN3aXRjaGluZyB0byBub21pbmF0b3Igcm9sZWUBIDMuIFVzaW5nIHRoZSBzaG9ydGVyIG5vbWluYXRvciB1bmJvbmRpbmcgZHVyYXRpb24gdG8gd2l0aGRyYXcgZnVuZHMgYmVmb3JlIGJlaW5nIHNsYXNoZWQAWQEgVXBkYXRlZCB3aGVuIGVyYSBzbmFwc2hvdHMgYXJlIGNyZWF0ZWQgKGluIGBFcmFzU3Rha2Vyc1BhZ2VkYC9gRXJhc1N0YWtlcnNPdmVydmlld2ApLvggQ2xlYW5lZCB1cCB3aGVuIHRoZSBzdGFzaCBpcyBraWxsZWQgKGZ1bGx5IHdpdGhkcmF3bi9yZWFwZWQpLgAoTm9taW5hdG9ycwABBAUECQ8EAEx1ASBUaGUgbWFwIGZyb20gbm9taW5hdG9yIHN0YXNoIGtleSB0byB0aGVpciBub21pbmF0aW9uIHByZWZlcmVuY2VzLCBuYW1lbHkgdGhlIHZhbGlkYXRvcnMgdGhhdFggdGhleSB3aXNoIHRvIHN1cHBvcnQuADkBIE5vdGUgdGhhdCB0aGUga2V5cyBvZiB0aGlzIHN0b3JhZ2UgbWFwIG1pZ2h0IGJlY29tZSBub24tZGVjb2RhYmxlIGluIGNhc2UgdGhlLQEgYWNjb3VudCdzIFtgTm9taW5hdGlvbnNRdW90YTo6TWF4Tm9taW5hdGlvbnNgXSBjb25maWd1cmF0aW9uIGlzIGRlY3JlYXNlZC6QIEluIHRoaXMgcmFyZSBjYXNlLCB0aGVzZSBub21pbmF0b3JzZQEgYXJlIHN0aWxsIGV4aXN0ZW50IGluIHN0b3JhZ2UsIHRoZWlyIGtleSBpcyBjb3JyZWN0IGFuZCByZXRyaWV2YWJsZSAoaS5lLiBgY29udGFpbnNfa2V5YHEBIGluZGljYXRlcyB0aGF0IHRoZXkgZXhpc3QpLCBidXQgdGhlaXIgdmFsdWUgY2Fubm90IGJlIGRlY29kZWQuIFRoZXJlZm9yZSwgdGhlIG5vbi1kZWNvZGFibGVtASBub21pbmF0b3JzIHdpbGwgZWZmZWN0aXZlbHkgbm90LWV4aXN0LCB1bnRpbCB0aGV5IHJlLXN1Ym1pdCB0aGVpciBwcmVmZXJlbmNlcyBzdWNoIHRoYXQgaXQBASBpcyB3aXRoaW4gdGhlIGJvdW5kcyBvZiB0aGUgbmV3bHkgc2V0IGBDb25maWc6Ok1heE5vbWluYXRpb25zYC4AYQEgVGhpcyBpbXBsaWVzIHRoYXQgYDo6aXRlcl9rZXlzKCkuY291bnQoKWAgYW5kIGA6Oml0ZXIoKS5jb3VudCgpYCBtaWdodCByZXR1cm4gZGlmZmVyZW50bQEgdmFsdWVzIGZvciB0aGlzIG1hcC4gTW9yZW92ZXIsIHRoZSBtYWluIGA6OmNvdW50KClgIGlzIGFsaWduZWQgd2l0aCB0aGUgZm9ybWVyLCBuYW1lbHkgdGhlbCBudW1iZXIgb2Yga2V5cyB0aGF0IGV4aXN0LgBtASBMYXN0bHksIGlmIGFueSBvZiB0aGUgbm9taW5hdG9ycyBiZWNvbWUgbm9uLWRlY29kYWJsZSwgdGhleSBjYW4gYmUgY2hpbGxlZCBpbW1lZGlhdGVseSB2aWG4IFtgQ2FsbDo6Y2hpbGxfb3RoZXJgXSBkaXNwYXRjaGFibGUgYnkgYW55b25lLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgBQQ291bnRlckZvck5vbWluYXRvcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAA4VmlydHVhbFN0YWtlcnMAAQQFBBAEABjIIFN0YWtlcnMgd2hvc2UgZnVuZHMgYXJlIG1hbmFnZWQgYnkgb3RoZXIgcGFsbGV0cy4AdQEgVGhpcyBwYWxsZXQgZG9lcyBub3QgYXBwbHkgYW55IGxvY2tzIG9uIHRoZW0sIHRoZXJlZm9yZSB0aGV5IGFyZSBvbmx5IHZpcnR1YWxseSBib25kZWQuIFRoZXltASBhcmUgZXhwZWN0ZWQgdG8gYmUga2V5bGVzcyBhY2NvdW50cyBhbmQgaGVuY2Ugc2hvdWxkIG5vdCBiZSBhbGxvd2VkIHRvIG11dGF0ZSB0aGVpciBsZWRnZXJxASBkaXJlY3RseSB2aWEgdGhpcyBwYWxsZXQuIEluc3RlYWQsIHRoZXNlIGFjY291bnRzIGFyZSBtYW5hZ2VkIGJ5IG90aGVyIHBhbGxldHMgYW5kIGFjY2Vzc2VkKQEgdmlhIGxvdyBsZXZlbCBhcGlzLiBXZSBrZWVwIHRyYWNrIG9mIHRoZW0gdG8gZG8gbWluaW1hbCBpbnRlZ3JpdHkgY2hlY2tzLgBgQ291bnRlckZvclZpcnR1YWxTdGFrZXJzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAASE1heE5vbWluYXRvcnNDb3VudAAAOAQADDEBIFRoZSBtYXhpbXVtIG5vbWluYXRvciBjb3VudCBiZWZvcmUgd2Ugc3RvcCBhbGxvd2luZyBuZXcgdmFsaWRhdG9ycyB0byBqb2luLgDQIFdoZW4gdGhpcyB2YWx1ZSBpcyBub3Qgc2V0LCBubyBsaW1pdHMgYXJlIGVuZm9yY2VkLgAoQ3VycmVudEVyYQAAOAQAEHwgVGhlIGN1cnJlbnQgcGxhbm5lZCBlcmEgaW5kZXguAGUBIFRoaXMgaXMgdGhlIGxhdGVzdCBwbGFubmVkIGVyYSwgZGVwZW5kaW5nIG9uIGhvdyB0aGUgU2Vzc2lvbiBwYWxsZXQgcXVldWVzIHRoZSB2YWxpZGF0b3KAIHNldCwgaXQgbWlnaHQgYmUgYWN0aXZlIG9yIG5vdC4AJEFjdGl2ZUVyYQAADQ8EABDYIFRoZSBhY3RpdmUgZXJhIGluZm9ybWF0aW9uLCBpdCBob2xkcyBpbmRleCBhbmQgc3RhcnQuAFkBIFRoZSBhY3RpdmUgZXJhIGlzIHRoZSBlcmEgYmVpbmcgY3VycmVudGx5IHJld2FyZGVkLiBWYWxpZGF0b3Igc2V0IG9mIHRoaXMgZXJhIG11c3QgYmWYIGVxdWFsIHRvIHdoYXQgaXMgUkMncyBzZXNzaW9uIHBhbGxldC4AKEJvbmRlZEVyYXMBABEPBAAQJQEgQSBtYXBwaW5nIGZyb20gc3RpbGwtYm9uZGVkIGVyYXMgdG8gdGhlIGZpcnN0IHNlc3Npb24gaW5kZXggb2YgdGhhdCBlcmEuAMggTXVzdCBjb250YWlucyBpbmZvcm1hdGlvbiBmb3IgZXJhcyBmb3IgdGhlIHJhbmdlOrwgYFthY3RpdmVfZXJhIC0gYm91bmRpbmdfZHVyYXRpb247IGFjdGl2ZV9lcmFdYABMRXJhc1N0YWtlcnNPdmVydmlldwABCAUFhQwVDwQAMLggU3VtbWFyeSBvZiB2YWxpZGF0b3IgZXhwb3N1cmUgYXQgYSBnaXZlbiBlcmEuAHEBIFRoaXMgY29udGFpbnMgdGhlIHRvdGFsIHN0YWtlIGluIHN1cHBvcnQgb2YgdGhlIHZhbGlkYXRvciBhbmQgdGhlaXIgb3duIHN0YWtlLiBJbiBhZGRpdGlvbix1ASBpdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGdldCB0aGUgbnVtYmVyIG9mIG5vbWluYXRvcnMgYmFja2luZyB0aGlzIHZhbGlkYXRvciBhbmQgdGhlIG51bWJlciBvZmkBIGV4cG9zdXJlIHBhZ2VzIHRoZXkgYXJlIGRpdmlkZWQgaW50by4gVGhlIHBhZ2UgY291bnQgaXMgdXNlZnVsIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mrCBwYWdlcyBvZiByZXdhcmRzIHRoYXQgbmVlZHMgdG8gYmUgY2xhaW1lZC4AYQEgVGhpcyBpcyBrZXllZCBmaXJzdCBieSB0aGUgZXJhIGluZGV4IHRvIGFsbG93IGJ1bGsgZGVsZXRpb24gYW5kIHRoZW4gdGhlIHN0YXNoIGFjY291bnQuoCBTaG91bGQgb25seSBiZSBhY2Nlc3NlZCB0aHJvdWdoIGBFcmFzYC4AzCBJcyBpdCByZW1vdmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLkEBIElmIHN0YWtlcnMgaGFzbid0IGJlZW4gc2V0IG9yIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiBlbXB0eSBvdmVydmlldyBpcyByZXR1cm5lZC4AQEVyYXNTdGFrZXJzUGFnZWQAAQwFBQXxDhkPBAAYwCBQYWdpbmF0ZWQgZXhwb3N1cmUgb2YgYSB2YWxpZGF0b3IgYXQgZ2l2ZW4gZXJhLgBxASBUaGlzIGlzIGtleWVkIGZpcnN0IGJ5IHRoZSBlcmEgaW5kZXggdG8gYWxsb3cgYnVsayBkZWxldGlvbiwgdGhlbiBzdGFzaCBhY2NvdW50IGFuZCBmaW5hbGx5yCB0aGUgcGFnZS4gU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgdGhyb3VnaCBgRXJhc2AuANQgVGhpcyBpcyBjbGVhcmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLgA4Q2xhaW1lZFJld2FyZHMBAQgFBYUMKQ8EABjcIEhpc3Rvcnkgb2YgY2xhaW1lZCBwYWdlZCByZXdhcmRzIGJ5IGVyYSBhbmQgdmFsaWRhdG9yLgBpASBUaGlzIGlzIGtleWVkIGJ5IGVyYSBhbmQgdmFsaWRhdG9yIHN0YXNoIHdoaWNoIG1hcHMgdG8gdGhlIHNldCBvZiBwYWdlIGluZGV4ZXMgd2hpY2ggaGF2ZTggYmVlbiBjbGFpbWVkLgDMIEl0IGlzIHJlbW92ZWQgYWZ0ZXIgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuAEhFcmFzVmFsaWRhdG9yUHJlZnMBAQgFBYUMwQYIAAAUBQEgRXhwb3N1cmUgb2YgdmFsaWRhdG9yIGF0IGVyYSB3aXRoIHRoZSBwcmVmZXJlbmNlcyBvZiB2YWxpZGF0b3JzLgBhASBUaGlzIGlzIGtleWVkIGZpcnN0IGJ5IHRoZSBlcmEgaW5kZXggdG8gYWxsb3cgYnVsayBkZWxldGlvbiBhbmQgdGhlbiB0aGUgc3Rhc2ggYWNjb3VudC4AzCBJcyBpdCByZW1vdmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLgBMRXJhc1ZhbGlkYXRvclJld2FyZAABBAU4VQEEABQ1ASBUaGUgdG90YWwgc3Rha2VyIHJld2FyZCBidWRnZXQgZm9yIGVhY2ggZXJhIHdpdGhpbiBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0uAGQgU2V0IGF0IGVyYSBmaW5hbGl6YXRpb246WQEgLSBpbiBub24tbWludGluZyBtb2RlIHRoaXMgaXMgdGhlIHNuYXBzaG90IG9mIHRoZSBlcmEgcG90IGJhbGFuY2UgYmVmb3JlIGFueSBwYXlvdXRzLjEBIC0gaW4gbGVnYWN5IG1vZGUgaXQgY29tZXMgZnJvbSBgRXJhUGF5b3V0YCwgd2l0aCByZXdhcmRzIG1pbnRlZCBvbiB0aGUgZmx5LgBARXJhc1Jld2FyZFBvaW50cwEBBAU4LQ8UAAAAAAAI0CBSZXdhcmRzIGZvciB0aGUgbGFzdCBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4lASBJZiByZXdhcmQgaGFzbid0IGJlZW4gc2V0IG9yIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiAwIHJld2FyZCBpcyByZXR1cm5lZC4AOEVyYXNUb3RhbFN0YWtlAQEEBThVAUAAAAAAAAAAAAAAAAAAAAAACBEBIFRoZSB0b3RhbCBhbW91bnQgc3Rha2VkIGZvciB0aGUgbGFzdCBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4dASBJZiB0b3RhbCBoYXNuJ3QgYmVlbiBzZXQgb3IgaGFzIGJlZW4gcmVtb3ZlZCB0aGVuIDAgc3Rha2UgaXMgcmV0dXJuZWQuACBGb3JjZUVyYQEAhQkEAARUIE1vZGUgb2YgZXJhIGZvcmNpbmcuAEBNYXhTdGFrZWRSZXdhcmRzAADNBgQAEBkBIE1heGltdW0gc3Rha2VkIHJld2FyZHMsIGkuZS4gdGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIGVyYSBpbmZsYXRpb24gdGhhdGwgaXMgdXNlZCBmb3Igc3Rha2UgcmV3YXJkcy4A9CBPbmx5IHVzZWQgaW4gbGVnYWN5IG1pbnRpbmcgbW9kZSAoYERpc2FibGVNaW50aW5nID0gZmFsc2VgKS4ATFNsYXNoUmV3YXJkRnJhY3Rpb24BAB0FEAAAAAAM+CBUaGUgcGVyY2VudGFnZSBvZiB0aGUgc2xhc2ggdGhhdCBpcyBkaXN0cmlidXRlZCB0byByZXBvcnRlcnMuAOQgVGhlIHJlc3Qgb2YgdGhlIHNsYXNoZWQgdmFsdWUgaXMgaGFuZGxlZCBieSB0aGUgYFNsYXNoYC4ATENhbmNlbGVkU2xhc2hQYXlvdXQBAFUBQAAAAAAAAAAAAAAAAAAAAAAIFQEgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBnaXZlbiB0byByZXBvcnRlcnMgb2YgYSBzbGFzaCBldmVudCB3aGljaCB3YXPsIGNhbmNlbGVkIGJ5IGV4dHJhb3JkaW5hcnkgY2lyY3Vtc3RhbmNlcyAoZS5nLiBnb3Zlcm5hbmNlKS4AME9mZmVuY2VRdWV1ZQABCAUFhQw5DwQAKE0BIFN0b3JlcyByZXBvcnRlZCBvZmZlbmNlcyBpbiBhIHF1ZXVlIHVudGlsIHRoZXkgYXJlIHByb2Nlc3NlZCBpbiBzdWJzZXF1ZW50IGJsb2Nrcy4AZQEgRWFjaCBvZmZlbmNlIGlzIHJlY29yZGVkIHVuZGVyIHRoZSBjb3JyZXNwb25kaW5nIGVyYSBpbmRleCBhbmQgdGhlIG9mZmVuZGluZyB2YWxpZGF0b3Inc3EBIGFjY291bnQuIElmIGFuIG9mZmVuY2Ugc3BhbnMgbXVsdGlwbGUgcGFnZXMsIG9ubHkgb25lIHBhZ2UgaXMgcHJvY2Vzc2VkIGF0IGEgdGltZS4gT2ZmZW5jZXM9ASBhcmUgaGFuZGxlZCBzZXF1ZW50aWFsbHksIHdpdGggdGhlaXIgYXNzb2NpYXRlZCBzbGFzaGVzIGNvbXB1dGVkIGFuZCBzdG9yZWQgaW5RASBgVW5hcHBsaWVkU2xhc2hlc2AuIFRoZXNlIHNsYXNoZXMgYXJlIHRoZW4gYXBwbGllZCBpbiBhIGZ1dHVyZSBlcmEgYXMgZGV0ZXJtaW5lZCBieVggYFNsYXNoRGVmZXJEdXJhdGlvbmAuAFEBIEFueSBvZmZlbmNlcyB0aWVkIHRvIGFuIGVyYSBvbGRlciB0aGFuIGBCb25kaW5nRHVyYXRpb25gIGFyZSBhdXRvbWF0aWNhbGx5IGRyb3BwZWQu0CBQcm9jZXNzaW5nIGFsd2F5cyBwcmlvcml0aXplcyB0aGUgb2xkZXN0IGVyYSBmaXJzdC4AQE9mZmVuY2VRdWV1ZUVyYXMAAD0PBAAwdQEgVHJhY2tzIHRoZSBlcmFzIHRoYXQgY29udGFpbiBvZmZlbmNlcyBpbiBgT2ZmZW5jZVF1ZXVlYCwgc29ydGVkIGZyb20gKiplYXJsaWVzdCB0byBsYXRlc3QqKi4ATQEgLSBUaGlzIGVuc3VyZXMgZWZmaWNpZW50IHJldHJpZXZhbCBvZiB0aGUgb2xkZXN0IG9mZmVuY2Ugd2l0aG91dCBpdGVyYXRpbmcgdGhyb3VnaEAgYE9mZmVuY2VRdWV1ZWAuZQEgLSBXaGVuIGEgbmV3IG9mZmVuY2UgaXMgYWRkZWQgdG8gYE9mZmVuY2VRdWV1ZWAsIGl0cyBlcmEgaXMgKippbnNlcnRlZCBpbiBzb3J0ZWQgb3JkZXIqKmAgaWYgbm90IGFscmVhZHkgcHJlc2VudC5BASAtIFdoZW4gYWxsIG9mZmVuY2VzIGZvciBhbiBlcmEgYXJlIHByb2Nlc3NlZCwgaXQgaXMgKipyZW1vdmVkKiogZnJvbSB0aGlzIGxpc3QuFQEgLSBUaGUgbWF4aW11bSBsZW5ndGggb2YgdGhpcyB2ZWN0b3IgaXMgYm91bmRlZCBieSBgQm9uZGluZ0R1cmF0aW9uICt0ICAgT0ZGRU5DRV9RVUVVRV9FUkFTX0JPVU5EYC4AcQEgVGhpcyBlbGltaW5hdGVzIHRoZSBuZWVkIGZvciBleHBlbnNpdmUgaXRlcmF0aW9uIGFuZCBzb3J0aW5nIHdoZW4gZmV0Y2hpbmcgdGhlIG5leHQgb2ZmZW5jZTAgdG8gcHJvY2Vzcy4ARFByb2Nlc3NpbmdPZmZlbmNlAABBDwQAMB0BIFRyYWNrcyB0aGUgY3VycmVudGx5IHByb2Nlc3NlZCBvZmZlbmNlIHJlY29yZCBmcm9tIHRoZSBgT2ZmZW5jZVF1ZXVlYC4ATQEgLSBXaGVuIHByb2Nlc3Npbmcgb2ZmZW5jZXMsIGFuIG9mZmVuY2UgcmVjb3JkIGlzICoqcG9wcGVkKiogZnJvbSB0aGUgb2xkZXN0IGVyYSBpboggICBgT2ZmZW5jZVF1ZXVlYCBhbmQgc3RvcmVkIGhlcmUudQEgLSBUaGUgZnVuY3Rpb24gYHByb2Nlc3Nfb2ZmZW5jZWAgcmVhZHMgZnJvbSB0aGlzIHN0b3JhZ2UsIHByb2Nlc3Npbmcgb25lIHBhZ2Ugb2YgZXhwb3N1cmUgYXQoICAgYSB0aW1lLmUBIC0gQWZ0ZXIgcHJvY2Vzc2luZyBhIHBhZ2UsIHRoZSBgZXhwb3N1cmVfcGFnZWAgY291bnQgaXMgKipkZWNyZW1lbnRlZCoqIHVudGlsIGl0IHJlYWNoZXMgICAgemVyby4lASAtIE9uY2UgZnVsbHkgcHJvY2Vzc2VkLCB0aGUgb2ZmZW5jZSByZWNvcmQgaXMgcmVtb3ZlZCBmcm9tIHRoaXMgc3RvcmFnZS4AZQEgVGhpcyBlbnN1cmVzIHRoYXQgb2ZmZW5jZXMgYXJlIHByb2Nlc3NlZCBpbmNyZW1lbnRhbGx5LCBwcmV2ZW50aW5nIGV4Y2Vzc2l2ZSBjb21wdXRhdGlvbvwgaW4gYSBzaW5nbGUgYmxvY2sgd2hpbGUgbWFpbnRhaW5pbmcgY29ycmVjdCBzbGFzaGluZyBiZWhhdmlvci4AQFVuYXBwbGllZFNsYXNoZXMAAQgFBUUPSQ8EAATEIEFsbCB1bmFwcGxpZWQgc2xhc2hlcyB0aGF0IGFyZSBxdWV1ZWQgZm9yIGxhdGVyLgBAQ2FuY2VsbGVkU2xhc2hlcwEBBAU4UQ8EABRRASBDYW5jZWxsZWQgc2xhc2hlcyBieSBlcmEgYW5kIHZhbGlkYXRvciB3aXRoIG1heGltdW0gc2xhc2ggZnJhY3Rpb24gdG8gYmUgY2FuY2VsbGVkLgBFASBXaGVuIHNsYXNoZXMgYXJlIGNhbmNlbGxlZCBieSBnb3Zlcm5hbmNlLCB0aGlzIHN0b3JlcyB0aGUgZXJhIGFuZCB0aGUgdmFsaWRhdG9yc1UBIHdob3NlIHNsYXNoZXMgc2hvdWxkIGJlIGNhbmNlbGxlZCwgYWxvbmcgd2l0aCB0aGUgbWF4aW11bSBzbGFzaCBmcmFjdGlvbiB0aGF0IHNob3VsZIQgYmUgY2FuY2VsbGVkIGZvciBlYWNoIHZhbGlkYXRvci4ATFZhbGlkYXRvclNsYXNoSW5FcmEAAQgFBYUMVQ8EAAhFASBBbGwgc2xhc2hpbmcgZXZlbnRzIG9uIHZhbGlkYXRvcnMsIG1hcHBlZCBieSBlcmEgdG8gdGhlIGhpZ2hlc3Qgc2xhc2ggcHJvcG9ydGlvbnAgYW5kIHNsYXNoIHZhbHVlIG9mIHRoZSBlcmEuADhDaGlsbFRocmVzaG9sZAAAzQYEAAxRASBUaGUgdGhyZXNob2xkIGZvciB3aGVuIHVzZXJzIGNhbiBzdGFydCBjYWxsaW5nIGBjaGlsbF9vdGhlcmAgZm9yIG90aGVyIHZhbGlkYXRvcnMgL1kBIG5vbWluYXRvcnMuIFRoZSB0aHJlc2hvbGQgaXMgY29tcGFyZWQgdG8gdGhlIGFjdHVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycyAvIG5vbWluYXRvcnMpASAoYENvdW50Rm9yKmApIGluIHRoZSBzeXN0ZW0gY29tcGFyZWQgdG8gdGhlIGNvbmZpZ3VyZWQgbWF4IChgTWF4KkNvdW50YCkuAExWb3RlclNuYXBzaG90U3RhdHVzAQBZDwQCEIAgVm90ZXIgc25hcHNob3QgcHJvZ3Jlc3Mgc3RhdHVzLgBpASBJZiB0aGUgc3RhdHVzIGlzIGBPbmdvaW5nYCwgaXQga2VlcHMgYSBjdXJzb3Igb2YgdGhlIGxhc3Qgdm90ZXIgcmV0cmlldmVkIHRvIHByb2NlZWQgd2hlboQgY3JlYXRpbmcgdGhlIG5leHQgc25hcHNob3QgcGFnZS4AQE5leHRFbGVjdGlvblBhZ2UAADgEABgBASBLZWVwcyB0cmFjayBvZiBhbiBvbmdvaW5nIG11bHRpLXBhZ2UgZWxlY3Rpb24gc29sdXRpb24gcmVxdWVzdC4AZQEgSWYgYFNvbWUoXylgYCwgaXQgaXMgdGhlIG5leHQgcGFnZSB0aGF0IHdlIGludGVuZCB0byBlbGVjdC4gSWYgYE5vbmVgLCB3ZSBhcmUgbm90IGluIHRoZUggZWxlY3Rpb24gcHJvY2Vzcy4AOQEgVGhpcyBpcyBvbmx5IHNldCBpbiBtdWx0aS1ibG9jayBlbGVjdGlvbnMuIFNob3VsZCBhbHdheXMgYmUgYE5vbmVgIG90aGVyd2lzZS4AQEVsZWN0YWJsZVN0YXNoZXMBAF0PBAAEUQEgQSBib3VuZGVkIGxpc3Qgb2YgdGhlICJlbGVjdGFibGUiIHN0YXNoZXMgdGhhdCByZXN1bHRlZCBmcm9tIGEgc3VjY2Vzc2Z1bCBlbGVjdGlvbi4APEVyYVBydW5pbmdTdGF0ZQABBAU4YQ8EAARFASBUcmFja3MgdGhlIGN1cnJlbnQgc3RlcCBvZiBlcmEgcHJ1bmluZyBwcm9jZXNzIGZvciBlYWNoIGVyYSBiZWluZyBsYXppbHkgcHJ1bmVkLgABuQYAAYEJADAwSGlzdG9yeURlcHRoOBBUAAAANIwgTnVtYmVyIG9mIGVyYXMgdG8ga2VlcCBpbiBoaXN0b3J5LgDoIEZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBrZXB0IGZvciBlcmFzIGluIGBbY3VycmVudF9lcmEgLSkBIEhpc3RvcnlEZXB0aCwgY3VycmVudF9lcmFdYDogYEVyYXNWYWxpZGF0b3JQcmVmc2AsIGBFcmFzVmFsaWRhdG9yUmV3YXJkYCzgIGBFcmFzUmV3YXJkUG9pbnRzYCwgYEVyYXNUb3RhbFN0YWtlYCwgYENsYWltZWRSZXdhcmRzYCysIGBFcmFzU3Rha2Vyc1BhZ2VkYCwgYEVyYXNTdGFrZXJzT3ZlcnZpZXdgLgDkIE11c3QgYmUgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgZXJhcyBkZWxheWVkIGJ5IHNlc3Npb24u+CBJLmUuIGFjdGl2ZSBlcmEgbXVzdCBhbHdheXMgYmUgaW4gaGlzdG9yeS4gSS5lLiBgYWN0aXZlX2VyYSA+xCBjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGhgIG11c3QgYmUgZ3VhcmFudGVlZC4AEQEgSWYgbWlncmF0aW5nIGFuIGV4aXN0aW5nIHBhbGxldCBmcm9tIHN0b3JhZ2UgdmFsdWUgdG8gY29uZmlnIHZhbHVlLOwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIHNhbWUgdmFsdWUgb3IgZ3JlYXRlciBhcyBpbiBzdG9yYWdlLgA4U2Vzc2lvbnNQZXJFcmE4EAYAAAAELQEgTnVtYmVyIG9mIHNlc3Npb25zIHBlciBlcmEsIGFzIHBlciB0aGUgcHJlZmVyZW5jZXMgb2YgdGhlICoqcmVsYXkgY2hhaW4qKi4ARFBsYW5uaW5nRXJhT2Zmc2V0OBAGAAAAOFEBIE51bWJlciBvZiBzZXNzaW9ucyBiZWZvcmUgdGhlIGVuZCBvZiBhbiBlcmEgd2hlbiB0aGUgZWxlY3Rpb24gZm9yIHRoZSBuZXh0IGVyYSB3aWxsHCBzdGFydC4AXQEgLSBUaGlzIGRldGVybWluZXMgaG93IG1hbnkgc2Vzc2lvbnMgKipiZWZvcmUqKiB0aGUgbGFzdCBzZXNzaW9uIG9mIHRoZSBlcmEgdGhlIHN0YWtpbmeEICAgZWxlY3Rpb24gcHJvY2VzcyBzaG91bGQgYmVnaW4uTQEgLSBUaGUgdmFsdWUgaXMgYm91bmRlZCBiZXR3ZWVuICoqMSoqIChlbGVjdGlvbiBzdGFydHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGFzdF0BICAgc2Vzc2lvbikgYW5kIGBTZXNzaW9uc1BlckVyYWAgKGVsZWN0aW9uIHN0YXJ0cyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCBzZXNzaW9uPCAgIG9mIHRoZSBlcmEpLgA0ICMjIyBFeGFtcGxlOkkBIC0gSWYgYFNlc3Npb25zUGVyRXJhID0gNmAgYW5kIGBQbGFubmluZ0VyYU9mZnNldCA9IDFgLCB0aGUgZWxlY3Rpb24gc3RhcnRzIGF0IHRoZZAgICBiZWdpbm5pbmcgb2Ygc2Vzc2lvbiBgNiAtIDEgPSA1YC5dASAtIElmIGBQbGFubmluZ0VyYU9mZnNldCA9IDZgLCB0aGUgZWxlY3Rpb24gc3RhcnRzIGF0IHRoZSBiZWdpbm5pbmcgb2Ygc2Vzc2lvbiBgNiAtIDYgPeggICAwYCwgbWVhbmluZyBpdCBzdGFydHMgYXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSBlcmEuADxCb25kaW5nRHVyYXRpb244EBwAAAAU5CBOdW1iZXIgb2YgZXJhcyB0aGF0IHN0YWtlZCBmdW5kcyBtdXN0IHJlbWFpbiBib25kZWQgZm9yLgBNASBUaGlzIGlzIHRoZSBib25kaW5nIGR1cmF0aW9uIGZvciB2YWxpZGF0b3JzLiBOb21pbmF0b3JzIG1heSBoYXZlIGEgc2hvcnRlciBib25kaW5nAQEgZHVyYXRpb24gd2hlbiBbYEFyZU5vbWluYXRvcnNTbGFzaGFibGVgXSBpcyBzZXQgdG8gYGZhbHNlYCAoc2VlzCBbYFN0YWtpbmdJbnRlcmZhY2U6Om5vbWluYXRvcl9ib25kaW5nX2R1cmF0aW9uYF0pLgBsTm9taW5hdG9yRmFzdFVuYm9uZER1cmF0aW9uOBAcAAAAIC0BIE51bWJlciBvZiBlcmFzIG5vbWluYXRvcnMgbXVzdCB3YWl0IHRvIHVuYm9uZCB3aGVuIHRoZXkgYXJlIG5vdCBzbGFzaGFibGUuAEUBIFRoaXMgZHVyYXRpb24gaXMgdXNlZCBmb3Igbm9taW5hdG9ycyB3aGVuIFtgQXJlTm9taW5hdG9yc1NsYXNoYWJsZWBdIGlzIGBmYWxzZWAuXQEgV2hlbiBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUsIHRoZXkgdXNlIHRoZSBmdWxsIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSB0byBlbnN1cmXQIHNsYXNoZXMgY2FuIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSB1bmJvbmRpbmcgcGVyaW9kLgA9ASBTZXR0aW5nIHRoaXMgdG8gYSBsb3dlciB2YWx1ZSAoZS5nLiwgMSBlcmEpIGFsbG93cyBmb3IgZmFzdGVyIHdpdGhkcmF3YWxzIHdoZW60IG5vbWluYXRvcnMgYXJlIG5vdCBzdWJqZWN0IHRvIHNsYXNoaW5nIHJpc2suAEhTbGFzaERlZmVyRHVyYXRpb244EBsAAAAQAQEgTnVtYmVyIG9mIGVyYXMgdGhhdCBzbGFzaGVzIGFyZSBkZWZlcnJlZCBieSwgYWZ0ZXIgY29tcHV0YXRpb24uAA0BIFRoaXMgc2hvdWxkIGJlIGxlc3MgdGhhbiB0aGUgYm9uZGluZyBkdXJhdGlvbi4gU2V0IHRvIDAgaWYgc2xhc2hlcxUBIHNob3VsZCBiZSBhcHBsaWVkIGltbWVkaWF0ZWx5LCB3aXRob3V0IG9wcG9ydHVuaXR5IGZvciBpbnRlcnZlbnRpb24uADhEaXNhYmxlTWludGluZ1kBBAEoKQEgV2hlbiBgdHJ1ZWAsIHN0YWtpbmcgZG9lcyBub3QgbWludC4gSXQgZXhwZWN0cyBhbiBleHRlcm5hbCBzb3VyY2UgdG8gZnVuZBkBIHRoZSBnZW5lcmFsIHJld2FyZCBwb3QuIEF0IGVyYSBib3VuZGFyeSwgcmV3YXJkcyBhcmUgc25hcHNob3R0ZWQgZnJvbZAgdGhlIHBvdC4gYEVyYVBheW91dGAgaXMgbm90IGNhbGxlZC4AMQEgV2hlbiBgZmFsc2VgLCBzdGFraW5nIHVzZXMgdGhlIGxlZ2FjeSBwYXRoOiBgRXJhUGF5b3V0YCBjb21wdXRlcyBpbmZsYXRpb24ssCB0b2tlbnMgYXJlIG1pbnRlZCBvbi10aGUtZmx5IGR1cmluZyBwYXlvdXQuACEBICoqSXJyZXZlcnNpYmxlKio6IG9uY2Ugc2V0IHRvIGB0cnVlYCwgbXVzdCBuZXZlciBiZSBzd2l0Y2hlZCBiYWNrLiBFcmFzMQEgY3JlYXRlZCBpbiBub24tbWludGluZyBtb2RlIGhhdmUgZnVuZGVkIHJld2FyZCBwb3RzIOKAlCBzd2l0Y2hpbmcgdG8gbGVnYWN5yCB3b3VsZCBvcnBoYW4gdGhvc2UgcG90cyBhbmQgY2F1c2UgZG91YmxlLW1pbnRpbmcuAExNYXhFeHBvc3VyZVBhZ2VTaXplOBAAAgAALLAgVGhlIG1heGltdW0gc2l6ZSBvZiBlYWNoIGBUOjpFeHBvc3VyZVBhZ2VgLgApASBBbiBgRXhwb3N1cmVQYWdlYCBpcyB3ZWFrbHkgYm91bmRlZCB0byBhIG1heGltdW0gb2YgYE1heEV4cG9zdXJlUGFnZVNpemVgMCBub21pbmF0b3JzLgAhASBGb3Igb2xkZXIgbm9uLXBhZ2VkIGV4cG9zdXJlLCBhIHJld2FyZCBwYXlvdXQgd2FzIHJlc3RyaWN0ZWQgdG8gdGhlIHRvcCEBIGBNYXhFeHBvc3VyZVBhZ2VTaXplYCBub21pbmF0b3JzLiBUaGlzIGlzIHRvIGxpbWl0IHRoZSBpL28gY29zdCBmb3IgdGhlSCBub21pbmF0b3IgcGF5b3V0LgA9ASBOb3RlOiBgTWF4RXhwb3N1cmVQYWdlU2l6ZWAgaXMgdXNlZCB0byBib3VuZCBgQ2xhaW1lZFJld2FyZHNgIGFuZCBpcyB1bnNhZmUgdG+sIHJlZHVjZSB3aXRob3V0IGhhbmRsaW5nIGl0IGluIGEgbWlncmF0aW9uLgA8TWF4VmFsaWRhdG9yU2V0OBDoAwAAEBUBIFRoZSBhYnNvbHV0ZSBtYXhpbXVtIG9mIHdpbm5lciB2YWxpZGF0b3JzIHRoaXMgcGFsbGV0IHNob3VsZCByZXR1cm4uAEEBIEFzIHRoaXMgcGFsbGV0IHN1cHBvcnRzIG11bHRpLWJsb2NrIGVsZWN0aW9uLCB0aGUgc2V0IG9mIHdpbm5lciB2YWxpZGF0b3JzICpwZXKMIGVsZWN0aW9uKiBpcyBib3VuZGVkIGJ5IHRoaXMgdHlwZS4ASE1heFVubG9ja2luZ0NodW5rczgQIAAAACgFASBUaGUgbWF4aW11bSBudW1iZXIgb2YgYHVubG9ja2luZ2AgY2h1bmtzIGEgW2BTdGFraW5nTGVkZ2VyYF0gY2FuCQEgaGF2ZS4gRWZmZWN0aXZlbHkgZGV0ZXJtaW5lcyBob3cgbWFueSB1bmlxdWUgZXJhcyBhIHN0YWtlciBtYXkgYmU4IHVuYm9uZGluZyBpbi4A+CBOb3RlOiBgTWF4VW5sb2NraW5nQ2h1bmtzYCBpcyB1c2VkIGFzIHRoZSB1cHBlciBib3VuZCBmb3IgdGhlAQEgYEJvdW5kZWRWZWNgIGl0ZW0gYFN0YWtpbmdMZWRnZXIudW5sb2NraW5nYC4gU2V0dGluZyB0aGlzIHZhbHVlBQEgbG93ZXIgdGhhbiB0aGUgZXhpc3RpbmcgdmFsdWUgY2FuIGxlYWQgdG8gaW5jb25zaXN0ZW5jaWVzIGluIHRoZQkBIGBTdGFraW5nTGVkZ2VyYCBhbmQgd2lsbCBuZWVkIHRvIGJlIGhhbmRsZWQgcHJvcGVybHkgaW4gYSBydW50aW1lBQEgbWlncmF0aW9uLiBUaGUgdGVzdCBgcmVkdWNpbmdfbWF4X3VubG9ja2luZ19jaHVua3NfYWJydXB0YCBzaG93czQgdGhpcyBlZmZlY3QuADhNYXhFcmFEdXJhdGlvbiggAIq5BwAAAAAouCBNYXhpbXVtIGFsbG93ZWQgZXJhIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcy4AUQEgVGhpcyBwcm92aWRlcyBhIGRlZmVuc2l2ZSB1cHBlciBib3VuZCB0byBjYXAgdGhlIGVmZmVjdGl2ZSBlcmEgZHVyYXRpb24sIHByZXZlbnRpbmdhASBleGNlc3NpdmVseSBsb25nIGVyYXMgZnJvbSBjYXVzaW5nIHJ1bmF3YXkgaW5mbGF0aW9uIChlLmcuLCBkdWUgdG8gYnVncykuIElmIHRoZSBhY3R1YWwVASBlcmEgZHVyYXRpb24gZXhjZWVkcyB0aGlzIHZhbHVlLCBpdCB3aWxsIGJlIGNsYW1wZWQgdG8gdGhpcyBtYXhpbXVtLgABASBFeGFtcGxlOiBGb3IgYW4gaWRlYWwgZXJhIGR1cmF0aW9uIG9mIDI0IGhvdXJzICg4Niw0MDAsMDAwIG1zKSywIHRoaXMgY2FuIGJlIHNldCB0byA2MDQsODAwLDAwMCBtcyAoNyBkYXlzKS4A9CBPbmx5IHVzZWQgaW4gbGVnYWN5IG1pbnRpbmcgbW9kZSAoYERpc2FibGVNaW50aW5nID0gZmFsc2VgKS4APE1heFBydW5pbmdJdGVtczgQZAAAABQVASBNYXhpbXVtIG51bWJlciBvZiBzdG9yYWdlIGl0ZW1zIHRoYXQgY2FuIGJlIHBydW5lZCBpbiBhIHNpbmdsZSBjYWxsLgBZASBUaGlzIGNvbnRyb2xzIGhvdyBtYW55IHN0b3JhZ2UgaXRlbXMgY2FuIGJlIGRlbGV0ZWQgaW4gZWFjaCBjYWxsIHRvIGBwcnVuZV9lcmFfc3RlcGAuTQEgVGhpcyBzaG91bGQgYmUgc2V0IHRvIGEgY29uc2VydmF0aXZlIHZhbHVlIChlLmcuLCAxMDAtNTAwIGl0ZW1zKSB0byBlbnN1cmUgcHJ1bmluZ1UBIGRvZXNuJ3QgY29uc3VtZSB0b28gbXVjaCBibG9jayBzcGFjZS4gVGhlIGFjdHVhbCB3ZWlnaHQgaXMgZGV0ZXJtaW5lZCBieSBiZW5jaG1hcmtzLgABZQ8ABDxDdXJyZW5jeUJhbGFuY2VVAQhRASBKdXN0IHRoZSBgQ3VycmVuY3k6OkJhbGFuY2VgIHR5cGU7IHdlIGhhdmUgdGhpcyBpdGVtIHRvIGFsbG93IHVzIHRvIGNvbnN0cmFpbiBpdCB0bzQgYEZyb208dTY0PmAuDF8+SQf3FqyJtjR9Fezs7cpyM4a8T1TMqYl2XoRLnwxoLHBvdF9hY2NvdW50BAxwb3RpDwQEvCBSZXNvbHZlIHRoZSBhY2NvdW50IElEIGZvciBhIGdpdmVuIHJld2FyZCBwb3QuAF8+SQf3FqyJtjR9Fezs7covGyMER8lg8/hD+M+xpwbKLHBvdF9iYWxhbmNlBAxwb3RpD1UBBLAgQ3VycmVudCBiYWxhbmNlIGhlbGQgaW4gYSBnaXZlbiByZXdhcmQgcG90LgBfPkkH9xasibY0fRXs7O3KVuubFKa89l5XnV0Aswk7bFRlcmFfcmV3YXJkX2FsbG9jYXRpb24EDGVyYThxDwwlASBQZXItZXJhIHJld2FyZCBhbGxvY2F0aW9uIChzdGFrZXIgcmV3YXJkcyArIHZhbGlkYXRvciBpbmNlbnRpdmUgYnVkZ2V0KS4A+CBCb3RoIGZpZWxkcyBhcmUgemVybyBmb3IgZXJhcyBjcmVhdGVkIGluIGxlZ2FjeSBtaW50aW5nIG1vZGUuAFkAAERNZW1iZXJzU3Vic2NyaWJlcgFETWVtYmVyc1N1YnNjcmliZXIUJFJpbmdSb290cwABCAICdQ95DwQAELggUmVjZW50IHJpbmcgcm9vdHMgcmVjZWl2ZWQgZnJvbSB0aGUgbm90aWZpZXIuBQEgTWFwcyAoaWRlbnRpZmllciwgcmluZ19pbmRleCkgdG8gYSBzbGlkaW5nIHdpbmRvdyBvZiByaW5nIHJvb3RzLikBIFByb29mcyBidWlsdCBhZ2FpbnN0IGFueSByb290IGluIHRoZSB3aW5kb3cgYXJlIGFjY2VwdGVkLiBUaGUgb2xkZXN0IHJvb3TwIGlzIGV2aWN0ZWQgd2hlbiB0aGUgd2luZG93IHJlYWNoZXMgYE1heFJlY2VudFJvb3RzUGVyUmluZ2AuAFBSaW5nQ29sbGVjdGlvblN0YXRlcwEBBAIIhQ8oAAAAAAAAAAAAAARBASBTdGF0ZSBvZiBlYWNoIHJpbmcgY29sbGVjdGlvbiBpbmNsdWRpbmcgcmluZ3MgY291bnQgYW5kIG1pc3NpbmcgcmluZ3MgdHJhY2tpbmcuAFxSaW5nQ29sbGVjdGlvbkV4cG9uZW50cwABBAIICQcEABjkIFJpbmcgZXhwb25lbnQgcmVjb3JkZWQgcGVyIGNvbGxlY3Rpb24gYXQgaW5pdGlhbGl6YXRpb24uAEUBIFRoZSBzdWJzY3JpYmVyIG5lZWRzIHRoZSBleHBvbmVudCB0byBkZXJpdmUgdGhlIGNyeXB0bydzIGBDb25maWdgIHdoZW4gdmVyaWZ5aW5nSQEgcHJvb2ZzLCBzaW5jZSByaW5nIHJvb3RzIG9uIHRoZWlyIG93biBkbyBub3QgY2FycnkgdGhhdCBpbmZvcm1hdGlvbi4gVGhlIGVudHJ5IGlzRQEgd3JpdHRlbiBieSBgaW5pdGlhbGl6ZV9yaW5nX3Jvb3RzYCBhbmQgaXMgcmVhZCBkdXJpbmcgcHJvb2YgdmVyaWZpY2F0aW9uIHZpYSB0aGVkIGBNZW1iZXJzaGlwUHJvdmVyYCBpbXBsLgAwU3Vic2NyaXB0aW9uAQCZDwQABHQgQ3VycmVudCBzdWJzY3JpcHRpb24gc3RhdHVzLgA8UHJvY2Vzc2luZ1N0YXRlAQCdD2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEHQEgU3RhdGUgZm9yIHRyYWNraW5nIHVwZGF0ZXMgcHJvY2Vzc2luZyB0aW1lc3RhbXBzIGFuZCBzZXF1ZW5jZSBudW1iZXJzLgABBQcAAZEJADBEUmluZ1Jvb3RzTm90aWZpZXKhDxgBAQB5F0UIpCBFbmRwb2ludCBjb25maWd1cmF0aW9uIGZvciB0aGUgbm90aWZpZXIusCBJbmNsdWRlcyB0aGUgWENNIGxvY2F0aW9uIGFuZCBwYWxsZXQgaW5kZXguAChTZWxmUGFyYUlkOBDcBQAABCEBIFRoaXMgY2hhaW4ncyBwYXJhY2hhaW4gSUQsIGluY2x1ZGVkIGluIHJlcGxheSByZXF1ZXN0cyB0byB0aGUgbm90aWZpZXIuAHBNYXhNaXNzaW5nUm9vdHNQZXJDb2xsZWN0aW9uOBD/AAAABNQgTWF4aW11bSBudW1iZXIgb2YgbWlzc2luZyByaW5nIHJvb3RzIHBlciBjb2xsZWN0aW9uLgBwTWF4RGVsZXRlZFJpbmdzUGVyQ29sbGVjdGlvbjgQZAAAAAj8IE1heGltdW0gbnVtYmVyIG9mIGRlbGV0ZWQgcmluZyBpbmRpY2VzIHRyYWNrZWQgcGVyIGNvbGxlY3Rpb24uzCBQcmV2ZW50cyBmYWxzZWx5IG1hcmtpbmcgZGVsZXRlZCByaW5ncyBhcyBtaXNzaW5nLgBkTWF4UmluZ1Jvb3RzUGVyQ29sbGVjdGlvbjgQZAAAAAi0IE1heGltdW0gbnVtYmVyIG9mIHJpbmcgcm9vdHMgcGVyIGNvbGxlY3Rpb24u7CBVc2VkIHRvIGJvdW5kIGBjbGVhcmAgb3BlcmF0aW9ucyBkdXJpbmcgcmUtaW5pdGlhbGl6YXRpb24uADhNYXhDb2xsZWN0aW9uczgQCgAAAATgIE1heGltdW0gbnVtYmVyIG9mIHJpbmcgY29sbGVjdGlvbnMgdGhhdCBjYW4gYmUgdHJhY2tlZC4AVFJlcGxheUNvb2xkb3duU2Vjb25kcyggPAAAAAAAAAAIVQEgQ29vbGRvd24gcGVyaW9kIChpbiBzZWNvbmRzKSBhZnRlciByZWNlaXZpbmcgYSBiYXRjaCBiZWZvcmUgc2VuZGluZyByZXBsYXkgcmVxdWVzdHMu2CBBbGxvd3MgdGltZSBmb3IgbXVsdGktcGFydCBiYXRjaGVzIHRvIGFycml2ZSB2aWEgWENNLgBITWF4VXBkYXRlc1BlckJhdGNoOBAKAAAAFDUBIE1heGltdW0gbnVtYmVyIG9mIHJpbmcgcm9vdCB1cGRhdGVzIHRoYXQgY2FuIGJlIHByb2Nlc3NlZCBpbiBhIHNpbmdsZSBiYXRjaC4AKQEgKipJbXBvcnRhbnQ6KiogVGhpcyB2YWx1ZSBNVVNUIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbm90aWZpZXInc+wgYE1heFVwZGF0ZXNQZXJCYXRjaGAuIElmIHRoZSBub3RpZmllciBzZW5kcyBiYXRjaGVzIGxhcmdlch0BIHRoYW4gdGhpcyBsaW1pdCwgZGVjb2Rpbmcgd2lsbCBmYWlsIHNpbGVudGx5IGFuZCB1cGRhdGVzIHdpbGwgYmUgbG9zdC4AWFJlcGxheVdhcm5pbmdUaHJlc2hvbGQ4EAUAAAAEZQEgTnVtYmVyIG9mIHJlcGxheSByZXF1ZXN0IGF0dGVtcHRzIGZvciBhIGdpdmVuIHJpbmcgaW5kZXggYmVmb3JlIGVtaXR0aW5nIHdhcm5pbmcgZXZlbnRzLgBYUmVwbGF5QWJhbmRvblRocmVzaG9sZDgQCgAAAAgFASBUaHJlc2hvbGQgZm9yIGFiYW5kb25pbmcgcmVwbGF5IGF0dGVtcHRzIGZvciBhIGdpdmVuIHJpbmcgaW5kZXguGQEgQWZ0ZXIgdGhpcyBtYW55IGF0dGVtcHRzLCB0aGUgbWlzc2luZyBpbmRleCBpcyByZW1vdmVkIGZyb20gdHJhY2tpbmcuAFRNYXhSZWNlbnRSb290c1BlclJpbmc4EAMAAAAQJQEgTWF4aW11bSBudW1iZXIgb2YgcmVjZW50IHJpbmcgcm9vdHMgc3RvcmVkIHBlciAoY29sbGVjdGlvbiwgcmluZ19pbmRleCkuLQEgV2hlbiBhIHJpbmcgcm9vdCBpcyB1cGRhdGVkLCB0aGUgbmV3IHJvb3QgaXMgcHVzaGVkIGludG8gYSBzbGlkaW5nIHdpbmRvdzslASBwcm9vZnMgYnVpbHQgYWdhaW5zdCBhbnkgcm9vdCBpbiB0aGUgd2luZG93IHN0aWxsIHZlcmlmeS4gT2xkZXN0IHJvb3QgaXOEIGV2aWN0ZWQgd2hlbiB0aGUgd2luZG93IGlzIGZ1bGwuAFhPZmZjaGFpbldvcmtlckludGVydmFsOBABAAAABMwgQmxvY2sgaW50ZXJ2YWwgYmV0d2VlbiBvZmZjaGFpbiB3b3JrZXIgZXhlY3V0aW9ucy4AAaUPAAAAYQAANEFsaWFzQWNjb3VudHMBNEFsaWFzQWNjb3VudHMMOEFsaWFzVG9BY2NvdW50AAEIAgKpDwQEAAjAIE1hcHMgKGNvbGxlY3Rpb24sIGNvbnRleHR1YWxfYWxpYXMpIHRvIGFjY291bnQuUQEgVXNlcyBgRG91YmxlTWFwYCBiZWNhdXNlIHRoZSBzYW1lIGFsaWFzIHZhbHVlIGNvdWxkIGV4aXN0IGluIGRpZmZlcmVudCBjb2xsZWN0aW9ucy4AOEFjY291bnRUb0FsaWFzAAEEAgTtAwQABCUBIE1hcHMgYWNjb3VudCB0byBmdWxsIGFsaWFzIGluZm8gKGNvbGxlY3Rpb24gKyByZXZpc2VkIGNvbnRleHR1YWwgYWxpYXMpLgAgQWxpYXNGZWUAAFUBBAAQ7CBQR0FTIGZlZSBidXJuZWQgb24gZWFjaCBhbGlhcyByZWdpc3RyYXRpb24gLyBhY2NvdW50IHN3YXAuAA0BIFNldCBieSBbYENvbmZpZzo6RmVlTWFuYWdlck9yaWdpbmBdIHZpYSBbYFBhbGxldDo6c2V0X2FsaWFzX2ZlZWBdLhUBIFdoaWxlIHVuc2V0LCBhbGlhcyByZWdpc3RyYXRpb25zIGZhaWwgd2l0aCBbYEVycm9yOjpBbGlhc0ZlZVVuc2V0YF0uAAEpBwABlQkAGExQcm9vZlZhbGlkaXR5V2luZG93KCAsAQAAAAAAAAzoIFRpbWUgdG9sZXJhbmNlIChpbiBzZWNvbmRzKSBmb3IgcHJvb2YtYmFzZWQgdHJhbnNhY3Rpb25zLkkBIFByb29mcyBhcmUgdmFsaWQgZnJvbSBgcHJvb2ZfdmFsaWRfYXRgIHRvIGBwcm9vZl92YWxpZF9hdCArIFByb29mVmFsaWRpdHlXaW5kb3dgLmwgTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4ASENsZWFudXBHcmFjZVBlcmlvZCggEA4AAAAAAAAQKQEgR3JhY2UgcGVyaW9kIChpbiBzZWNvbmRzKSBiZWZvcmUgYSBzdGFsZSBhbGlhcyBtYXBwaW5nIGNhbiBiZSBjbGVhbmVkIHVwLhkBIEFmdGVyIGEgcmluZyByZXZpc2lvbiBjaGFuZ2VzLCBhbGlhcyBob2xkZXJzIGhhdmUgdGhpcyBsb25nIHRvIHVwZGF0ZS0BIHZpYSBgcmVwcm92ZV9hbGlhc19hY2NvdW50YCBiZWZvcmUgYW55b25lIGNhbiBjYWxsIGBjbGVhbl91cF9zdGFsZV9hbGlhc2AubCBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBYUGVvcGxlTGl0ZVJpbmdFeHBvbmVudAkHBAkEfCBSaW5nIGV4cG9uZW50IGZvciBQZW9wbGUgTGl0ZS4ASFBlb3BsZVJpbmdFeHBvbmVudAkHBAkEaCBSaW5nIGV4cG9uZW50IGZvciBQZW9wbGUuAGhQZW9wbGVDb2xsZWN0aW9uSWRlbnRpZmllcgiAcG9wOnBvbGthZG90Lm5ldHdvcmsvcGVvcGxlICAgICAAAHhQZW9wbGVMaXRlQ29sbGVjdGlvbklkZW50aWZpZXIIgHBvcDpwb2xrYWRvdC5uZXR3b3JrL3Blb3BsZS1saXRlAAABrQ8AAABiAAAQUGdhcwEQUGdhcwREQ2xhaW1lZEdhc0FsaWFzZXMAAQgGArEPEAQAEAkBIEFsaWFzZXMgdGhhdCBoYXZlIGJlZW4gdXNlZCB0byBjbGFpbSBQR0FTLCBrZXllZCBieSAoZGF5LCBhbGlhcykuQQEgYERheWAgdXNlcyBiaWctZW5kaWFuIGVuY29kaW5nIHdpdGggYElkZW50aXR5YCBoYXNoaW5nIHNvIGl0ZXJhdGlvbiB5aWVsZHMgZGF5czkBIGluIGFzY2VuZGluZyBvcmRlciwgYWxsb3dpbmcgdGhlIG9mZmNoYWluIHdvcmtlciB0byBmaW5kIHRoZSBvbGRlc3Qgc3RhbGUgZGF5SCB3aXRob3V0IHNjYW5uaW5nLgABMQcAAZkJABQsUGdhc0Fzc2V0SWQ4EACUNXcEgCBUaGUgYXNzZXQgSUQgb2YgdGhlIFBHQVMgdG9rZW4uADxQZ2FzQ2xhaW1BbW91bnRVAUAAdDukCwAAAAAAAAAAAAAABJQgVGhlIGFtb3VudCBvZiBQR0FTIG1pbnRlZCBwZXIgY2xhaW0uAGxNYXhDbGFpbXNQZXJQZXJpb2RQZXJQZXJzb244EGQAAAAEKQEgTWF4aW11bSBudW1iZXIgb2YgUEdBUyBjbGFpbXMgYSBmdWxsIHBlcnNvbiBtYXkgcGVyZm9ybSBwZXIgcGVyaW9kIChkYXkpLgB8TWF4Q2xhaW1zUGVyUGVyaW9kUGVyTGl0ZVBlcnNvbjgQKAAAABApASBNYXhpbXVtIG51bWJlciBvZiBQR0FTIGNsYWltcyBhIGxpdGUgcGVyc29uIG1heSBwZXJmb3JtIHBlciBwZXJpb2QgKGRheSkuAGEBIFR5cGljYWxseSBsb3dlciB0aGFuIFtgTWF4Q2xhaW1zUGVyUGVyaW9kUGVyUGVyc29uYF0oU2VsZjo6TWF4Q2xhaW1zUGVyUGVyaW9kUGVyUGVyc29uKS0BIHNpbmNlIGxpdGUgcGVyc29uaG9vZCBvZmZlcnMgd2Vha2VyIHN5YmlsIHJlc2lzdGFuY2UgdGhhbiBmdWxsIHBlcnNvbmhvb2QuAIBNYXhQZ2FzQ2xhaW1SZWNvcmRDbGVhbnVwUGVyQ2FsbDgQFAAAAAQ5ASBNYXhpbXVtIG51bWJlciBvZiBQR0FTIGNsYWltIHJlY29yZHMgdGhhdCBjYW4gYmUgY2xlYW5lZCB1cCBpbiBhIHNpbmdsZSBjYWxsLgABtQ8AAABjAAAYUmV2aXZlARhSZXZpdmU4MFByaXN0aW5lQ29kZQABBAY8GAQADMwgQSBtYXBwaW5nIGZyb20gYSBjb250cmFjdCdzIGNvZGUgaGFzaCB0byBpdHMgY29kZS4hASBUaGUgY29kZSdzIHNpemUgaXMgYm91bmRlZCBieSBbYGNyYXRlOjpsaW1pdHM6OkJMT0JfQllURVNgXSBmb3IgUFZNIGFuZPggW2ByZXZtOjpwcmltaXRpdmVzOjplaXAxNzA6Ok1BWF9DT0RFX1NJWkVgXSBmb3IgRVZNIGJ5dGVjb2RlLgAoQ29kZUluZm9PZgABBAY8uQ8EAATgIEEgbWFwcGluZyBmcm9tIGEgY29udHJhY3QncyBjb2RlIGhhc2ggdG8gaXRzIGNvZGUgaW5mby4ANEFjY291bnRJbmZvT2YAAQQGOQfBDwQABPwgVGhlIGRhdGEgYXNzb2NpYXRlZCB0byBhIGNvbnRyYWN0IG9yIGV4dGVybmFsbHkgb3duZWQgYWNjb3VudC4APE5hdGl2ZURlcG9zaXRPZgEBCAYGzQ9VAUAAAAAAAAAAAAAAAAAAAAAAKB0BIE5hdGl2ZSBjdXJyZW5jeSBzdG9yYWdlIGRlcG9zaXQgY29udHJpYnV0ZWQgYnkgYSB1c2VyIGludG8gYSBjb250cmFjdC4AMQEgQm91bmRzIGhvdyBtdWNoIG5hdGl2ZSB2YWx1ZSB0aGUgdXNlciBjYW4gcmVjZWl2ZSBiYWNrIGZyb20gdGhhdCBjb250cmFjdCdzRCBzdG9yYWdlIGRlcG9zaXQuAKAgS2V5czogYChob2xkZXIsIGNvbnRyaWJ1dG9yKSAtPiBhbW91bnRgaQEgLSBgaG9sZGVyYDogYWNjb3VudCBvbiB3aGljaCB0aGUgZGVwb3NpdCBpcyBoZWxkIChhIGNvbnRyYWN0LCBvciB0aGUgcGFsbGV0J3Mgb3duIGFjY291bnR0ICAgZm9yIGNvZGUtdXBsb2FkIGRlcG9zaXRzKS51ASAtIGBjb250cmlidXRvcmA6IHVzZXIgdGhhdCBmdW5kZWQgdGhlIGRlcG9zaXQuIFJlY2VpdmVzIHRoZSBuYXRpdmUgcG9ydGlvbiBvbiByZWZ1bmQsIGNhcHBlZHAgICBhdCB0aGlzIGVudHJ5J3MgYGFtb3VudGAuADxJbW11dGFibGVEYXRhT2YAAQQGOQfRDwQABNAgVGhlIGltbXV0YWJsZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFjY291bnQuADREZWxldGlvblF1ZXVlAAEEBTjVDwQAFLggVGVybWluYXRlZCBjb250cmFjdHMgdGhhdCBhd2FpdCBsYXp5IGNsZWFudXAuAEUBIEVhY2ggZW50cnkgcGFpcnMgYSBjaGlsZCB0cmllIElEIHdpdGggdGhlIGNvbnRyYWN0IGFjY291bnQgc28gdGhhdCBgb25faWRsZWAgY2FuWQEgZHJhaW4gYm90aCB0aGUgY2hpbGQgdHJpZSBhbmQgYW55IFtgTmF0aXZlRGVwb3NpdE9mYF0gZW50cmllcyB0aGF0IG5hbWVkIHRoZSBjb250cmFjdEUBIGFzIGBob2xkZXJgLiBCb3RoIGNhbiBiZSBhcmJpdHJhcmlseSBsYXJnZSwgc28gY2xlYW51cCBydW5zIGxhemlseSBpbiBgb25faWRsZWAuAFBEZWxldGlvblF1ZXVlQ291bnRlcgEA2Q8gAAAAAAAAAAAITQEgQSBwYWlyIG9mIG1vbm90b25pYyBjb3VudGVycyB1c2VkIHRvIHRyYWNrIHRoZSBsYXRlc3QgY29udHJhY3QgbWFya2VkIGZvciBkZWxldGlvbqggYW5kIHRoZSBsYXRlc3QgZGVsZXRlZCBjb250cmFjdCBpbiBxdWV1ZS4APE9yaWdpbmFsQWNjb3VudAABBAY5BwQEABjYIE1hcCBhIEV0aGVyZXVtIGFkZHJlc3MgdG8gaXRzIG9yaWdpbmFsIGBBY2NvdW50SWQzMmAuAEUBIFdoZW4gZGVyaXZpbmcgYSBgSDE2MGAgZnJvbSBhbiBgQWNjb3VudElkMzJgIHdlIHVzZSBhIGhhc2ggZnVuY3Rpb24uIEluIG9yZGVyIHRvMQEgcmVjb25zdHJ1Y3QgdGhlIG9yaWdpbmFsIGFjY291bnQgd2UgbmVlZCB0byBzdG9yZSB0aGUgcmV2ZXJzZSBtYXBwaW5nIGhlcmUuGQEgUmVnaXN0ZXIgeW91ciBgQWNjb3VudElkMzJgIHVzaW5nIFtgUGFsbGV0OjptYXBfYWNjb3VudGBdIGluIG9yZGVyIHRvZCB1c2UgaXQgd2l0aCB0aGlzIHBhbGxldC4ANEV0aGVyZXVtQmxvY2sBAN0PEQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQdASBUaGUgY3VycmVudCBFdGhlcmV1bSBibG9jayB0aGF0IGlzIHN0b3JlZCBpbiB0aGUgYG9uX2ZpbmFsaXplYCBtZXRob2QuABwgIyBOb3RlACkBIFRoaXMgY291bGQgYmUgZnVydGhlciBvcHRpbWl6ZWQgaW50byB0aGUgZnV0dXJlIHRvIHN0b3JlIG9ubHkgdGhlIG1pbmltdW0dASBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gcmVjb25zdHJ1Y3QgdGhlIEV0aGVyZXVtIGJsb2NrIGF0IHRoZSBSUEMgbGV2ZWwuAD0BIFNpbmNlIHRoZSBibG9jayBpcyBjb252ZW5pZW50IHRvIGhhdmUgYXJvdW5kLCBhbmQgdGhlIGV4dHJhIGRldGFpbHMgYXJlIGNhcHBlZD0BIGJ5IGEgZmV3IGhhc2hlcyBhbmQgdGhlIHZlY3RvciBvZiB0cmFuc2FjdGlvbiBoYXNoZXMsIHdlIHN0b3JlIHRoZSBibG9jayBoZXJlLgAkQmxvY2tIYXNoAQEEBjg8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJQgTWFwcGluZyBmb3IgYmxvY2sgbnVtYmVyIGFuZCBoYXNoZXMuAHEBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyBzdG9yZWQgaXMgY2FwcGVkIGJ5IHRoZSBibG9jayBoYXNoIGNvdW50IGBCTE9DS19IQVNIX0NPVU5UYC4APFJlY2VpcHRJbmZvRGF0YQEASRAEABj0IFRoZSBkZXRhaWxzIG5lZWRlZCB0byByZWNvbnN0cnVjdCB0aGUgcmVjZWlwdCBpbmZvIG9mZmNoYWluLgApASBUaGlzIGNvbnRhaW5zIHZhbHVhYmxlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBnYXMgdXNlZCBieSB0aGUgdHJhbnNhY3Rpb24uAB0BIE5PVEU6IFRoZSBpdGVtIGlzIHVuYm91bmQgYW5kIHNob3VsZCB0aGVyZWZvcmUgbmV2ZXIgYmUgcmVhZCBvbiBjaGFpbi7QIEl0IGNvdWxkIG90aGVyd2lzZSBpbmZsYXRlIHRoZSBQb1Ygc2l6ZSBvZiBhIGJsb2NrLgBERXRoQmxvY2tCdWlsZGVySVIBAFEQEQYAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABCl1OgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJAgSW5jcmVtZW50YWwgZXRoZXJldW0gYmxvY2sgYnVpbGRlci4AaEV0aEJsb2NrQnVpbGRlckZpcnN0VmFsdWVzAQBdEAQAEOQgVGhlIGZpcnN0IHRyYW5zYWN0aW9uIGFuZCByZWNlaXB0IG9mIHRoZSBldGhlcmV1bSBibG9jay4APQEgVGhlc2UgdmFsdWVzIGFyZSBtb3ZlZCBvdXQgb2YgdGhlIGBFdGhCbG9ja0J1aWxkZXJJUmAgdG8gYXZvaWQgc2VyaWFsaXppbmcgYW5kPQEgZGVzZXJpYWxpemluZyB0aGVtIG9uIGV2ZXJ5IHRyYW5zYWN0aW9uLiBJbnN0ZWFkLCB0aGV5IGFyZSBsb2FkZWQgd2hlbiBuZWVkZWQuADxEZWJ1Z1NldHRpbmdzT2YBAGEQEAAAAAAEMQEgRGVidWdnaW5nIHNldHRpbmdzIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgd2hlbiBEZWJ1Z0VuYWJsZWQgY29uZmlnIGlzIHRydWUuAAE1BwABnQkALDhEZXBvc2l0UGVyQnl0ZVUBQKCGAQAAAAAAAAAAAAAAAAAUEQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggYnl0ZSBvZiBzdG9yYWdlLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuADhEZXBvc2l0UGVySXRlbVUBQACUNXcAAAAAAAAAAAAAAAAUBQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggc3RvcmFnZSBpdGVtLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuAFxEZXBvc2l0UGVyQ2hpbGRUcmllSXRlbVUBQADC6wsAAAAAAAAAAAAAAAAkMQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggY2hpbGQgdHJpZSBzdG9yYWdlIGl0ZW0uADkBIFRob3NlIGFyZSB0aGUgaXRlbXMgY3JlYXRlZCBieSBhIGNvbnRyYWN0LiBJbiBTb2xpZGl0eSBlYWNoIHZhbHVlIGlzIGEgc2luZ2xlOQEgc3RvcmFnZSBpdGVtLiBUaGlzIGlzIHdoeSB3ZSBuZWVkIHRvIHNldCBhIGxvd2VyIHZhbHVlIGhlcmUgdGhhbiBmb3IgdGhlIG1haW7cIHRyaWUgaXRlbXMuIE90aGVyd2lzZSB0aGUgc3RvcmFnZSBkZXBvc2l0IGlzIHRvbyBoaWdoLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuAHBDb2RlSGFzaExvY2t1cERlcG9zaXRQZXJjZW50HQUQAKPhEQxFASBUaGUgcGVyY2VudGFnZSBvZiB0aGUgc3RvcmFnZSBkZXBvc2l0IHRoYXQgc2hvdWxkIGJlIGhlbGQgZm9yIHVzaW5nIGEgY29kZSBoYXNoLlEBIEluc3RhbnRpYXRpbmcgYSBjb250cmFjdCwgcHJvdGVjdHMgdGhlIGNvZGUgZnJvbSBiZWluZyByZW1vdmVkLiBJbiBvcmRlciB0byBwcmV2ZW50JQEgYWJ1c2UgdGhlc2UgYWN0aW9ucyBhcmUgcHJvdGVjdGVkIHdpdGggYSBwZXJjZW50YWdlIG9mIHRoZSBjb2RlIGRlcG9zaXQuAEBBbGxvd0VWTUJ5dGVjb2RlWQEEAQTQIEFsbG93IEVWTSBieXRlY29kZSB0byBiZSB1cGxvYWRlZCBhbmQgaW5zdGFudGlhdGVkLgAcQ2hhaW5JZCggQRsPGQAAAAAQAQEgVGhlIFtFSVAtMTU1XShodHRwczovL2VpcHMuZXRoZXJldW0ub3JnL0VJUFMvZWlwLTE1NSkgY2hhaW4gSUQuAAUBIFRoaXMgaXMgYSB1bmlxdWUgaWRlbnRpZmllciBhc3NpZ25lZCB0byBlYWNoIGJsb2NrY2hhaW4gbmV0d29yayxsIHByZXZlbnRpbmcgcmVwbGF5IGF0dGFja3MuAEBOYXRpdmVUb0V0aFJhdGlvOBAA4fUFBFEBIFRoZSByYXRpbyBiZXR3ZWVuIHRoZSBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBuYXRpdmUgdG9rZW4gYW5kIHRoZSBFVEggdG9rZW4uAFRNYXhFdGhFeHRyaW5zaWNXZWlnaHQNBUAAANpJO3F9DAAAAAAAAAAAME0BIFRoZSBmcmFjdGlvbiB0aGUgbWF4aW11bSBleHRyaW5zaWMgd2VpZ2h0IGBldGhfdHJhbnNhY3RgIGV4dHJpbnNpY3MgYXJlIGNhcHBlZCB0by4AUQEgVGhpcyBpcyBub3QgYSBzZWN1cml0eSBtZWFzdXJlIGJ1dCBhIHJlcXVpcmVtZW50IGR1ZSB0byBob3cgd2UgbWFwIGdhcyB0byBgKFdlaWdodCxdASBTdG9yYWdlRGVwb3NpdClgLiBUaGUgbWFwcGluZyBtaWdodCBkZXJpdmUgYSBgV2VpZ2h0YCB0aGF0IGlzIHRvbyBsYXJnZSB0byBmaXQgaW50byBhbvwgZXh0cmluc2ljLiBJbiB0aGlzIGNhc2Ugd2UgY2FwIGl0IHRvIHRoZSBsaW1pdCBzcGVjaWZpZWQgaGVyZS4AZQEgYGV0aF90cmFuc2FjdGAgdHJhbnNhY3Rpb25zIHRoYXQgdXNlIG1vcmUgd2VpZ2h0IHRoYW4gc3BlY2lmaWVkIHdpbGwgZmFpbCB3aXRoIGFuIG91dCBvZkkBIGdhcyBlcnJvciBkdXJpbmcgZXhlY3V0aW9uLiBMYXJnZXIgZnJhY3Rpb25zIHdpbGwgYWxsb3cgbW9yZSB0cmFuc2FjdGlvbnMgdG8gcnVuLk0BIFNtYWxsZXIgdmFsdWVzIHdhc3RlIGxlc3MgYmxvY2sgc3BhY2U6IENob29zZSBhcyBzbWFsbCBhcyBwb3NzaWJsZSBhbmQgYXMgbGFyZ2UgYXMsIG5lY2Vzc2FyeS4ARCAgRGVmYXVsdDogYDAuNWAuADBEZWJ1Z0VuYWJsZWRZAQQABC0BIEFsbG93cyBkZWJ1Zy1tb2RlIGNvbmZpZ3VyYXRpb24sIHN1Y2ggYXMgZW5hYmxpbmcgdW5saW1pdGVkIGNvbnRyYWN0IHNpemUuABxBdXRvTWFwWQEEARgxASBXaGVuIGVuYWJsZWQsIGFjY291bnRzIGFyZSBhdXRvbWF0aWNhbGx5IG1hcHBlZCBvbiBjcmVhdGlvbiBhbmQgdW5tYXBwZWQgb25FASBraWxsIHZpYSBbYEF1dG9NYXBwZXJgXS4gVGhpcyByZW1vdmVzIHRoZSBuZWVkIGZvciBleHBsaWNpdCBgbWFwX2FjY291bnRgIGNhbGxzLgA5ASBSZXF1aXJlcyBgZnJhbWVfc3lzdGVtOjpDb25maWc6Ok9uTmV3QWNjb3VudGAgYW5kIGBPbktpbGxlZEFjY291bnRgIHRvIGJlIHNldB0BIHRvIFtgQXV0b01hcHBlcmBdLiBXaGVuIGVuYWJsZWQsIHRoZSBgbWFwX2FjY291bnRgIGFuZCBgdW5tYXBfYWNjb3VudGBwIGRpc3BhdGNoYWJsZXMgYXJlIGRpc2FibGVkLgAgR2FzU2NhbGU4EKCGAQBEHQEgVGhpcyBkZXRlcm1pbmVzIHRoZSByZWxhdGl2ZSBzY2FsZSBvZiBvdXIgZ2FzIHByaWNlIGFuZCBnYXMgZXN0aW1hdGVzLgBVASBCeSBkZWZhdWx0LCB0aGUgZ2FzIHByaWNlIChpbiB3ZWkpIGlzIGBGZWVJbmZvOjpuZXh0X2ZlZV9tdWx0aXBsaWVyKClgIG11bHRpcGxpZWQgYnldASBgTmF0aXZlVG9FdGhSYXRpb2AuIGBHYXNTY2FsZWAgYWxsb3dzIHRvIHNjYWxlIHRoaXMgdmFsdWU6IHRoZSBhY3R1YWwgZ2FzIHByaWNlIGlzIHRoZbAgZGVmYXVsdCBnYXMgcHJpY2UgbXVsdGlwbGllZCBieSBgR2FzU2NhbGVgLgBZASBBcyBhIGNvbnNlcXVlbmNlLCBnYXMgY29zdCAoZ2FzIGVzdGltYXRlcyBhbmQgYWN0dWFsIGdhcyB1c2FnZSBkdXJpbmcgdHJhbnNhY3Rpb24pIGlzUQEgc2NhbGVkIGRvd24gYnkgdGhlIHNhbWUgZmFjdG9yLiBUaHVzLCB0aGUgdG90YWwgdHJhbnNhY3Rpb24gY29zdCBpcyBub3QgYWZmZWN0ZWQgYnltASBgR2FzU2NhbGVgIOKAk8KgYXBhcnQgZnJvbSByb3VuZGluZyBkaWZmZXJlbmNlczogdGhlIHRyYW5zYWN0aW9uIGNvc3QgaXMgYWx3YXlzIGEgbXVsdGlwbGVhASBvZiB0aGUgZ2FzIHByaWNlIGFuZCBpcyBkZXJpdmVkIGJ5IHJvdW5kZWQgdXAsIHNvIHRoYXQgd2l0aCBoaWdoZXIgYEdhc1NjYWxlc2AgdGhpcyBjYW4RASBsZWFkIHRvIGhpZ2hlciBnYXMgY29zdCBhcyB0aGUgcm91bmRpbmcgZGlmZmVyZW5jZSB3b3VsZCBiZSBsYXJnZXIuAGUBIFRoZSBtYWluIHB1cnBvc2Ugb2YgY2hhbmdpbmcgdGhlIGBHYXNTY2FsZWAgaXMgdG8gdHVuZSB0aGUgZ2FzIGNvc3Qgc28gdGhhdCBpdCBpcyBjbG9zZXJJASB0byBzdGFuZGFyZCBFVk0gZ2FzIGNvc3QgYW5kIGNvbnRyYWN0cyB3aWxsIG5vdCBydW4gb3V0IG9mIGdhcyB3aGVuIHRvb2xzIG9yIGNvZGV4IGFzc3VtZSBoYXJkIGNvZGVkIGdhcyBsaW1pdHMuAJggUmVxdWlyZW1lbnQ6IGBHYXNTY2FsZWAgbXVzdCBub3QgYmUgMAABZRAABCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLgBkAAAwRG90bnNHYXRld2F5ATBEb3Ruc0dhdGV3YXkUREFsaWFzUmVnaXN0cmF0aW9uAAEEAghpEAQABPQgVHJhY2tzIHdoaWNoIGFsaWFzZXMgaGF2ZSByZWdpc3RlcmVkIG5hbWVzIHZpYSB0aGlzIGdhdGV3YXkuADBBY2NvdW50QWxpYXMAAQQCBAgEAAwBASBSZXZlcnNlIGxvb2t1cCBmcm9tIGEgcmVnaXN0ZXJpbmcgYWNjb3VudCB0byB0aGUgYWxpYXMgaXQgdXNlZC4AIQEgUG9wdWxhdGVkIGFsb25nc2lkZSBbYEFsaWFzUmVnaXN0cmF0aW9uYF0gaW4gW2BQYWxsZXQ6OnJlZ2lzdGVyX25hbWVgXS4AUEF0dGVzdGF0aW9uQWxsb3dhbmNlAQEEAgQ4EAAAAAAEBQEgTnVtYmVyIG9mIHVzZXJuYW1lIHJlc2VydmF0aW9ucyBhbiBhdHRlc3RlciBpcyBhbGxvd2VkIHRvIGdyYW50LgA4TGl0ZUxhYmVsT3duZXIAAQQCTQcEBAAM/CBSZWNvcmRzIHdoaWNoIGFjY291bnQgb3ducyBlYWNoIHJlc2VydmVkIGxpdGUtcGVyc29uIGxhYmVsLCBzbyEBIFtgUGFsbGV0OjpyZWdpc3Rlcl9uYW1lYF0gY2FuIHZlcmlmeSB0aGF0IGEgYExpbms6OkxpdGVVc2VybmFtZWAgdGFyZ2V0XCBiZWxvbmdzIHRvIHRoZSBjYWxsZXIuAEREaXNwYXRjaGVyQWRkcmVzcwAAOQcEAAw1ASBBZGRyZXNzIG9mIHRoZSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYCBjb250cmFjdC4gTXVzdCBiZSBzZXQgKHZpYSBnZW5lc2lzIG9yHQEgW2BQYWxsZXQ6OnNldF9kaXNwYXRjaGVyX2FkZHJlc3NgXSkgYmVmb3JlIFtgUGFsbGV0OjpyZXNlcnZlX25hbWVgXSBvcpwgW2BQYWxsZXQ6OnJlZ2lzdGVyX25hbWVgXSBjYW4gc3VjY2VlZC4AAUkHAAGhCQAMVE1heENvbnRyYWN0Q2FsbFdlaWdodBEBKAcA6HZIFwIAgAAMMQEgTWF4aW11bSB3ZWlnaHQgYnVkZ2V0IGZvciBhIHNpbmdsZSBjb250cmFjdCBjYWxsLiBUaGUgZXh0cmluc2ljIHByZS1jaGFyZ2VzMQEgcGFsbGV0IG92ZXJoZWFkICsgdGhpcyBidWRnZXQgYW5kIHJlZnVuZHMgdW51c2VkIHdlaWdodCBiYXNlZCBvbiB0aGUgYWN0dWFsoCB3ZWlnaHQgcmVwb3J0ZWQgYnkgdGhlIGNvbnRyYWN0IGNhbGxlci4ASE1heFZhbGlkaXR5U2Vjb25kcygggPQDAAAAAAAInCBTaWduYXR1cmUgdmFsaWRpdHkgd2luZG93LCBpbiBzZWNvbmRzLiUBIEEgc2lnbmF0dXJlIGlzIGFjY2VwdGVkIG9ubHkgaWYgYG5vdyA8PSBzaWduZWRfYXQgKyBNYXhWYWxpZGl0eVNlY29uZHNgLgBQTWF4RnV0dXJlU2tld1NlY29uZHMoIB4AAAAAAAAACMggQ2xvY2stc2tldyB0b2xlcmFuY2UgZm9yIGBzaWduZWRfYXRgLCBpbiBzZWNvbmRzLi0BIEEgc2lnbmF0dXJlIGlzIGFjY2VwdGVkIG9ubHkgaWYgYHNpZ25lZF9hdCA8PSBub3cgKyBNYXhGdXR1cmVTa2V3U2Vjb25kc2AuAAFxEAAEUEF0dGVzdGF0aW9uU2lnbmF0dXJloQQEDQEgU2lnbmF0dXJlIHR5cGUgdXNlZCBieSBjYW5kaWRhdGVzIHRvIGNvbnNlbnQgdG8gbmFtZSByZXNlcnZhdGlvbnMuAJgAAERPcmlnaW5SZXN0cmljdGlvbgFET3JpZ2luUmVzdHJpY3Rpb24EGFVzYWdlcwABBAJhB3kQBAAEjCBUaGUgY3VycmVudCB1c2FnZSBmb3IgZWFjaCBlbnRpdHkuAAFdBwABpQkAAAF9EAAEQFJlc3RyaWN0ZWRFbnRpdHlhByRRASBUaGUgdHlwZSB0aGF0IHJlcHJlc2VudCB0aGUgZW50aXRpZXMgdHJhY2tlZCwgaXRzIGFsbG93YW5jZSBhbmQgdGhlIGNvbnZlcnNpb24gZnJvbZggb3JpZ2luIGlzIGJvdW5kZWQgaW4gW2BSZXN0cmljdGlvbmBdLgAdASBUaGlzIGlzIHRoZSBjYW5vbmljYWwgb3JpZ2luIGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdXNhZ2UgdHJhY2tpbmcujCBFYWNoIGVudGl0eSBpcyB0cmFja2VkIHNlcGFyYXRlbHkuAEkBIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gb3JpZ2luIGFzIGEgbXVsdGlwbGUgb3JpZ2luIGNhbiByZXByZXNlbnQgYSBzaW5nbGUgZW50aXR5LmEBIEZvciBleGFtcGxlLCBpbWFnaW5lIGEgREFPIG9yaWdpbiB3aXRoIGEgcGVyY2VudGFnZSBvZiB2b3RlcnMsIHdlIHdhbnQgdG8gdHJhY2sgdGhlIERBT6wgZW50aXR5IHJlZ2FyZGxlc3Mgb2YgdGhlIHZvdGVyIHBlcmNlbnRhZ2UuAJkAABBTdWRvARBTdWRvBAxLZXkAAAQEAASEIFRoZSBgQWNjb3VudElkYCBvZiB0aGUgc3VkbyBrZXkuAAFlBwABqQkAAAGBEAAELFJ1bnRpbWVDYWxsIARIIEEgc3Vkby1hYmxlIGNhbGwuAPsAADRQZ2FzQWxsb3dhbmNlAAABrQkAAAAAAPwAAAgEBQAgoQQEAEQABAgMEBQYHCAkKCwwNDg8QERYQXV0aG9yaXplVmFsdWVUcmFuc2ZlcmkHEDRBdXRob3JpemVDYWxscQcQGEFzUGdhc3UHECxBc1JpbmdBbGlhc4EHEDhBc0RvdG5zR2F0ZXdheY0HEDxSZXN0cmljdE9yaWdpbnOZBxBIQ2hlY2tOb25aZXJvU2VuZGVynQcQQENoZWNrU3BlY1ZlcnNpb26hBzg4Q2hlY2tUeFZlcnNpb26lBzgwQ2hlY2tHZW5lc2lzqQc8OENoZWNrTW9ydGFsaXR5rQc8KENoZWNrTm9uY2W1BxAsQ2hlY2tXZWlnaHS5BxBQQ2hhcmdlQXNzZXRUeFBheW1lbnS9BxBEQ2hlY2tNZXRhZGF0YUhhc2jBBz0HMEV0aFNldE9yaWdpbskHEFBTdG9yYWdlV2VpZ2h0UmVjbGFpbRAQbBxBdXJhQXBpCDRzbG90X2R1cmF0aW9uAIUQDJAgUmV0dXJucyB0aGUgc2xvdCBkdXJhdGlvbiBmb3IgQXVyYS4AJQEgQ3VycmVudGx5LCBvbmx5IHRoZSB2YWx1ZSBwcm92aWRlZCBieSB0aGlzIHR5cGUgYXQgZ2VuZXNpcyB3aWxsIGJlIHVzZWQuACxhdXRob3JpdGllcwB1CwScIFJldHVybiB0aGUgY3VycmVudCBzZXQgb2YgYXV0aG9yaXRpZXMuAAS4IEFQSSBuZWNlc3NhcnkgZm9yIGJsb2NrIGF1dGhvcnNoaXAgd2l0aCBhdXJhLgQAUFJlbGF5UGFyZW50T2Zmc2V0QXBpBExyZWxheV9wYXJlbnRfb2Zmc2V0ADgE9CBGZXRjaCB0aGUgc2xvdCBvZmZzZXQgdGhhdCBpcyBleHBlY3RlZCBmcm9tIHRoZSByZWxheSBjaGFpbi4AEAUBIEFQSSB0byB0ZWxsIHRoZSBub2RlIHNpZGUgaG93IHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIGJlIGNob3Nlbi4AaQEgQSBsYXJnZXIgb2Zmc2V0IGluZGljYXRlcyB0aGF0IHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIG5vdCBiZSB0aGUgdGlwIG9mIHRoZSByZWxheSBjaGFpbiwxASBidXQgYE5gIGJsb2NrcyBiZWhpbmQgdGhlIHRpcC4gVGhpcyBvZmZzZXQgaXMgdGhlbiBlbmZvcmNlZCBieSB0aGUgcnVudGltZS4EAGBBdXJhVW5pbmNsdWRlZFNlZ21lbnRBcGkEOGNhbl9idWlsZF91cG9uCDRpbmNsdWRlZF9oYXNoPBBzbG90eQtZASg5ASBXaGV0aGVyIGl0IGlzIGxlZ2FsIHRvIGV4dGVuZCB0aGUgY2hhaW4sIGFzc3VtaW5nIHRoZSBnaXZlbiBibG9jayBpcyB0aGUgbW9zdDUBIHJlY2VudGx5IGluY2x1ZGVkIG9uZSBhcy1vZiB0aGUgcmVsYXkgcGFyZW50IHRoYXQgd2lsbCBiZSBidWlsdCBhZ2FpbnN0LCBhbmRwIHRoZSBnaXZlbiByZWxheSBjaGFpbiBzbG90LgBRASBUaGlzIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggdGhlIGxvZ2ljIHRoZSBydW50aW1lIHVzZXMgd2hlbiB2YWxpZGF0aW5nIGJsb2NrcyB0bzggYXZvaWQgaXNzdWVzLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgZW1wdHksIGkuZS4gYGluY2x1ZGVkX2hhc2ggPT0gYXRgLCB3aGVyZSBhdCBpcyB0aGUgYmxvY2thASB3aG9zZSBzdGF0ZSB3ZSBhcmUgcXVlcnlpbmcgYWdhaW5zdCwgdGhpcyBtdXN0IGFsd2F5cyByZXR1cm4gYHRydWVgIGFzIGxvbmcgYXMgdGhlIHNsb3S8IGlzIG1vcmUgcmVjZW50IHRoYW4gdGhlIGluY2x1ZGVkIGJsb2NrIGl0c2VsZi4ANDUBIFRoaXMgcnVudGltZSBBUEkgaXMgdXNlZCB0byBpbmZvcm0gcG90ZW50aWFsIGJsb2NrIGF1dGhvcnMgd2hldGhlciB0aGV5IHdpbGwlASBoYXZlIHRoZSByaWdodCB0byBhdXRob3IgYXQgYSBzbG90LCBhc3N1bWluZyB0aGV5IGhhdmUgY2xhaW1lZCB0aGUgc2xvdC4AdQEgSW4gcGFydGljdWxhciwgdGhpcyBBUEkgYWxsb3dzIEF1cmEtYmFzZWQgcGFyYWNoYWlucyB0byByZWd1bGF0ZSB0aGVpciAidW5pbmNsdWRlZCBzZWdtZW50IixtASB3aGljaCBpcyB0aGUgc2VjdGlvbiBvZiB0aGUgaGVhZCBvZiB0aGUgY2hhaW4gd2hpY2ggaGFzIG5vdCB5ZXQgYmVlbiBtYWRlIGF2YWlsYWJsZSBpbiB0aGU0IHJlbGF5IGNoYWluLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgc2hvcnQsIEF1cmEgY2hhaW5zIHdpbGwgYWxsb3cgYXV0aG9ycyB0byBjcmVhdGUgbXVsdGlwbGVdASBibG9ja3MgcGVyIHNsb3QgaW4gb3JkZXIgdG8gYnVpbGQgYSBiYWNrbG9nLiBXaGVuIGl0IGlzIHNhdHVyYXRlZCwgdGhpcyBBUEkgd2lsbCBsaW1pdKggdGhlIGFtb3VudCBvZiBibG9ja3MgdGhhdCBjYW4gYmUgY3JlYXRlZC4AJCBDaGFuZ2VzOpEBIC0gVmVyc2lvbiAyOiBVcGRhdGUgdG8gYGNhbl9idWlsZF91cG9uYCB0byB0YWtlIGEgcmVsYXkgY2hhaW4gYFNsb3RgIGluc3RlYWQgb2YgYSBwYXJhY2hhaW4gYFNsb3RgLggAEENvcmUMHHZlcnNpb24A4QkEkCBSZXR1cm5zIHRoZSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgA0ZXhlY3V0ZV9ibG9jawQUYmxvY2uJEBAEZCBFeGVjdXRlIHRoZSBnaXZlbiBibG9jay4AQGluaXRpYWxpemVfYmxvY2sEGGhlYWRlclyVEARBASBJbml0aWFsaXplIGEgYmxvY2sgd2l0aCB0aGUgZ2l2ZW4gaGVhZGVyIGFuZCByZXR1cm4gdGhlIHJ1bnRpbWUgZXhlY3V0aXZlIG1vZGUuAAQhASBUaGUgYENvcmVgIHJ1bnRpbWUgYXBpIHRoYXQgZXZlcnkgU3Vic3RyYXRlIHJ1bnRpbWUgbmVlZHMgdG8gaW1wbGVtZW50LhQAIE1ldGFkYXRhDCBtZXRhZGF0YQCZEASMIFJldHVybnMgdGhlIG1ldGFkYXRhIG9mIGEgcnVudGltZS4ATG1ldGFkYXRhX2F0X3ZlcnNpb24EHHZlcnNpb244nRAQpCBSZXR1cm5zIHRoZSBtZXRhZGF0YSBhdCBhIGdpdmVuIHZlcnNpb24uAAUBIElmIHRoZSBnaXZlbiBgdmVyc2lvbmAgaXNuJ3Qgc3VwcG9ydGVkLCB0aGlzIHdpbGwgcmV0dXJuIGBOb25lYC51ASBVc2UgW2BTZWxmOjptZXRhZGF0YV92ZXJzaW9uc2BdIHRvIGZpbmQgb3V0IGFib3V0IHN1cHBvcnRlZCBtZXRhZGF0YSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgBEbWV0YWRhdGFfdmVyc2lvbnMAQQQMpCBSZXR1cm5zIHRoZSBzdXBwb3J0ZWQgbWV0YWRhdGEgdmVyc2lvbnMuAMAgVGhpcyBjYW4gYmUgdXNlZCB0byBjYWxsIGBtZXRhZGF0YV9hdF92ZXJzaW9uYC4ABAEBIFRoZSBgTWV0YWRhdGFgIGFwaSB0cmFpdCB0aGF0IHJldHVybnMgbWV0YWRhdGEgZm9yIHRoZSBydW50aW1lLggAMEJsb2NrQnVpbGRlchA8YXBwbHlfZXh0cmluc2ljBCRleHRyaW5zaWP5CaEQEGwgQXBwbHkgdGhlIGdpdmVuIGV4dHJpbnNpYy4AOQEgUmV0dXJucyBhbiBpbmNsdXNpb24gb3V0Y29tZSB3aGljaCBzcGVjaWZpZXMgaWYgdGhpcyBleHRyaW5zaWMgaXMgaW5jbHVkZWQgaW5MIHRoaXMgYmxvY2sgb3Igbm90LgA4ZmluYWxpemVfYmxvY2sAXARoIEZpbmlzaCB0aGUgY3VycmVudCBibG9jay4ATGluaGVyZW50X2V4dHJpbnNpY3MEIGluaGVyZW50sRAJCgQ9ASBHZW5lcmF0ZSBpbmhlcmVudCBleHRyaW5zaWNzLiBUaGUgaW5oZXJlbnQgZGF0YSB3aWxsIHZhcnkgZnJvbSBjaGFpbiB0byBjaGFpbi4APGNoZWNrX2luaGVyZW50cwgUYmxvY2uJEBBkYXRhsRDBEARVASBDaGVjayB0aGF0IHRoZSBpbmhlcmVudHMgYXJlIHZhbGlkLiBUaGUgaW5oZXJlbnQgZGF0YSB3aWxsIHZhcnkgZnJvbSBjaGFpbiB0byBjaGFpbi4ABHEBIFRoZSBgQmxvY2tCdWlsZGVyYCBhcGkgdHJhaXQgdGhhdCBwcm92aWRlcyB0aGUgcmVxdWlyZWQgZnVuY3Rpb25hbGl0eSBmb3IgYnVpbGRpbmcgYSBibG9jay4YAFhUYWdnZWRUcmFuc2FjdGlvblF1ZXVlBFB2YWxpZGF0ZV90cmFuc2FjdGlvbgwYc291cmNlxRAIdHj5CShibG9ja19oYXNoPMkQJGggVmFsaWRhdGUgdGhlIHRyYW5zYWN0aW9uLgBlASBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJ5IHRoZSB0cmFuc2FjdGlvbiBwb29sIHRvIGxlYXJuIGRldGFpbHMgYWJvdXQgZ2l2ZW4gdHJhbnNhY3Rpb24uRQEgVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCBtYWtlIHN1cmUgdG8gdmVyaWZ5IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgdHJhbnNhY3Rpb25NASBhZ2FpbnN0IGN1cnJlbnQgc3RhdGUuIFRoZSBnaXZlbiBgYmxvY2tfaGFzaGAgY29ycmVzcG9uZHMgdG8gdGhlIGhhc2ggb2YgdGhlIGJsb2NrfCB0aGF0IGlzIHVzZWQgYXMgY3VycmVudCBzdGF0ZS4ARQEgTm90ZSB0aGF0IHRoaXMgY2FsbCBtYXkgYmUgcGVyZm9ybWVkIGJ5IHRoZSBwb29sIG11bHRpcGxlIHRpbWVzIGFuZCB0cmFuc2FjdGlvbnOkIG1pZ2h0IGJlIHZlcmlmaWVkIGluIGFueSBwb3NzaWJsZSBvcmRlci4ABE0BIFRoZSBgVGFnZ2VkVHJhbnNhY3Rpb25RdWV1ZWAgYXBpIHRyYWl0IGZvciBpbnRlcmZlcmluZyB3aXRoIHRoZSB0cmFuc2FjdGlvbiBxdWV1ZS4MAERPZmZjaGFpbldvcmtlckFwaQQ8b2ZmY2hhaW5fd29ya2VyBBhoZWFkZXJcEATIIFN0YXJ0cyB0aGUgb2ZmLWNoYWluIHRhc2sgZm9yIGdpdmVuIGJsb2NrIGhlYWRlci4ABGQgVGhlIG9mZmNoYWluIHdvcmtlciBhcGkuCAAsU2Vzc2lvbktleXMIVGdlbmVyYXRlX3Nlc3Npb25fa2V5cwgUb3duZXIYEHNlZWRJAdEQHBUBIEdlbmVyYXRlIGEgc2V0IG9mIHNlc3Npb24ga2V5cyB3aXRoIG9wdGlvbmFsbHkgdXNpbmcgdGhlIGdpdmVuIHNlZWQuCQEgVGhlIGtleXMgc2hvdWxkIGJlIHN0b3JlZCB3aXRoaW4gdGhlIGtleXN0b3JlIGV4cG9zZWQgdmlhIHJ1bnRpbWU8IGV4dGVybmFsaXRpZXMuALAgVGhlIHNlZWQgbmVlZHMgdG8gYmUgYSB2YWxpZCBgdXRmOGAgc3RyaW5nLgDQIFJldHVybnMgdGhlIGNvbmNhdGVuYXRlZCBTQ0FMRSBlbmNvZGVkIHB1YmxpYyBrZXlzLgBMZGVjb2RlX3Nlc3Npb25fa2V5cwQcZW5jb2RlZBjVEAyYIERlY29kZSB0aGUgZ2l2ZW4gcHVibGljIHNlc3Npb24ga2V5cy4A3CBSZXR1cm5zIHRoZSBsaXN0IG9mIHB1YmxpYyByYXcgcHVibGljIGtleXMgKyBrZXkgdHlwZS4ABGggU2Vzc2lvbiBrZXlzIHJ1bnRpbWUgYXBpLggATFJ1bnRpbWVWaWV3RnVuY3Rpb24EVGV4ZWN1dGVfdmlld19mdW5jdGlvbgggcXVlcnlfaWThEBRpbnB1dBjlEAR8IEV4ZWN1dGUgYSB2aWV3IGZ1bmN0aW9uIHF1ZXJ5LgAEpCBSdW50aW1lIEFQSSBmb3IgZXhlY3V0aW5nIHZpZXcgZnVuY3Rpb25zBAA8QWNjb3VudE5vbmNlQXBpBDRhY2NvdW50X25vbmNlBBxhY2NvdW50BDgEwCBHZXQgY3VycmVudCBhY2NvdW50IG5vbmNlIG9mIGdpdmVuIGBBY2NvdW50SWRgLgAEgCBUaGUgQVBJIHRvIHF1ZXJ5IGFjY291bnQgbm9uY2UuBABUVHJhbnNhY3Rpb25QYXltZW50QXBpEChxdWVyeV9pbmZvCAx1eHT5CQxsZW447RAAAERxdWVyeV9mZWVfZGV0YWlscwgMdXh0+QkMbGVuOPEQAABMcXVlcnlfd2VpZ2h0X3RvX2ZlZQQYd2VpZ2h0EQFVAQAATHF1ZXJ5X2xlbmd0aF90b19mZWUEGGxlbmd0aDhVAQAAABAAZFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGkQPHF1ZXJ5X2NhbGxfaW5mbwgQY2FsbCAMbGVuOO0QBEkBIFF1ZXJ5IGluZm9ybWF0aW9uIG9mIGEgZGlzcGF0Y2ggY2xhc3MsIHdlaWdodCwgYW5kIGZlZSBvZiBhIGdpdmVuIGVuY29kZWQgYENhbGxgLgBYcXVlcnlfY2FsbF9mZWVfZGV0YWlscwgQY2FsbCAMbGVuOPEQBLQgUXVlcnkgZmVlIGRldGFpbHMgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4ATHF1ZXJ5X3dlaWdodF90b19mZWUEGHdlaWdodBEBVQEEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgV2VpZ2h0VG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg4VQEEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgTGVuZ3RoVG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAAAMADRYY21QYXltZW50QXBpEHxxdWVyeV9hY2NlcHRhYmxlX3BheW1lbnRfYXNzZXRzBCx4Y21fdmVyc2lvbjj9EBS0IFJldHVybnMgYSBsaXN0IG9mIGFjY2VwdGFibGUgcGF5bWVudCBhc3NldHMuADAgIyBBcmd1bWVudHMAaCAqIGB4Y21fdmVyc2lvbmA6IFZlcnNpb24uAEBxdWVyeV94Y21fd2VpZ2h0BBxtZXNzYWdlMQIJERSoIFJldHVybnMgYSB3ZWlnaHQgbmVlZGVkIHRvIGV4ZWN1dGUgYSBYQ00uADAgIyBBcmd1bWVudHMAdCAqIGBtZXNzYWdlYDogYFZlcnNpb25lZFhjbWAuAGRxdWVyeV93ZWlnaHRfdG9fYXNzZXRfZmVlCBh3ZWlnaHQRARRhc3NldKEDDREY6CBDb252ZXJ0cyBhIHdlaWdodCBpbnRvIGEgZmVlIGZvciB0aGUgc3BlY2lmaWVkIGBBc3NldElkYC4AMCAjIEFyZ3VtZW50cwCIICogYHdlaWdodGA6IGNvbnZlcnRpYmxlIGBXZWlnaHRgLnwgKiBgYXNzZXRgOiBgVmVyc2lvbmVkQXNzZXRJZGAuAExxdWVyeV9kZWxpdmVyeV9mZWVzDCxkZXN0aW5hdGlvbqkBHG1lc3NhZ2UxAiBhc3NldF9pZKEDEREoYCBRdWVyeSBkZWxpdmVyeSBmZWVzIFYyLgAdASBHZXQgZGVsaXZlcnkgZmVlcyBmb3Igc2VuZGluZyBhIHNwZWNpZmljIGBtZXNzYWdlYCB0byBhIGBkZXN0aW5hdGlvbmAu9CBUaGVzZSBhbHdheXMgY29tZSBpbiBhIHNwZWNpZmljIGFzc2V0LCBkZWZpbmVkIGJ5IHRoZSBjaGFpbi4AMCAjIEFyZ3VtZW50c4EBICogYG1lc3NhZ2VgOiBUaGUgbWVzc2FnZSB0aGF0J2xsIGJlIHNlbnQsIG5lY2Vzc2FyeSBiZWNhdXNlIG1vc3QgZGVsaXZlcnkgZmVlcyBhcmUgYmFzZWQgb24gdGhlXCAgIHNpemUgb2YgdGhlIG1lc3NhZ2UuYQEgKiBgZGVzdGluYXRpb25gOiBUaGUgZGVzdGluYXRpb24gdG8gc2VuZCB0aGUgbWVzc2FnZSB0by4gRGlmZmVyZW50IGRlc3RpbmF0aW9ucyBtYXkgdXNlwCAgIGRpZmZlcmVudCBzZW5kZXJzIHRoYXQgY2hhcmdlIGRpZmZlcmVudCBmZWVzLgAscCBBIHRyYWl0IG9mIFhDTSBwYXltZW50IEFQSS4AqCBBUEkgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3Igb2J0YWluaW5nOgDEICogdGhlIHdlaWdodCByZXF1aXJlZCB0byBleGVjdXRlIGFuIFhDTSBtZXNzYWdlLAUBICogYSBsaXN0IG9mIGFjY2VwdGFibGUgYEFzc2V0SWRgcyBmb3IgbWVzc2FnZSBleGVjdXRpb24gcGF5bWVudCwBASAqIHRoZSBjb3N0IG9mIHRoZSB3ZWlnaHQgaW4gdGhlIHNwZWNpZmllZCBhY2NlcHRhYmxlIGBBc3NldElkYC6gICogdGhlIGZlZXMgZm9yIGFuIFhDTSBtZXNzYWdlIGRlbGl2ZXJ5LgDwIFRvIGRldGVybWluZSB0aGUgZXhlY3V0aW9uIHdlaWdodCBvZiB0aGUgY2FsbHMgcmVxdWlyZWQgZm9ydQEgW2B4Y206OmxhdGVzdDo6SW5zdHJ1Y3Rpb246OlRyYW5zYWN0YF0gaW5zdHJ1Y3Rpb24sIGBUcmFuc2FjdGlvblBheW1lbnRDYWxsQXBpYCBjYW4gYmUgdXNlZC4IACREcnlSdW5BcGkIMGRyeV9ydW5fY2FsbAwYb3JpZ2lu1QMQY2FsbCBMcmVzdWx0X3hjbXNfdmVyc2lvbjgVEQREIERyeSBydW4gY2FsbCBWMi4ALGRyeV9ydW5feGNtCDxvcmlnaW5fbG9jYXRpb26pAQx4Y21xAzURBFAgRHJ5IHJ1biBYQ00gcHJvZ3JhbQAksQEgQVBJIGZvciBkcnktcnVubmluZyBleHRyaW5zaWNzIGFuZCBYQ00gcHJvZ3JhbXMgdG8gZ2V0IHRoZSBwcm9ncmFtcyB0aGF0IG5lZWQgdG8gYmUgcGFzc2VkIHRvIHRoZSBmZWVzIEFQSS4AgQEgQWxsIGNhbGxzIHJldHVybiBhIHZlY3RvciBvZiB0dXBsZXMgKGxvY2F0aW9uLCB4Y20pIHdoZXJlIGVhY2ggInhjbSIgaXMgZXhlY3V0ZWQgaW4gImxvY2F0aW9uIi7kIElmIHRoZXJlJ3MgbG9jYWwgZXhlY3V0aW9uLCB0aGUgbG9jYXRpb24gd2lsbCBiZSAiSGVyZSIuHQEgVGhpcyB2ZWN0b3IgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIGJvdGggZXhlY3V0aW9uIGFuZCBkZWxpdmVyeSBmZWVzLgCZASBDYWxscyBvciBYQ01zIG1pZ2h0IGZhaWwgd2hlbiBleGVjdXRlZCwgdGhpcyBkb2Vzbid0IG1lYW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjYWxscyB3aWxsIGJlIGFuIGBFcnJgLmUBIEluIHRob3NlIGNhc2VzLCB0aGVyZSBtaWdodCBzdGlsbCBiZSBhIHZhbGlkIHJlc3VsdCwgd2l0aCB0aGUgZXhlY3V0aW9uIGVycm9yIGluc2lkZSBpdC5lASBUaGUgb25seSByZWFzb25zIHdoeSB0aGVzZSBjYWxscyBtaWdodCByZXR1cm4gYW4gZXJyb3IgYXJlIGxpc3RlZCBpbiB0aGUgW2BFcnJvcmBdIGVudW0uCABQTG9jYXRpb25Ub0FjY291bnRBcGkEQGNvbnZlcnRfbG9jYXRpb24EIGxvY2F0aW9uqQE9EQSQIENvbnZlcnRzIGBMb2NhdGlvbmAgdG8gYEFjY291bnRJZGAuAAQNASBBUEkgZm9yIHVzZWZ1bCBjb252ZXJzaW9ucyBiZXR3ZWVuIFhDTSBgTG9jYXRpb25gIGFuZCBgQWNjb3VudElkYC4EADxUcnVzdGVkUXVlcnlBcGkISGlzX3RydXN0ZWRfcmVzZXJ2ZQgUYXNzZXRFESBsb2NhdGlvbqkBSREU8CBSZXR1cm5zIGlmIHRoZSBsb2NhdGlvbiBpcyBhIHRydXN0ZWQgcmVzZXJ2ZSBmb3IgdGhlIGFzc2V0LgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAFRpc190cnVzdGVkX3RlbGVwb3J0ZXIIFGFzc2V0RREgbG9jYXRpb26pAUkRFOAgUmV0dXJucyBpZiB0aGUgYXNzZXQgY2FuIGJlIHRlbGVwb3J0ZWQgdG8gdGhlIGxvY2F0aW9uLgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAATsIEFQSSBmb3IgcXVlcnlpbmcgdHJ1c3RlZCByZXNlcnZlcyBhbmQgdHJ1c3RlZCB0ZWxlcG9ydGVycy4EAFRBdXRob3JpemVkQWxpYXNlcnNBcGkITGF1dGhvcml6ZWRfYWxpYXNlcnMEGHRhcmdldKkBUREE9CBSZXR1cm5zIGxvY2F0aW9ucyBhbGxvd2VkIHRvIGFsaWFzIGludG8gYW5kIGFjdCBhcyBgdGFyZ2V0YC4ATGlzX2F1dGhvcml6ZWRfYWxpYXMIGG9yaWdpbqkBGHRhcmdldKkBWREEHQEgUmV0dXJucyB3aGV0aGVyIGBvcmlnaW5gIGlzIGFsbG93ZWQgdG8gYWxpYXMgaW50byBhbmQgYWN0IGFzIGB0YXJnZXRgLgAEoCBBUEkgZm9yIHF1ZXJ5aW5nIFhDTSBhdXRob3JpemVkIGFsaWFzZXMEADBGdW5naWJsZXNBcGkEWHF1ZXJ5X2FjY291bnRfYmFsYW5jZXMEHGFjY291bnQEXREE7CBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBbYEFzc2V0YF0gdGhhdCBhbiBgQWNjb3VudElkYCBoYXMuAATYIFRoZSBBUEkgZm9yIHF1ZXJ5aW5nIGFjY291bnQncyBiYWxhbmNlcyBmcm9tIHJ1bnRpbWUuCABQQ29sbGVjdENvbGxhdGlvbkluZm8EWGNvbGxlY3RfY29sbGF0aW9uX2luZm8EGGhlYWRlclxlERCcIENvbGxlY3QgaW5mb3JtYXRpb24gYWJvdXQgYSBjb2xsYXRpb24uAPQgVGhlIGdpdmVuIGBoZWFkZXJgIGlzIHRoZSBoZWFkZXIgb2YgdGhlIGJ1aWx0IGJsb2NrIGZvciB0aGF0qCB3ZSBhcmUgY29sbGVjdGluZyB0aGUgY29sbGF0aW9uIGluZm8gZm9yLgAU2CBSdW50aW1lIGFwaSB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sbGF0aW9uLgBEIFZlcnNpb24gaGlzdG9yeToBASAtIFZlcnNpb24gMjogQ2hhbmdlZCBbYFNlbGY6OmNvbGxlY3RfY29sbGF0aW9uX2luZm9gXSBzaWduYXR1cmU1ASAtIFZlcnNpb24gMzogU2lnbmFscyB0byB0aGUgbm9kZSB0byB1c2UgdmVyc2lvbiAxIG9mIFtgUGFyYWNoYWluQmxvY2tEYXRhYF0uDAA4R2VuZXNpc0J1aWxkZXIMLGJ1aWxkX3N0YXRlBBBqc29uGHERKGUBIEJ1aWxkIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZnJvbSBhIEpTT04gYmxvYiBub3QgdXNpbmcgYW55IGRlZmF1bHRzIGFuZCBzdG9yZSBpdCBpbiB0aGUkIHN0b3JhZ2UuACkBIEluIHRoZSBjYXNlIG9mIGEgRlJBTUUtYmFzZWQgcnVudGltZSwgdGhpcyBmdW5jdGlvbiBkZXNlcmlhbGl6ZXMgdGhlIGZ1bGxVASBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gdGhlIGdpdmVuIEpTT04gYmxvYiBhbmQgcHV0cyBpdCBpbnRvIHRoZSBzdG9yYWdlLiBJZiB0aGVVASBwcm92aWRlZCBKU09OIGJsb2IgaXMgaW5jb3JyZWN0IG9yIGluY29tcGxldGUgb3IgdGhlIGRlc2VyaWFsaXphdGlvbiBmYWlscywgYW4gZXJyb3I0IGlzIHJldHVybmVkLgBdASBQbGVhc2Ugbm90ZSB0aGF0IHByb3ZpZGVkIEpTT04gYmxvYiBtdXN0IGNvbnRhaW4gYWxsIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZmllbGRzLCBub1wgZGVmYXVsdHMgd2lsbCBiZSB1c2VkLgAoZ2V0X3ByZXNldAQIaWR1EUkBOGEBIFJldHVybnMgYSBKU09OIGJsb2IgcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgaWRlbnRpZmllZCBieRggYGlkYC4AVQEgSWYgYGlkYCBpcyBgTm9uZWAgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gSlNPTiBibG9iIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkZWZhdWx0SQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBzdHJ1Y3Qgb2YgdGhlIHJ1bnRpbWUuIEltcGxlbWVudGF0aW9uIG11c3QgcHJvdmlkZSBkZWZhdWx0YCBgUnVudGltZUdlbmVzaXNDb25maWdgLgAhASBPdGhlcndpc2UgZnVuY3Rpb24gcmV0dXJucyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluLCBuYW1lZFEBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0IGlkZW50aWZpZWQgYnkgYGlkYCwgb3IgYE5vbmVgIGlmIHN1Y2ggcHJlc2V0IGRvZXMgbm90YQEgZXhpc3QuIFJldHVybmVkIGBWZWM8dTg+YCBjb250YWlucyBieXRlcyBvZiBKU09OIGJsb2IgKHBhdGNoKSB3aGljaCBjb21wcmlzZXMgYSBsaXN0IG9mTQEgKHBvdGVudGlhbGx5IG5lc3RlZCkga2V5LXZhbHVlIHBhaXJzIHRoYXQgYXJlIGludGVuZGVkIGZvciBjdXN0b21pemluZyB0aGUgZGVmYXVsdGUBIHJ1bnRpbWUgZ2VuZXNpcyBjb25maWcuIFRoZSBwYXRjaCBzaGFsbCBiZSBtZXJnZWQgKHJmYzczODYpIHdpdGggdGhlIEpTT04gcmVwcmVzZW50YXRpb25hASBvZiB0aGUgZGVmYXVsdCBgUnVudGltZUdlbmVzaXNDb25maWdgIHRvIGNyZWF0ZSBhIGNvbXByZWhlbnNpdmUgZ2VuZXNpcyBjb25maWcgdGhhdCBjYW6EIGJlIHVzZWQgaW4gYGJ1aWxkX3N0YXRlYCBtZXRob2QuADBwcmVzZXRfbmFtZXMAeREQUQEgUmV0dXJucyBhIGxpc3Qgb2YgaWRlbnRpZmllcnMgZm9yIGF2YWlsYWJsZSBidWlsdGluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0cy4AYQEgVGhlIHByZXNldHMgZnJvbSB0aGUgbGlzdCBjYW4gYmUgcXVlcmllZCB3aXRoIFtgR2VuZXNpc0J1aWxkZXI6OmdldF9wcmVzZXRgXSBtZXRob2QuIElmAQEgbm8gbmFtZWQgcHJlc2V0cyBhcmUgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWUgdGhlIGxpc3QgaXMgZW1wdHkuAATwIEFQSSB0byBpbnRlcmFjdCB3aXRoIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZm9yIHRoZSBydW50aW1lBABIQXNzZXRDb252ZXJzaW9uQXBpDIxxdW90ZV9wcmljZV90b2tlbnNfZm9yX2V4YWN0X3Rva2VucxAYYXNzZXQx/QEYYXNzZXQy/QEYYW1vdW50VQEsaW5jbHVkZV9mZWVZAUkEEPwgUHJvdmlkZXMgYSBxdW90ZSBmb3IgW2BQYWxsZXQ6OnN3YXBfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnNgXS4AOQEgTm90ZSB0aGF0IHRoZSBwcmljZSBtYXkgaGF2ZSBjaGFuZ2VkIGJ5IHRoZSB0aW1lIHRoZSB0cmFuc2FjdGlvbiBpcyBleGVjdXRlZC6sIChVc2UgYGFtb3VudF9pbl9tYXhgIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKQCMcXVvdGVfcHJpY2VfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnMQGGFzc2V0Mf0BGGFzc2V0Mv0BGGFtb3VudFUBLGluY2x1ZGVfZmVlWQFJBBD8IFByb3ZpZGVzIGEgcXVvdGUgZm9yIFtgUGFsbGV0Ojpzd2FwX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zYF0uADkBIE5vdGUgdGhhdCB0aGUgcHJpY2UgbWF5IGhhdmUgY2hhbmdlZCBieSB0aGUgdGltZSB0aGUgdHJhbnNhY3Rpb24gaXMgZXhlY3V0ZWQusCAoVXNlIGBhbW91bnRfb3V0X21pbmAgdG8gY29udHJvbCBzbGlwcGFnZS4pADBnZXRfcmVzZXJ2ZXMIGGFzc2V0Mf0BGGFzc2V0Mv0BfREEBQEgUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbGlxdWlkaXR5IHBvb2wgZm9yIHRoZSBnaXZlbiBhc3NldCBwYWlyLgAIIQEgVGhpcyBydW50aW1lIGFwaSBhbGxvd3MgcGVvcGxlIHRvIHF1ZXJ5IHRoZSBzaXplIG9mIHRoZSBsaXF1aWRpdHkgcG9vbHNwIGFuZCBxdW90ZSBwcmljZXMgZm9yIHN3YXBzLgQAQEdldFBhcmFjaGFpbkluZm8EMHBhcmFjaGFpbl9pZACcBLAgUmV0cmlldmUgdGhlIHBhcmFjaGFpbiBpZCB1c2VkIGZvciBydW50aW1lLgAEDQEgUnVudGltZSBhcGkgdXNlZCB0byBhY2Nlc3MgZ2VuZXJhbCBpbmZvIGFib3V0IGEgcGFyYWNoYWluIHJ1bnRpbWUuBABITm9taW5hdGlvblBvb2xzQXBpKDxwZW5kaW5nX3Jld2FyZHMEDHdobwRVAQQ1ASBSZXR1cm5zIHRoZSBwZW5kaW5nIHJld2FyZHMgZm9yIHRoZSBtZW1iZXIgdGhhdCB0aGUgQWNjb3VudElkIHdhcyBnaXZlbiBmb3IuAERwb2ludHNfdG9fYmFsYW5jZQgccG9vbF9pZDgYcG9pbnRzVQFVAQT0IFJldHVybnMgdGhlIGVxdWl2YWxlbnQgYmFsYW5jZSBvZiBgcG9pbnRzYCBmb3IgYSBnaXZlbiBwb29sLgBEYmFsYW5jZV90b19wb2ludHMIHHBvb2xfaWQ4JG5ld19mdW5kc1UBVQEE/CBSZXR1cm5zIHRoZSBlcXVpdmFsZW50IHBvaW50cyBvZiBgbmV3X2Z1bmRzYCBmb3IgYSBnaXZlbiBwb29sLgBIcG9vbF9wZW5kaW5nX3NsYXNoBBxwb29sX2lkOFUBBLAgUmV0dXJucyB0aGUgcGVuZGluZyBzbGFzaCBmb3IgYSBnaXZlbiBwb29sLgBQbWVtYmVyX3BlbmRpbmdfc2xhc2gEGG1lbWJlcgRVARDMIFJldHVybnMgdGhlIHBlbmRpbmcgc2xhc2ggZm9yIGEgZ2l2ZW4gcG9vbCBtZW1iZXIuAE0BIElmIHBlbmRpbmcgc2xhc2ggb2YgdGhlIG1lbWJlciBleGNlZWRzIGBFeGlzdGVudGlhbERlcG9zaXRgLCBpdCBjYW4gYmUgcmVwb3J0ZWQgb24cIGNoYWluLgB0cG9vbF9uZWVkc19kZWxlZ2F0ZV9taWdyYXRpb24EHHBvb2xfaWQ4WQEg5CBSZXR1cm5zIHRydWUgaWYgdGhlIHBvb2wgd2l0aCBgcG9vbF9pZGAgbmVlZHMgbWlncmF0aW9uLgBJASBUaGlzIGNhbiBoYXBwZW4gd2hlbiB0aGUgYHBhbGxldC1ub21pbmF0aW9uLXBvb2xzYCBoYXMgc3dpdGNoZWQgdG8gdXNpbmcgc3RyYXRlZ3lBASBbYERlbGVnYXRlU3Rha2VgXShwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6YWRhcHRlcjo6RGVsZWdhdGVTdGFrZSkgYnV0IHRoZSBwb29s6CBzdGlsbCBoYXMgZnVuZHMgdGhhdCB3ZXJlIHN0YWtlZCB1c2luZyB0aGUgb2xkZXIgc3RyYXRlZ3kZASBbVHJhbnNmZXJTdGFrZV0ocGFsbGV0X25vbWluYXRpb25fcG9vbHM6OmFkYXB0ZXI6OlRyYW5zZmVyU3Rha2UpLiBVc2WJASBbYG1pZ3JhdGVfcG9vbF90b19kZWxlZ2F0ZV9zdGFrZWBdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpDYWxsOjptaWdyYXRlX3Bvb2xfdG9fZGVsZWdhdGVfc3Rha2UpVCB0byBtaWdyYXRlIHRoZSBwb29sLgB8bWVtYmVyX25lZWRzX2RlbGVnYXRlX21pZ3JhdGlvbgQYbWVtYmVyBFkBHCkBIFJldHVybnMgdHJ1ZSBpZiB0aGUgZGVsZWdhdGVkIGZ1bmRzIG9mIHRoZSBwb29sIGBtZW1iZXJgIG5lZWRzIG1pZ3JhdGlvbi4A2CBPbmNlIGEgcG9vbCBoYXMgc3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkIHRvIHRoZSBzdHJhdGVneVUBIFtgRGVsZWdhdGVTdGFrZWBdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjphZGFwdGVyOjpEZWxlZ2F0ZVN0YWtlKSwgdGhlIGZ1bmRzIG9mIHRoZRkBIG1lbWJlciBjYW4gYmUgbWlncmF0ZWQgZnJvbSBwb29sIGFjY291bnQgdG8gdGhlIG1lbWJlcidzIGFjY291bnQuIFVzZSkBIFtgbWlncmF0ZV9kZWxlZ2F0aW9uYF0ocGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkNhbGw6Om1pZ3JhdGVfZGVsZWdhdGlvbimkIHRvIG1pZ3JhdGUgdGhlIGZ1bmRzIG9mIHRoZSBwb29sIG1lbWJlci4AUG1lbWJlcl90b3RhbF9iYWxhbmNlBAx3aG8EVQEEZQEgUmV0dXJucyB0aGUgdG90YWwgY29udHJpYnV0aW9uIG9mIGEgcG9vbCBtZW1iZXIgaW5jbHVkaW5nIGFueSBiYWxhbmNlIHRoYXQgaXMgdW5ib25kaW5nLgAwcG9vbF9iYWxhbmNlBBxwb29sX2lkOFUBBJwgVG90YWwgYmFsYW5jZSBjb250cmlidXRlZCB0byB0aGUgcG9vbC4ANHBvb2xfYWNjb3VudHMEHHBvb2xfaWQ4zQ8ELQEgUmV0dXJucyB0aGUgYm9uZGVkIGFjY291bnQgYW5kIHJld2FyZCBhY2NvdW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgcG9vbF9pZC4ABPggUnVudGltZSBhcGkgZm9yIGFjY2Vzc2luZyBpbmZvcm1hdGlvbiBhYm91dCBub21pbmF0aW9uIHBvb2xzLgQAKFN0YWtpbmdBcGkMRG5vbWluYXRpb25zX3F1b3RhBBxiYWxhbmNlVQE4BBEBIFJldHVybnMgdGhlIG5vbWluYXRpb25zIHF1b3RhIGZvciBhIG5vbWluYXRvciB3aXRoIGEgZ2l2ZW4gYmFsYW5jZS4AXGVyYXNfc3Rha2Vyc19wYWdlX2NvdW50CAxlcmE4HGFjY291bnQEOAQ5ASBSZXR1cm5zIHRoZSBwYWdlIGNvdW50IG9mIGV4cG9zdXJlcyBmb3IgYSB2YWxpZGF0b3IgYGFjY291bnRgIGluIGEgZ2l2ZW4gZXJhLgA8cGVuZGluZ19yZXdhcmRzCAxlcmE4HGFjY291bnQEWQEERQEgUmV0dXJucyB0cnVlIGlmIGEgdmFsaWRhdG9yIGBhY2NvdW50YCBoYXMgcGFnZXMgdG8gYmUgY2xhaW1lZCBmb3IgdGhlIGdpdmVuIGVyYS4AAAQAJEluZmxhdGlvbgSUZXhwZXJpbWVudGFsX2lzc3VhbmNlX3ByZWRpY3Rpb25faW5mbwCBERDUIFJldHVybiB0aGUgY3VycmVudCBlc3RpbWF0ZXMgb2YgdGhlIGlzc3VhbmNlIGFtb3VudC4AUQEgVGhpcyBpcyBtYXJrZWQgYXMgZXhwZXJpbWVudGFsIGluIGxpZ2h0IG9mIFJGQyM4OS4gTm9uZXRoZWxlc3MsIGl0cyB1c2FnZSBpcyBoaWdobHklASByZWNvbW1lbmRlZCBvdmVyIHRyeWluZyB0byByZWFkLXN0b3JhZ2UsIG9yIHJlLWNyZWF0ZSB0aGUgb25jaGFpbiBsb2dpYy4AAAQAJFJldml2ZUFwaWwkZXRoX2Jsb2NrAN0PDHwgUmV0dXJucyB0aGUgY3VycmVudCBFVEggYmxvY2suALggVGhpcyBpcyBvbmUgYmxvY2sgYmVoaW5kIHRoZSBzdWJzdHJhdGUgYmxvY2suADhldGhfYmxvY2tfaGFzaAQYbnVtYmVyQQf5BATcIFJldHVybnMgdGhlIEVUSCBibG9jayBoYXNoIGZvciB0aGUgZ2l2ZW4gYmxvY2sgbnVtYmVyLgBAZXRoX3JlY2VpcHRfZGF0YQBJEBQRASBUaGUgZGV0YWlscyBuZWVkZWQgdG8gcmVjb25zdHJ1Y3QgdGhlIHJlY2VpcHQgaW5mb3JtYXRpb24gb2ZmY2hhaW4uABwgIyBOb3RlAFUBIEVhY2ggZW50cnkgY29ycmVzcG9uZHMgdG8gdGhlIGFwcHJvcHJpYXRlIEV0aGVyZXVtIHRyYW5zYWN0aW9uIGluIHRoZSBjdXJyZW50IGJsb2NrLgA8YmxvY2tfZ2FzX2xpbWl0AEEHBHQgUmV0dXJucyB0aGUgYmxvY2sgZ2FzIGxpbWl0LgBsbWF4X2V4dHJpbnNpY193ZWlnaHRfaW5fZ2FzAEEHBPAgUmV0dXJucyB0aGUgYmxvY2sgZ2FzIGxpbWl0IGFzIGNhbGN1bGF0ZWQgZnJvbSB0aGUgd2VpZ2h0cy4AHGJhbGFuY2UEHGFkZHJlc3M5B0EHBDEBIFJldHVybnMgdGhlIGZyZWUgYmFsYW5jZSBvZiB0aGUgZ2l2ZW4gYFtIMTYwXWAgYWRkcmVzcywgdXNpbmcgRVZNIGRlY2ltYWxzLgAkZ2FzX3ByaWNlAEEHBFwgUmV0dXJucyB0aGUgZ2FzIHByaWNlLgAUbm9uY2UEHGFkZHJlc3M5BzgExCBSZXR1cm5zIHRoZSBub25jZSBvZiB0aGUgZ2l2ZW4gYFtIMTYwXWAgYWRkcmVzcy4AEGNhbGwYGG9yaWdpbgQQZGVzdDkHFHZhbHVlVQEkZ2FzX2xpbWl0DQFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0SQQoaW5wdXRfZGF0YRiJEQz0IFBlcmZvcm0gYSBjYWxsIGZyb20gYSBzcGVjaWZpZWQgYWNjb3VudCB0byBhIGdpdmVuIGNvbnRyYWN0LgCIIFNlZSBbYGNyYXRlOjpQYWxsZXQ6OmJhcmVfY2FsbGBdLgAsaW5zdGFudGlhdGUcGG9yaWdpbgQUdmFsdWVVASRnYXNfbGltaXQNAVRzdG9yYWdlX2RlcG9zaXRfbGltaXRJBBBjb2RlnREQZGF0YRgQc2FsdD0HoREMcCBJbnN0YW50aWF0ZSBhIG5ldyBjb250cmFjdC4ApCBTZWUgYFtjcmF0ZTo6UGFsbGV0OjpiYXJlX2luc3RhbnRpYXRlXWAuADBldGhfdHJhbnNhY3QECHR4rRHJERBoIFBlcmZvcm0gYW4gRXRoZXJldW0gY2FsbC4AlCBEZXByZWNhdGVkIHVzZSBgdjJgIHZlcnNpb24gaW5zdGVhZC6wIFNlZSBbYGNyYXRlOjpQYWxsZXQ6OmRyeV9ydW5fZXRoX3RyYW5zYWN0YF0AYGV0aF90cmFuc2FjdF93aXRoX2NvbmZpZwgIdHitERhjb25maWfVEckRDGggUGVyZm9ybSBhbiBFdGhlcmV1bSBjYWxsLgCwIFNlZSBbYGNyYXRlOjpQYWxsZXQ6OmRyeV9ydW5fZXRoX3RyYW5zYWN0YF0AQGV0aF9lc3RpbWF0ZV9nYXMICHR4rREYY29uZmln1REJEhToIEVzdGltYXRlcyB0aGUgYW1vdW50IG9mIGdhcyB0aGF0IGEgdHJhbnNhY3Rpb25zIHJlcXVpcmVzLgBdASBUaGlzIGZ1bmN0aW9uIGVzdGltYXRlcyB0aGUgZ2FzIG9mIHRoZSB0cmFuc2FjdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHNhbWUgYmluYXJ5IHNlYXJjaFkBIGFsZ29yaXRobSB0aGF0J3MgaW1wbGVtZW50ZWQgaW4gR2V0aC4gSXQgc3RvcHMgd2hlbiB3aXRoIGFuIGFjY2VwdGFibGUgZXJyb3IgcmF0aW8gb2a0IDEuNSUgc28gdGhhdCB0aGUgYWxnb3JpdGhtIHRlcm1pbmF0ZXMgZWFybHkuAFxldGhfcHJlX2Rpc3BhdGNoX3dlaWdodAQIdHgYDRIETQEgUmV0dXJuIHRoZSBwcmUtZGlzcGF0Y2ggd2VpZ2h0IGJvb2tlZCBmb3IgdGhlIHNpZ25lZCBFdGhlcmV1bSB0cmFuc2FjdGlvbiBwYXlsb2FkLgAsdXBsb2FkX2NvZGUMGG9yaWdpbgQQY29kZRhUc3RvcmFnZV9kZXBvc2l0X2xpbWl0SQQREgzoIFVwbG9hZCBuZXcgY29kZSB3aXRob3V0IGluc3RhbnRpYXRpbmcgYSBjb250cmFjdCBmcm9tIGl0LgCkIFNlZSBbYGNyYXRlOjpQYWxsZXQ6OmJhcmVfdXBsb2FkX2NvZGVgXS4ALGdldF9zdG9yYWdlCBxhZGRyZXNzOQcMa2V5CBkSFLwgUXVlcnkgYSBnaXZlbiBzdG9yYWdlIGtleSBpbiBhIGdpdmVuIGNvbnRyYWN0LgBNASBSZXR1cm5zIGBPayhTb21lKFZlYzx1OD4pKWAgaWYgdGhlIHN0b3JhZ2UgdmFsdWUgZXhpc3RzIHVuZGVyIHRoZSBnaXZlbiBrZXkgaW4gdGhlYQEgc3BlY2lmaWVkIGFjY291bnQgYW5kIGBPayhOb25lKWAgaWYgaXQgZG9lc24ndC4gSWYgdGhlIGFjY291bnQgc3BlY2lmaWVkIGJ5IHRoZSBhZGRyZXNzCQEgZG9lc24ndCBleGlzdCwgb3IgZG9lc24ndCBoYXZlIGEgY29udHJhY3QgdGhlbiBgRXJyYCBpcyByZXR1cm5lZC4ATGdldF9zdG9yYWdlX3Zhcl9rZXkIHGFkZHJlc3M5BwxrZXkYGRIU+CBRdWVyeSBhIGdpdmVuIHZhcmlhYmxlLXNpemVkIHN0b3JhZ2Uga2V5IGluIGEgZ2l2ZW4gY29udHJhY3QuAE0BIFJldHVybnMgYE9rKFNvbWUoVmVjPHU4PikpYCBpZiB0aGUgc3RvcmFnZSB2YWx1ZSBleGlzdHMgdW5kZXIgdGhlIGdpdmVuIGtleSBpbiB0aGVhASBzcGVjaWZpZWQgYWNjb3VudCBhbmQgYE9rKE5vbmUpYCBpZiBpdCBkb2Vzbid0LiBJZiB0aGUgYWNjb3VudCBzcGVjaWZpZWQgYnkgdGhlIGFkZHJlc3MJASBkb2Vzbid0IGV4aXN0LCBvciBkb2Vzbid0IGhhdmUgYSBjb250cmFjdCB0aGVuIGBFcnJgIGlzIHJldHVybmVkLgAsdHJhY2VfYmxvY2sIFGJsb2Nr9QkYY29uZmlnIRI9EhgFASBUcmFjZXMgdGhlIGV4ZWN1dGlvbiBvZiBhbiBlbnRpcmUgYmxvY2sgYW5kIHJldHVybnMgY2FsbCB0cmFjZXMuAEEBIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIHRocm91Z2ggYHN0YXRlX2NhbGxgIHRvIHJlcGxheSB0aGUgYmxvY2sgZnJvbSB0aGU4IHBhcmVudCBibG9jay4AyCBTZWUgZXRoLXJwYyBgZGVidWdfdHJhY2VCbG9ja0J5TnVtYmVyYCBmb3IgdXNhZ2UuACB0cmFjZV90eAwUYmxvY2v1CSB0eF9pbmRleDgYY29uZmlnIRKdEhj8IFRyYWNlcyB0aGUgZXhlY3V0aW9uIG9mIGEgc3BlY2lmaWMgdHJhbnNhY3Rpb24gd2l0aGluIGEgYmxvY2suAEEBIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIHRocm91Z2ggYHN0YXRlX2NhbGxgIHRvIHJlcGxheSB0aGUgYmxvY2sgZnJvbSB0aGWMIHBhcmVudCBoYXNoIHVwIHRvIHRoZSB0cmFuc2FjdGlvbi4AwCBTZWUgZXRoLXJwYyBgZGVidWdfdHJhY2VUcmFuc2FjdGlvbmAgZm9yIHVzYWdlLgAodHJhY2VfY2FsbAgIdHitERhjb25maWchEqESDMAgRHJ5IHJ1biBhbmQgcmV0dXJuIHRoZSB0cmFjZSBvZiB0aGUgZ2l2ZW4gY2FsbC4ApCBTZWUgZXRoLXJwYyBgZGVidWdfdHJhY2VDYWxsYCBmb3IgdXNhZ2UuAFh0cmFjZV9jYWxsX3dpdGhfY29uZmlnDAh0eK0RLHRyYWNlcl90eXBlIRIYY29uZmlnpRKhEhQ5ASBEcnkgcnVuIGFuZCByZXR1cm4gdGhlIHRyYWNlIG9mIHRoZSBnaXZlbiBjYWxsIHdpdGggYWRkaXRpb25hbCBjb25maWd1cmF0aW9uLgBBASBMaWtlIFtgU2VsZjo6dHJhY2VfY2FsbGBdLCBidXQgYWNjZXB0cyBhIFtgVHJhY2luZ0NvbmZpZ2BdIHRoYXQgY2FuIGNhcnJ5IHN0YXRlRQEgb3ZlcnJpZGVzIGFuZCBmdXR1cmUgZXh0ZW5zaWJpbGl0eS4gVGhlIGNvbmZpZyBtdXN0IGJlIHRoZSAqKmxhc3QgYXJndW1lbnQqKiBmb3IFASBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSDigJQgc2VlIFtgVHJhY2luZ0NvbmZpZ2BdIGRvY3VtZW50YXRpb24uADBibG9ja19hdXRob3IAOQcE+CBUaGUgYWRkcmVzcyBvZiB0aGUgdmFsaWRhdG9yIHRoYXQgcHJvZHVjZWQgdGhlIGN1cnJlbnQgYmxvY2suABxhZGRyZXNzBChhY2NvdW50X2lkBDkHBMwgR2V0IHRoZSBIMTYwIGFkZHJlc3MgYXNzb2NpYXRlZCB0byB0aGlzIGFjY291bnQgaWQAKGFjY291bnRfaWQEHGFkZHJlc3M5BwQE0CBHZXQgdGhlIGFjY291bnQgaWQgYXNzb2NpYXRlZCB0byB0aGlzIEgxNjAgYWRkcmVzcy4AXHJ1bnRpbWVfcGFsbGV0c19hZGRyZXNzADkHBPQgVGhlIGFkZHJlc3MgdXNlZCB0byBjYWxsIHRoZSBydW50aW1lJ3MgcGFsbGV0cyBkaXNwYXRjaGFibGVzABBjb2RlBBxhZGRyZXNzOQcYBBEBIFRoZSBjb2RlIGF0IHRoZSBzcGVjaWZpZWQgYWRkcmVzcyB0YWtpbmcgcHJlLWNvbXBpbGVzIGludG8gYWNjb3VudC4AVG5ld19iYWxhbmNlX3dpdGhfZHVzdAQcYmFsYW5jZUEHqRIEDQEgQ29uc3RydWN0IHRoZSBuZXcgYmFsYW5jZSBhbmQgZHVzdCBjb21wb25lbnRzIG9mIHRoaXMgRVZNIGJhbGFuY2UuAAS8IFRoZSBBUEkgdXNlZCB0byBkcnktcnVuIGNvbnRyYWN0IGludGVyYWN0aW9ucy4EACDlB7USAA==";
2
2
 
3
3
  export { binMeta as default };