Q2hhbmdlcyBmb3IgMi4wLjEgKGxlZ2lvbikKCm8gQnVpbGQgc3lzdGVtOgogIC0gRGlzYWJsZSBhcmNoLXNwZWNpZmljIHRlc3RzLgpvIExpYmtleW1hcDoKICAtIEZpeCByZWdyZXNzaW9uIGluIHByb2Nlc3NpbmcgYWx0X2lzX21ldGEga2V5d29yZC4KbyBLZXltYXBzOgogIC0gUmVuYW1lIEJlcG8ga2V5bWFwczoKICAgIGR2b3Jhay1mci1iZXBvLm1hcCAtPiBmci1iZXBvLWxhdGluOS5tYXAKICAgIGR2b3Jhay1mci1iZXBvLXV0ZjgubWFwIC0+IGZyLWJlcG8ubWFwLgoKQ2hhbmdlcyBmb3IgMi4wLjAgKGxlZ2lvbikKCm8gQWxsIG9wZXJhdGlvbnMgd2l0aCBrZXltYXBzIG1vdmVkIHRvIGxpYmtleW1hcCBsaWJyYXJ5LiBUaGUgbG9hZGtleXMKICBhbmQgZHVtcGtleXMgYWx3YXlzIHVzZSB0aGUgbGlia2V5bWFwLgpvIEtleW1hcHM6CiAgLSBBZGQgQmVwbyBrZXltYXBzIChkdm9yYWstZnItYmVwby5tYXAsIGR2b3Jhay1mci1iZXBvLXV0ZjgubWFwKS4KICAtIEFkZCBpdC5tYXAga2V5bWFwLgoKQ2hhbmdlcyBmb3IgMS4xNS41IChsZWdpb24pCgpvIEJ1aWxkIHN5c3RlbToKICAtIEZpeCB2YXJpb3VzIHZsb2NrIGJ1aWxkIGVycm9ycyAoTWlrZSBGcnlzaW5nZXIpCiAgLSBGaXggbG9hZGtleXMuYW5hbHl6ZSBsZXggaGFuZGxpbmcgKE1pa2UgRnJ5c2luZ2VyKQogIC0gRml4IG1zZ3N0ciBpbiBlcy5wbyAoRG1pdHJ5IFYuIExldmluKQoKQ2hhbmdlcyBmb3IgMS4xNS40IChsZWdpb24pCgpvIFByb2dyYW1zOgogIC0gdmxvY2s6IE5ldyB1dGlsaXR5IHdoaWNoIGxvY2tzIG9uZSBvciBtb3JlIHZpcnR1YWwgY29uc29sZXMuCiAgLSBsb2Fka2V5czogQ2hhbmdlIHRoZSBoYW5kbGluZyBvZiAtQyBvcHRpb24uCiAgLSBsb2Fka2V5czogRml4IC1kIG9wdGlvbi4KbyBLZXltYXBzOgogIC0gQWRkIGR2b3Jhay1lcyBrZXltYXAuCiAgLSBBZGQgZHZvcmFrLXVrIGtleW1hcCAoSm9lIE1hY01haG9uKS4KICAtIEFkZCBkdm9yYWstc3YtYTEgYW5kIGR2b3Jhay1zdi1hNSBrZXltYXBzIC4KICAtIEFkZCBydXdpbl9hbHRfc2gtVVRGLTgga2V5bWFwIChEbWl0cml5IFBlcmxvdykuCgpDaGFuZ2VzIGZvciAxLjE1LjMgKGxlZ2lvbikKCm8gQnVpbGQgc3lzdGVtOgogIC0gRHJvcCBrbGliYyBzdXBwb3J0LgpvIFByb2dyYW1zOgogIC0ga2JkaW5mbzogTmV3IHV0aWxpdHkgdG8gb2J0YWluIGluZm9ybWF0aW9uIGFib3V0IGNvbnNvbGUuCiAgLSBzZXR2dHJnYjogTmV3IHV0aWxpdHkgdG8gc2V0IHRoZSB2aXJ0dWFsIHRlcm1pbmFsIFJHQiBjb2xvcnMuCiAgLSBsb2Fka2V5czogQWRkIExPQURLRVlTX0tFWU1BUF9QQVRIIGVudiB2YXJpYWJsZS4KICAtIGxvYWRrZXlzOiBGaXggc29tZSBtZW1vcnkgbGVha3MuCiAgLSBsb2Fka2V5czogRG8gbm90IHNldCBwcmVmZXJfdW5pY29kZSBmb3IgaXNvLTg4NTktMS4KICAtIGxvYWRrZXlzIC1hOiBTd2l0Y2ggdG8gQVNDSUkgbW9kZS4KICAtIGxvYWRrZXlzOiBGaXggImNvbXBvc2UgYXMgdXN1YWwiIGZvciBVbmljb2RlIGRpYWNyaXRpY3MgKE1pY2hhZWwgU2NodXR0ZSkuCm8gS2V5bWFwczoKICAtIEFkZCBkdm9yYWstcnUga2V5bWFwLgpvIEZvbnRzOgogIC0gQWRkIExhdEdya0N5ciBmb250cy4KCkNoYW5nZXMgZm9yIDEuMTUuMiAobGVnaW9uKQoKbyBCdWlsZCBzeXN0ZW06CiAgLSBVc2UgYXV0b21ha2UgdG8gYnVpbGQgdHJhbnNsYXRpb25zLgogIC0gRml4IGNvbGVtYWsgaW5zdGFsbGF0aW9uLgogIC0gcHNmZm9udG9wOiBGaXggcG9zc2libGUgYWxpZ25tZW50IGlzc3Vlcywgd3J0IC1XY2FzdC1hbGlnbi4KICAtIHZjc3RpbWU6IEZpeCBidWlsZCB3YXJuaW5nLgpvIFByb2dyYW1zOgogIC0gbG9hZGtleXMgLXU6IFN3aXRjaCB0byBVbmljb2RlIG1vZGUsIGlmIG5lY2Vzc2FyeSAoTWljaGFlbCBTY2h1dHRlKS4KICAtIFVzZSBlaXRoZXIgL2Rldi92Y3NbYV0gb3IgL2Rldi92Y3NbYV0wIChNaWNoYWVsIFNjaHV0dGUpCm8gS2V5bWFwczoKICAtIEFkZCAibW9iaWkiIHNwZWNpZmljIGtleW1hcCAoUmljaGFyZCBaaWRsaWNreSkuCm8gRm9udHM6CiAgLSBBZGQgZ2VvcmdpYW4gZm9udC4KCkNoYW5nZXMgZm9yIDEuMTUuMSAobGVnaW9uKQoKbyBCdWlsZCBzeXN0ZW06CiAgLSBBZGQga2xpYmMgc3VwcG9ydC4KICAtIEZpeCBlcnJvcnMgd2hlbiBidWlsZGluZyB3aXRoIC1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5CiAgICBnY2Mgb3B0aW9uIChIZXJ0b24gUm9uYWxkbyBLcnplc2luc2tpKS4KICAtIEZpeCBjcm9zcy1jb21waWxpbmcgcHJvYmxlbXMuCm8gUHJvZ3JhbXM6CiAgLSBsb2Fka2V5czogQXV0by1jb252ZXJ0IOKAnHRyYWRpdGlvbmFs4oCdL1VuaWNvZGUga2V5c3ltcyAoTWljaGFlbCBTY2h1dHRlKS4KICAtIGxvYWRrZXlzOiBTdXBwb3J0IGJpZGlyZWN0aW9uYWwgY29udmVyc2lvbiBvZiBrZXlzeW1zIChNaWNoYWVsIFNjaHV0dGUpLgogIC0gbG9hZGtleXM6IFN1cHBvcnQgVW5pY29kZSBjb21wb3NlIHRhYmxlcyAoTWljaGFlbCBTY2h1dHRlKS4KICAtIHNob3djb25zb2xlZm9udDogUHJpbnQgYWRlcXVhdGUgc3BhY2UgY2hhcnMgKE1pY2hhZWwgU2NodXR0ZSkuCiAgLSBkdW1wa2V5czogVXNlIFUr4oCmIGluIOKAnGNvbXBvc2XigJ0gbGluZXMgaWYgS0RHS0JESUFDUlVDIGlzIGF2YWlsYWJsZSAoTWljaGFlbCBTY2h1dHRlKS4KICAtIEFkZCBzdXBwb3J0IGZvciBCcmxfZG90OSBhbmQgQnJsX2RvdDEwIChNaWNoYWVsIFNjaHV0dGUpLgogIC0gTmV2ZXIgaGFuZGxlIHBsYWluIEFTQ0lJIGNoYXJhY3RlcnMgYXMgVW5pY29kZSAoTWljaGFlbCBTY2h1dHRlKS4KICAtIEVuYWJsZSBVTlVNQkVScyBpbiBjb21wb3NlIGRlZmluaXRpb25zIChNaWNoYWVsIFNjaHV0dGUpLgpvIEtleW1hcHM6CiAgLSBiZ19waG8tdXRmOCBrZXljb2RlIDM4IGFzc2lnbm1lbnQgZml4LgogIC0gQWRkIGtleW1hcCBmb3IgQ29sZW1hay4KICAtIEFkZCBrZXltYXAgZm9yIEdlcm1hbiBJbnRlbCBiYXNlZCBNYWNzLgogIC0gQWRkIFVLIGtleW1hcCBmb3IgdGhlIFN1biBUeXBlLTYga2V5Ym9hcmQuCiAgLSBBZGQgRnJlbmNoIGtleW1hcCBEdm9yYWsuCiAgLSBBZGQgS2lyZ2hpeiBrZXltYXAuCm8gRm9udHM6CiAgLSBBZGQgVSsyMDEwLCBVKzIwMTIsIFUrMjAxMywgVSsyMDE4LCBVKzIwMTksIFUrMjIxMgogICAgdG8gdGhlIGVtYmVkZGVkIGNoYXJhY3RlciB0YWJsZS4KCkNoYW5nZXMgZm9yIDEuMTUgKGxlZ2lvbikKCm8gQnVpbGQgc3lzdGVtOgogIC0gVXNlIGF1dG9tYWtlLgogIC0gQWRkIC0tZW5hYmxlLXN0cmlwIGNvbmZpZ3VyZSBvcHRpb24uCiAgLSBQcm9wYWdhdGVzIGNvbmZpZ3VyZSBvcHRpb25zIChDaGFybGVzIENsw6ltZW50KQpvIFByb2dyYW1zOgogIC0gRml4IGludGVybmF0aW9uYWxpemF0aW9uIChCZW5ubyBTY2h1bGVuYmVyZykuCiAgLSB1bmljb2RlX3N0YXJ0OiBXaXRob3V0IGFueSBhcmd1bWVudHMgdXRpbGl0eSB3aWxsIG9ubHkgc2V0IHVuaWNvZGUgbW9kZS4KICAtIGFuYWx5emUubDogQWRkIHdhcm5pbmcgZm9yIG9uIFUreHh4eCBrZXlzeW0gc3BlY2lmaWNhdGlvbnMgPj0gMHhmMDAwLgogIC0gYW5hbHl6ZS5sOiBVbmRlcnN0YW5kIHRoZSBDYXBzU2hpZnQgbW9kaWZpZXJzIChNaWNoYWVsIFNjaHV0dGUpLgogIC0gb3BlbnZ0OiBEb2N1bWVudCB0aGUgLWYgc3dpdGNoIChNaWNoYWVsIFNjaHV0dGUpLgogIC0gb3BlbnZ0OiBQcmludCBhbiBlcnJvciBtZXNzYWdlIHdoZW4gY2FsbHMgdG8gZXhlYyogZnVuY3Rpb25zIGZhaWwuCiAgLSBsb2Fka2V5czogZHVtcCBiaW5hcnkga2V5bWFwIChNaWNoZWwgU3RlbXBpbikuCiAgLSBsb2FkdW5pbWFwIHNob3VsZCB1c2UgVU5JTUFQRElSLgpvIEtleW1hcHM6CiAgLSBBZGQgcXdlcnR5L2N6Lm1hcCBrZXltYXAuCiAgLSBSZWNvZ25pemUgQ3RybC1bIGFzIEVzY2FwZS4KICAtIHJ1d2luXyo6IFVzZSBxd2VydHktbGF5b3V0LmluYy4KICAtIFJldmVydCAiaW5jbHVkZS8qZXVyby5tYXA6IENoYW5nZSAnY3VycmVuY3knIHRvICdldXJvJyBzeW1ib2wiLgogIC0gYmUtbGF0aW4xIGtleWNvZGUgNyBhc3NpZ25tZW50IGZpeCAoSGVydG9uIFJvbmFsZG8gS3J6ZXNpbnNraSkuCm8gRm9udHM6CiAgLSBpc28wN3UtMTYucHNmdTogVXBkYXRlIGZvbnQgKExlZnRlcmlzIERpbWl0cm91bGFraXMpCm8gVW5pbWFwczoKICAtIFVwZGF0ZSA4ODU5LTdfdG9fdW5pLnRyYW5zCgpDaGFuZ2VzIGZvciAxLjE0LjEgKGxlZ2lvbikKCm8gQnVpbGQgc3lzdGVtOgogIC0gRml4IGNvbXB1dGluZyBvZiB0aGUgaG9zdC1zeXN0ZW0gdHlwZS4KICAtIEZpeCBvcHRpb25zIGhhbmRsaW5nICh0aGFua3MgZm9yIHRoZSBoZWxwIHRvIE1pa2UgRnJ5c2luZ2VyKS4KICAtIEZpeCBERVNURElSIGhhbmRsaW5nLgpvIFByb2dyYW1zOgogIC0gdW5pY29kZV97c3RhcnQsc3RvcH06IFRvIHJ1biBsb2Fka2V5cyBpcyBhbGxvd2VkIG9ubHkgdG8gcm9vdC4KbyBLZXltYXBzOgogIC0gQWRkIE5vcndlZ2lhbiBkdm9yYWsga2V5bWFwLgogIC0gQWRkIHR1cmtpc2ggRiAodHJmKSBrZXlib2FyZCBtYXAuCiAgLSBGaXggdHVya2lzaCBRICh0cnEpIGtleWJvYXJkIG1hcCAoT3pndXIgTXVyYXQgSG9tdXJsdSkuCiAgLSBNb3ZlIHF3ZXJ0eS9jei5tYXAgLT4gcXdlcnR6L2N6Lm1hcC4KICAtIGluY2x1ZGUvKmV1cm8ubWFwOiBDaGFuZ2UgJ2N1cnJlbmN5JyB0byAnZXVybycgc3ltYm9sLgoKQ2hhbmdlcyBmb3IgMS4xNCAobGVnaW9uKQoKbyBVc2UgYXV0b2NvbmYgZm9yIGJ1aWxkIHN5c3RlbS4KbyBCdWlsZCBzeXN0ZW06CiAgLSBBZGQgLS1lbmFibGUtbmxzIG9wdGlvbi4KICAtIEFkZCAtLWVuYWJsZS1vcHRpb25hbC1wcm9ncyBvcHRpb24uCm8gS2V5bWFwczoKICAtIEFkZCBPTFBDIChPbmUgTGFwdG9wIFBlciBDaGlsZCkga2V5bWFwcwogIC0gQWRkIG1vcmUgcm9tYW5pYW4ga2V5bWFwcyAoVml0ZXpzbGF2IENyaG9uZWspCiAgLSBBZGQgYW5vdGhlciB1a3JhaW5pYW4ga2V5bWFwCiAgLSBBZGQgQmVsYXJ1c2lhbiAoQmVsYXJ1cykga2V5bWFwcwogIC0gQWRkIEthemFraCBrZXltYXAKICAtIEFkZCBLeXJneXoga2V5bWFwCiAgLSBBZGQgQmFzaGtpciAoUnVzc2lhKSBrZXltYXAKICAtIEFkZCBUYXRhciBrZXltYXBzCiAgLSBBZGQgbW9yZSBydXNzaWFuIGtleW1hcHMKbyBGb250czoKICAtIEFkZCB1bmljb2RlIGZvbnRzIChVbmlDeXJFeHRfOHgxNi5wc2YsIFVuaUN5cl84eDE0LnBzZiwgVW5pQ3lyXzh4MTYucHNmLAogICAgVW5pQ3lyXzh4OC5wc2YpCiAgLSBBZGQgTGF0Mi1UZXJtaW51czE2IGZvbnQKICAtIEZpeCBzdW4xMngyMiBmb250IHVuaWNvZGUgbWFwcGluZyB0YWJsZSAoVml0ZXpzbGF2IENyaG9uZWspCm8gUHJvZ3JhbXM6CiAgLSBBZGQgJy5hY20nIHN1ZmZpeCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGNvbnNvbGUtdG9vbHMKCkNoYW5nZXMgZm9yIDEuMTMKCm8gUHJvZ3JhbXM6CiAgLSBmaXggZmluZGZpbGUgc28gdGhhdCBpdCBkb2VzIG5vdCBmaW5kIGRpcmVjdG9yaWVzCiAgLSBrYmRyYXRlOiBmaXggZm9yIHNwYXJjCm8gTmV3IHRyYW5zbGF0aW9uczogY3MucG8sIGRlLnBvCgpDaGFuZ2VzIGZvciAxLjEyCgpvIFByb2dyYW1zOgogIC0gdXBkYXRlZCBnZXRrZXljb2Rlcywgc2hvd2tleSBmb3IgTGludXggMi42Cm8gS2V5bWFwczoKICAtIE1pbm9yIGNoYW5nZXMgdG8gaXMtbGF0aW4xLm1hcAogIC0gTmV3IGlzLWxhdGluMS11cy5tYXAgKFJleW5pciBILiBTdGVm4W5zc29uKQpvIE5ldyB0cmFuc2xhdGlvbnM6IGVsLnBvLCBwbC5wbwoKQ2hhbmdlcyBmb3IgMS4xMQoKbyBQcm9ncmFtczoKICAtIHVwZGF0ZWQgc2V0a2V5Y29kZXMgZm9yIExpbnV4IDIuNgpvIE5ldyB0cmFuc2xhdGlvbnM6IGVzLnBvLCBubC5wbwoKQ2hhbmdlcyBmb3IgMS4xMAoKbyBQcm9ncmFtczoKICAtIG9wZW52dDogbmV3IC1lIG9wdGlvbiAoZGFtamFuQGxlZ29sYXMpCiAgLSBNYWtlZmlsZXM6IERFU1RESVIgaGFuZGxpbmcgaW1wcm92ZWQKbyBLZXltYXBzOgogIC0gTmV3IGJnLWNwMTI1MS5tYXAgKERpbWl0YXIgWmhla292KQogIC0gTmV3IGJnX2Jkcy1jcDEyNTEubWFwLCBiZ19waG8tY3AxMjUxLm1hcCAoUGV0ZXIgR2VvcmdpZXYpCiAgLSBOZXcgYmdfYmRzLXV0ZjgubWFwLCBiZ19waG8tdXRmOC5tYXAgKFBldGVyIEdlb3JnaWV2KQogIC0gUmVuYW1lZCBiZy5tYXAgdG8gYmctY3A4NTUubWFwCiAgUHJvYmFibHkgb25lIG9mIGJnLWNwMTI1MS5tYXAgYW5kIGJnX3Boby1jcDEyNTEubWFwIHNob3VsZCBiZSBkZWxldGVkLgogIENhbiBzb21lIEJ1bGdhcmlhbiB0ZWxsIG1lIHdoaWNoIG9uZT8KbyBGb250czoKICAtIEFkZGVkIGdyZWVrLXBvbHl0b25pYy5wc2Z1IChtcEdyLnBzZiwgZnJvbSBMZWZ0ZXJpcyBEaW1pdHJvdWxha2lzKQpvIE5ldyB0cmFuc2xhdGlvbnM6IGNzLnBvLCBlcy5wbywgZ3IucG8KCkNoYW5nZXMgZm9yIDEuMDkKCm8gUHJvZ3JhbXMsIGRvY3M6CiAgLSB1cGRhdGUgZm9yIExpbnV4IDIuNi4xLCB3aXRoIFBJT19VTklNQVAgZm9yIG5vbi1mZyBjb25zb2xlcwogIC0gdXBkYXRlIGZvciBMaW51eCAyLjUuNDI6IE5SX0tFWVM9MjU2Cm8gS2V5bWFwczoKICAtIHNtYWxsIGZpeCBmb3IgbmwubWFwCm8gTmV3IHRyYW5zbGF0aW9uczogcGwucG8sIHJvLnBvCgpDaGFuZ2VzIGZvciAxLjA4CgpvIFByb2dyYW1zOgogIC0gbG9hZGtleXMueTogZml4IGZvciBiaXNvbiAxLjUwIChQZXIgTGlk6W4pCiAgLSBsb2Fka2V5cy55OiBmaXggaW4gYWRkZnVuYygpCiAgLSBNYWtlZmlsZSBldGM6IG1pbm9yIGNsZWFudXAgKERhbmllbCBSLiBHcmF5c29uKQogIC0gTWFrZWZpbGUgZXRjOiAtLXByZWZpeCBzdXBwb3J0IChNaWNoYWVsIENvdmkpCm8gS2V5bWFwczoKICAtIHBhc3NpbTogZG9uJ3QgbWFwIFBydFNjIHRvIEN0cmwtXCBzbyB0aGF0IHBvb3IgaW5ub2NlbnRzIGRvIG5vdAogICAga2lsbCBhcHBsaWNhdGlvbnMgd2hlbiB0aGV5IG9ubHkgd2FudCB0byBwcmludCB0aGUgc2NyZWVuOwogICAgb25seSBtYXAgQ3RybC1QcnRTYyB0byBDdHJsLVwgKEt1cnQgR2FybG9mZikKICAtIG1vZGlmaWVkIGZpLWxhdGluMS5tYXAsIG5ldyBmaS1sYXRpbjkubWFwIChNYXJrbyBNeWxseW5lbikKICAtIGJnLWNwMTI1MS5tYXAgKERpbWl0YXIgWmhla292KQogIC0gaWwtaGViLm1hcCAoT2RlZCBTLiBSZXNuaWspCiAgLSBzci1jeS5tYXAgKE1pbG9zIFJhbmNpYykKICAtIGZyLWxhdGluOS5tYXAgKEd1eWxoZW0gQXpuYXIpLCByZW1vdmVkIG9sZGVyIGZyLWxhdGluMC5tYXAuCgpDaGFuZ2VzIGZvciAxLjA3CgpvIFByb2dyYW1zOgogIC0gc2hvd2ZvbnQgcmVuYW1lZCB0byBzaG93Y29uc29sZWZvbnQgdG8gYXZvaWQgY2xhc2ggd2l0aCBYCiAgLSBsb2Fka2V5cy55OiBmaXggaW4gYWRkZnVuYygpIChTaGlnZWhhcnUgSGlyYXltYSkKICAtIGxvYWRrZXlzLnk6IGhhbmRsZSByZWxhdGl2ZSBzeW1saW5rcyAoTWF0dGhpYXMgQmVua21hbm4pCiAgLSBzYW1pLnN5bXMuaDogc3ltYm9sIGRlZmluaXRpb25zIGZvciBOb3J0aGVybiBT4W1pIChSZWdub3IgSmVybnNsZXR0ZW4pCiAgLSBmaW5kZmlsZS5jOiBzZWFyY2ggZW50aXJlIGRpciBiZWZvcmUgbG9va2luZyBhdCBzdWJkaXJzIChNYXR0aGlhcyBCZW5rbWFubikKICAtIGdldGZkLmMsIGV0Yy46IGFsc28gdHJ5IGRldmZzIG5hbWVzIChBbGFzdGFpciBNY0tpbnN0cnkpCiAgLSBrYmRyYXRlLmM6IGRvIG5vdCB1c2UgPGxpbnV4L2tkLmg+OiB0aGUgc3RydWN0IGVsZW1lbnRzIGNoYW5nZWQgbmFtZQogIC0gc2V0bGVkczogdHlwbyBmaXhlZApvIE1hbiBwYWdlczoKICAtIE5ldzogZmdjb25zb2xlLjEgKEFsYXN0YWlyIE1jS2luc3RyeSkKICAtIEFkZGVkIGEgZmV3IG1hblsxOF1taXNjIHBhZ2VzLCBmb3Igbm9uLWluc3RhbGxlZCBzdHVmZiAoQWxhc3RhaXIgTWNLaW5zdHJ5KQpvIEZvbnRzOgogIC0gQWRkZWQgY3lyLXN1bjE2LnBzZnUgKEJlcm8pCm8gVW5pbWFwczoKICAtIEFkZGVkIGNwMTI1MV90b191bmkudHJhbnMsIGtvaTgtcl90b191bmkudHJhbnMsIGtvaTgtdV90b191bmkudHJhbnMgKEJlcm8pCm8gS2V5bWFwczoKICAtIFJlbmFtZWQgdGhlIFN3ZWRpc2ggc2UtbGF0aW4xLm1hcCB0byBzdi1sYXRpbjEubWFwCiAgLSBBZGRlZCBzZS1maS1pcjIwOS5tYXAsIHNlLWZpLWxhdDYubWFwLCBzZS1pcjIwOS5tYXAsIHNlLWxhdDYubWFwCiAgICBmb3IgTm9ydGhlcm4gU+FtaSAoUmVnbm9yIEplcm5zbGV0dGVuKQogIC0gQWRkZWQgcHQtbGF0aW45Lm1hcCAoQ2FybG9zIE1vbnRlaXJvKQogIC0gVGhlIG9sZCBubC5tYXAgd2FzIHJlYWxseSBiYWQuIFJlbmFtZWQgbmwzLm1hcCB0byBubC5tYXAuCiAgLSBmaS1sYXRpbjEubWFwIHNtYWxsIGNoYW5nZXMKbyBEb2NzOgogIC0ga2JkLkZBUTogc21hbGwgYWRkaXRpb25zCgpDaGFuZ2VzIGZvciAxLjA2IChhZWIpCgpvIFByb2dyYW1zOgogIC0gU29tZSBNYWtlZmlsZSBjaGFuZ2VzIChQZXRlciBCcmVpdGVubG9obmVyKQogIC0gQWRkZWQgZmdjb25zb2xlIHRvIHRoZSBpbnN0YWxsZWQgcHJvZ3JhbXMKICAtIHJlc2l6ZWNvbnMuYzogcmVtb3ZlZCAucHNmIGV4dGVuc2lvbiBmcm9tIGRlZmF1bHQgZm9udHMgKGJlcm8pCiAgLSBwc2Zmb250b3AuYzogY29ycmVjdGlvbiB0byBoYW5kbGluZyBvZiB1bmljb2RlIHNlcXVlbmNlcyAoS3VydCBHYXJsb2ZmKQogIC0gbG9hZGtleXM6IHdvcmsgYmV0dGVyIGluIHRoZSBwcmVzZW5jZSBvZiBzeW1saW5rcwpvIERvY3VtZW50YXRpb246CiAgLSBSZW1vdmVkIHNjYW5jb2RlIGRvY3MgKHRoZXNlIHdpbGwgYmUgZGlzdHJpYnV0ZWQgc2VwYXJhdGVseSwgaGFkIGdyb3duIHRvCiAgICBvdmVyIDEgTUI7IHNlZSBhbHNvIGh0dHA6Ly93d3cud2luLnR1ZS5ubC9+YWViL2xpbnV4L2tiZC9zY2FuY29kZXMuaHRtbCkKbyBGb250czoKICAtIEFkZGVkIGlzbzAyLTEyeDIyLnBzZnUgKEphY2VrIExpcGtvd3NraSkKICAtIFJlbmFtZWQgc3VuLTEyeDIyLnBzZnUgdG8gaXNvMDEtMTJ4MjIucHNmdSBzaW5jZSBLdXJ0IEdhcmxvZmYKICAgIGV4cGxhaW5lZCB0aGF0IGl0IHdhcyBub3QgdGhlIGtlcm5lbCBmb250IGJ1dCBhIG1vZGlmaWVkIHZlcnNpb24uCiAgICBBZGRlZCB0aGUgb3JpZ2luYWwgc3VuLTEyeDIyLnBzZnUuCiAgLSBSZW5hbWVkIGxhdDctMTYucHNmdSB0byBpc28wN3UtMTYucHNmdS4gKGxhdDcgaXMgaXNvMTMsIG5vdCBpc28wNykKICAtIEFkZGVkIGxhdDdhLTE0LnBzZnUgKGVhcmxpZXI6IGx0LWJyaW0qKSBhbmQgbGF0N2EtMTYucHNmIChiYWQgZm9udHMpCiAgLSBBZGRlZCBsYXQ3LTE0LnBzZnUgKHVnbHksIGJ1dCB3aXRoIHRoZSByaWdodCBjaGFyYWN0ZXJzKQpvIFVuaW1hcHM6CiAgLSBSZW5hbWVkIGxhdDd1LnVuaSB0byBpc28wN3UudW5pIHNpbmNlIGl0IGlzIG5vdCBhIExhdGluLTcgbWFwLgogIC0gQWRkZWQgbGF0Ny51bmkKbyBLZXltYXBzIChtb3N0bHkgS3VydCBHYXJsb2ZmLCBTdVNFKToKICAtIENvcnJlY3RlZCBici1sYXRpbjEtYWJudDIubWFwIChGculk6XJpYyBNZXVuaWVyKSwgbWFjLWRlX0NILm1hcCwKICAgIHN1bnQ1LXVrLm1hcAogIC0gQWRkZWQgbWlzc2luZyBMYXRpbi0xIHN5bWJvbHMgdG8gZmktbGF0aW4xLm1hcCAoTWFya28gTXlsbHluZW4pCiAgLSBBZGRlZCBzdW5kdm9yYWsubWFwLCBzdW50NC1uby1sYXRpbjEubWFwLCBzdW50NS1jei11cy5tYXAsCiAgICBzdW50NS11cy1jei5tYXAsIG1hYy1kdm9yYWsubWFwLCBtYWMtcXdlcnR6LWxheW91dC5pbmMKCkNoYW5nZXMgZm9yIDEuMDUgKGFlYikKCm8gUHJvZ3JhbXM6CiAgLSBrZG1hcG9wLmMsIGtkbWFwb3AuaCwgdXRmOC5jLCB1dGY4Lmg6IG5ldwogIC0gbG9hZHVuaW1hcC5jOiBhbHNvIGFsbG93IGEgcmFuZ2UgbWFwcGVkIHRvIGEgc2luZ2xlIFVuaWNvZGUgc3ltYm9sCiAgLSBtYXBzY3JuLmM6IGFsc28gYWxsb3cgYSBjaGFyYWN0ZXIgZ2l2ZW4gYXMgdXRmOCBzdHJpbmcKICAtIG1hcHNjcm4uYzogaGFuZGxlIFBJT19TQ1JOTUFQIGFuZCBQSU9fVU5JU0NSTk1BUCB3aXRoIHNhbWUgLW0vLW9tIG9wdGlvbnMKICAtIHNob3dmb250LmM6IGFsc28gc2hvdyBmb250cyBsYXJnZXIgdGhhbiAyNTYgZ2x5cGhzCiAgLSB1bmljb2RlX3N0YXJ0OiB1cGRhdGVkOyBhZGRlZCB0ZXh0IGZyb20gQnJ1bm8gSGFpYmxlCm8gRG9jdW1lbnRhdGlvbjoKICAtIGZvbnQtZm9ybWF0cywgdW5pY29kZV9zdGFydC4xLCB1bmljb2RlX3N0b3AuMTogbmV3CiAgLSBsb2FkdW5pbWFwLjgsIG1hcHNjcm4uOCwgc2V0Zm9udC44OiB1cGRhdGVkCm8gRm9udHM6CiAgLSBBZGRlZCBkcmRvczh4Ti5wc2Z1Cm8gVW5pbWFwczoKICAtIEFkZGVkIGN5YmVyY2FmZS51bmkKbyBDb25zb2xlIHRyYW5zbGF0aW9uczoKICAtIEFkZGVkIDg4NTktTl90b191bmkudHJhbnMsIGNwTk5OTl90b191bmkudHJhbnMKbyBEYXRhOgogIC0gQ29ycmVjdGVkIGNvcnJ1cHRlZCA3MzcuY3AsIGxhdDUtTi5wc2Z1LCBiYWx0aWMudHJhbnMKCkNoYW5nZXMgZm9yIDEuMDQgKGFlYiwgT2xhZiBIZXJpbmcsIEt1cnQgR2FybG9mZik6CgpvIFByb2dyYW1zOgogIC0gc2V0Zm9udCBldGM6IHN1cHBvcnQgZm9yIGZvbnQgd2lkdGhzIG90aGVyIHRoYW4gOAogIC0gbG9hZGtleXMueTogYWxzbyBsb29rIGF0IG1hYy9pbmNsdWRlCiAgLSBjcDEyNTAuc3ltcy5oOiBuZXcKICAtIHNldGxvZ2NvbnM6IG5ldwogIC0gY29udHJpYi9zaG93Zm9udDogbmV3CiAgLSBjb250cmliL3BzZnNwbGl0OiBuZXcKICAtIGNhZDogZG9uJ3QgY3JlYXRlIGEgdGVtcCBmaWxlCm8gRG9jdW1lbnRhdGlvbjoKICAtIE1pbm9yIGNoYW5nZXMgdG8ga2JkIEZBUS4gRXh0ZW5kZWQgc2NhbmNvZGUgRkFRLiBOZXcgQTIwIGRvY3MuCiAgLSBNaW5vciBjaGFuZ2VzIHRvIG1hbiBwYWdlcy4KbyBLZXltYXBzOgogIC0gTmV3IGtleW1hcCBpbmNsdWRlIGRpciBtYWMvaW5jbHVkZS4KICAtIEFkZGVkIGV1cm8xLm1hcCBhbmQgZXVybzIubWFwLgogIC0gQWRkZWQgc29tZSBjb21wb3NlIGRlZmluaXRpb25zIHRvIGNvbXBvc2UubGF0aW4gYW5kIGNvbXBvc2UubGF0aW4xLgogIC0gRGVsZXRlZCBiZS1sYXRpbjEubWFwIGFuZCByZW5hbWVkIGJlMi1sYXRpbjEubWFwIHRvIGJlLWxhdGluMS5tYXAuCiAgICBUaGVyZSBzZWVtcyB0byBiZSBjb25zZW5zdXMgdGhhdCBpdCBpcyBiZXR0ZXIgdGhhbiB0aGUgb3JpZ2luYWwKICAgIGJlLWxhdGluMS5tYXAuCiAgLSBSZW5hbWVkIGhlYnJldy5tYXAgdG8gaWwtcGhvbmV0aWMubWFwIGFuZCBhZGRlZCBpbC5tYXAuCiAgLSBBcHBsaWVkIGZpeCBmcm9tIEpvY2hlbiBIZWluIHRvIGRlLm1hcC4KICAtIEFwcGxpZWQgU3VTRSBmaXhlcyB0byBtYWMtZGUtbGF0aW4xLW5vZGVhZGtleXMubWFwLCB1cy5tYXAsIGRlKi5tYXAuCiAgLSBBZGRlZCBtYWMtYmUubWFwLCBtYWMtZGUtbGF0aW4xLm1hcCwgbWFjLWRlX0NILm1hcCwgbWFjLWRrLWxhdGluMS5tYXAsCiAgICBtYWMtZXMubWFwLCBtYWMtZmktbGF0aW4xLm1hcCwgbWFjLWZyLm1hcCwgbWFjLWZyX0NILWxhdGluMS5tYXAsCiAgICBtYWMtaXQubWFwLCBtYWMtcHQtbGF0aW4xLm1hcCwgbWFjLXNlLm1hcCwgbWFjLXVrLm1hcCwgbWFjLXVzLm1hcCwKICAgIGJyLWxhdGluMS1hYm50Mi5tYXAsIGJyLWxhdGluMS11cy5tYXAsIGN6Lm1hcCwgZGVfQ0gtbGF0aW4xLm1hcCwKICAgIG1rLm1hcCAocmVuYW1lZCB0aGUgb2xkIG9uZSB0byBtazAubWFwKSwgbWstY3AxMjUxLm1hcCwgbWstdXRmLm1hcCwKICAgIHJvX3dpbi5tYXAgYW5kIGN6LWNwMTI1MC5tYXAuCm8gVW5pbWFwczoKICAtIEFkZGVkIGNwMTI1MC51bmkuCm8gQ29uc29sZSB0cmFuc2xhdGlvbnM6CiAgLSBBZGRlZCBpc28wMl90b19jcDEyNTAudHJhbnMuCm8gRm9udHM6CiAgLSBBZGRlZCBjeWJlcmNhZmUuZm50LCBzdW4xMngyMi5wc2Z1LCBjcDEyNTAucHNmdSwKICAgIGNwODU3LjA4LCBjcDg1Ny4xNCwgY3A4NTcuMTYuCgpDaGFuZ2VzIGZvciAxLjAzIChhZWIpOgoKbyBBZGRlZCBkb2Mvc2NhbmNvZGVzLyogd2l0aCBpbmZvcm1hdGlvbiBvbiB0aGUgc2NhbmNvZGVzIHByb2R1Y2VkCiAgYnkgUEMga2V5Ym9hcmRzLgpvIEFkZGVkIGJ5Lm1hcC4KbyBBZGRlZCBVbmljb2RlIG1hcHMgdG8gR3JlZWsgZm9udHMuCgpDaGFuZ2VzIGZvciAxLjAwIChhZWIpOgoKbyBJbnRyb2R1Y2VkIHBzZjIgZm9udHMsIGFsbG93aW5nIG9uZSB0byBkZXNjcmliZSBhIGZvbnQgcG9zaXRpb24KICB3aXRoIGEgVW5pY29kZSBzZXF1ZW5jZSAoYmFzZSBjaGFyYWN0ZXIgd2l0aCBjb21iaW5pbmcgYWNjZW50cykuCm8gUmVvcmdhbml6ZWQgZm9udHM7IGFkZGVkIFVuaWNvZGUgdGFibGUgdG8gbW9zdCBvZiB0aGVtLgogIFRoZSBjb25zb2xlZm9udHMgZGlyZWN0b3J5IGdvdCBhIHN1YmRpcmVjdG9yeSBwYXJ0aWFsZm9udHMuCiAgVGhlIFVuaWNvZGUgbWFwcyBnb3QgYSBkaXJlY3Rvcnkgb2YgdGhlaXIgb3duLgpvIE1vdmVkIGtiZHJhdGUgZnJvbSB1dGlsLWxpbnV4IHRvIGhlcmUuCm8gQWRkZWQgLXMgKHNvcnQpIG9wdGlvbiB0byBnZXR1bmltYXAuYy4KbyBTZXRmb250IG5vdyBhY2NlcHRzIHNldmVyYWwgcHNmMiBmb250cywgZWFjaCBvZiBhcmJpdHJhcnkgbGVuZ3RoLgogIFNldGZvbnQgbm93IGFjY2VwdHMgY2VydGFpbiBjb2RlcGFnZSBmb250cy4KICBTZXRmb250IG5vdyBhY2NlcHRzIGEgdGV4dCBmaWxlIGNvbnRhaW5pbmcgYSBsaXN0IG9mIGZvbnRzIHRvIGxvYWQuCm8gTWFkZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIGtvaTgtciBhbmQga29pOC11LgpvIHNwYXduX2NvbnNvbGUgYW5kIHNwYXduX2xvZ2luIGludm9rZSBvcGVudnQsIG5vdCBvcGVuLgoKQ2hhbmdlcyBmb3IgMC45OCAoYWViKToKCm8gQWRkZWQgaW50ZXJuYXRpb25hbGl6YXRpb24gYW5kIER1dGNoIHRleHRzIChubC5wbykKCkNoYW5nZXMgZm9yIDAuOTYgKGFlYik6CgpvIEFkZGVkIGtleXdvcmRzIGxpa2Ugc3RyaW5nc19hc191c3VhbC4gQWRkZWQga2V5bWFwIGluY2x1ZGUgZmlsZXMuCm8gUmVvcmdhbml6ZWQga2V5bWFwIGRpcmVjdG9yeS4KbyBBZGRlZCBsb2FkaW5nIG9mIGNvbXByZXNzZWQgZm9udHMuCm8gQWRkZWQgaXNvLTg4NTktOSBoYW5kbGluZy4KbyBBZGRlZCAtYSBvcHRpb24gdG8gc2hvd2tleS4KCkNoYW5nZXMgZm9yIDAuOTQgKGFlYik6CgpvIEFkZGVkIGtleXdvcmQgYWx0X2lzX21ldGEuCgpDaGFuZ2VzIGZvciAwLjkxIChhZWIpOgoKbyBBZGRlZCBocGEncyBzZXRmb250IHBhdGNoLgoKQ2hhbmdlcyBmb3IgMC45MCAoYWViKToKCm8gQ2hhbmdlZCBzZXRmb250IHRvIHN1YnN1bWUgbWFwc2NybiBhbmQgZXNjYXBlIHNlcXVlbmNlLgpvIEFkZGVkIGhwYSdzIHBzZnRhYmxlIHN0dWZmLgpvIEFkZGVkIFVuaWNvZGUgc3R1ZmYgKHJlcXVpcmVzIGtlcm5lbCAxLjEuOTIgb3IgbGF0ZXIpLgoKQ2hhbmdlcyBmb3IgMC44OSAoYWViKToKCm8gU29tZSBtaW5vciB0aGluZ3MuCgpDaGFuZ2VzIGZvciAwLjg4IChhZWIpOgoKbyBBZGRlZCBkeW5hbWljIGtleW1hcCBzdXBwb3J0LiBBZGRlZCAia2V5bWFwcyIgZGlyZWN0aXZlLgpvIEFkZGVkIGR5bmFtaWMgY29uc29sZSBhbGxvY2F0aW9uLiBBZGRlZCBkaXNhbGxvYy4KbyBBZGRlZCByZXNpemUuCm8gQ2hhbmdlZCBMRUQgaGFuZGxpbmcuCm8gQWRkZWQgdGhlIGNvbnRyaWJ1dGVkIGNvZGVwYWdlLmMgKHRvIGV4dHJhY3QgY29kZXBhZ2VzIGZyb20gYQogIERPUyAuY3BpIGZpbGUpLgpvIE1hbnkgbWlub3IgY2hhbmdlcy4KCkNoYW5nZXMgZm9yIDAuODcgKGFlYik6CgpvIEFkZGVkIGlzby04ODU5LTggc3VwcG9ydC4gQWRkZWQgImNoYXJzZXQiIGRpcmVjdGl2ZS4KbyBDb3JyZWN0ZWQgYSB0eXBvIGluICJ0cml2aWFsIi4KbyBBZGRlZCBrYmRfbW9kZS4KbyBFeHRlbmRlZCBrYmQuRkFRLiBBZGRlZCBjb250cmlidXRlZCBrZXltYXBzIGFuZCBmb250cy4KCkNoYW5nZXMgZm9yIDAuODUtMC44NiAoYWViKToKCm8gTWlub3IgdGhpbmdzIG9ubHkuIEFkZGVkIGNvbnRyaWJ1dGVkIGtleW1hcHMgYW5kIGZvbnRzLgoKQ2hhbmdlcyBmb3IgMC44NCAoYWViKToKCm8gQWRkZWQgbW9yZSBjb21wb3NlIGtleSBzdXBwb3J0IHRvIGxvYWRrZXlzLgpvIFNldGZvbnQsIGxvYWRrZXlzIGFuZCBtYXBzY3JuIGxvb2sgYnkgZGVmYXVsdCBpbiAvdXNyL2xpYi9rYmQvKi4KbyBTZXRmb250IGNhbiByZWFkIGNvZGVwYWdlIGZvbnQgZmlsZXMgKGFuZCBzZWxlY3QgYSBmb250IGZyb20gdGhlbSkuCm8gTWFueSBtaW5vciBjaGFuZ2VzLgoKQ2hhbmdlcyBmb3IgMC44MyAoYWViKToKCm8gQWRkZWQgS1RfTEVUVEVSLCBzbyB0aGF0IENhcHNMb2NrIGNhbiB3b3JrIGNvcnJlY3RseS4KICBGb3IgdGhlIHRpbWUgYmVpbmcsIHRoaXMgaXMgZGVub3RlZCBieSBhIGxlYWRpbmcgKyBpbiB0aGUga2V5bWFwLgpvIEFkZGVkIHNldGZvbnQsIHNob3dmb250LCBtYXBzY3JuLgpvIEFkZGVkIHNldGxlZHMsIHNldG1ldGFtb2RlLgpvIFB1dCBkYXRhIGJ5IGRlZmF1bHQgaW4gdGhyZWUgc3ViZGlyZWN0b3JpZXMgb2YgL3Vzci9saWIva2JkLgoKQ2hhbmdlcyBmcm9tIHZlcnNpb24gMC44MSB0byB2ZXJzaW9uIDAuODIgKGFlYkBjd2kubmwpOgoKbyBNYWRlIG1rdGFibGUgYW4gb3B0aW9uIG9mIGxvYWRrZXlzLCBzbyB0aGF0IHRoZSBmaWxlIGRlZmtleW1hcC5jCiAgcHJvZHVjZWQgaXMgaW5kZXBlbmRlbnQgb2YgdGhlIGN1cnJlbnQga2VybmVsLCBhbmQgaW5kZXBlbmRlbnQgb2YKICB0aGUgY3VycmVudCBrZXlib2FyZCBzZXR0aW5ncy4gKFRoZSBvbGQgbWt0YWJsZSBwcm9ncmFtIGlzIG5vdwogIG9ic29sZXRlLikKbyBBZnRlciAgZHVtcGtleXMgPiB4OyBsb2Fka2V5cyB4OyBkdW1wa2V5cyA+IHkgIHRoZSBmaWxlcyB4IGFuZCB5CiAgc2hvdWxkIGJlIGlkZW50aWNhbC4gVGhleSB3ZXJlIG5vdC4gSSBob3BlIHRoZXkgYXJlIG5vdy4KbyBTaG93a2V5IG5vdyByZXN0b3JlcyB0aGUgb3JpZ2luYWwga2V5Ym9hcmQgbW9kZS4KbyBMb2Fka2V5cyBub3cgYWNjZXB0cyBxdW90ZXMgYW5kIGJhY2tzbGFzaGVzIGluIHN0cmluZ3MuCm8gQWRkZWQgY29tcG9zZSBrZXkgc3VwcG9ydC4KCkNoYW5nZXMgZnJvbSB2ZXJzaW9uIDAuOCB0byB2ZXJzaW9uIDAuODE6CgpvIFVwZGF0ZWQgYW5kIGZpeGVkIHRoZSBrZXl0YWJsZSBmaWxlcwpvIE1pbm9yIGFkZGl0aW9ucyB0byB0aGUgbG9hZGtleXMgbWFuIHBhZ2UKbyBBZGRlZCBzdXBwb3J0IGZvciBJU08gODg1OS17MiwzLDR9IGNoYXJhY3RlciBzeW1ib2xzLCB1cGRhdGVkCiAgZHVtcGtleXMgbWFuIHBhZ2UgYWNjb3JkaW5nbHkKCkNoYW5nZXMgZnJvbSB0aGUgcHJlcmVsZWFzZSB0byB2ZXJzaW9uIDAuODoKCm8gRW5oYW5jZWQgdGhlIHNob3J0aGFuZCBub3RhdGlvbiBga2V5Y29kZSB4eCA9IGEnLCB3aGVyZSBgYScgaXMgYW4KICBBU0NJSSBsZXR0ZXIgYW5kIGNoYW5nZWQgYGR1bXBrZXlzJyBhbmQgYGxvYWRrZXlzJyBhY2NvcmRpbmdseS4KICBOb3cgdGhpcyBlbnRyeSBkZWZpbmVzIHVzZWZ1bCB2YWx1ZXMgaW4gc2hpZnQrY29udHJvbCwgbWV0YStzaGlmdCwKICBtZXRhK2NvbnRyb2wgYW5kIG1ldGErY29udHJvbCtzaGlmdCBrZXl0YWJsZXMsIHRvby4gQWx0R3IgZW50cmllcwogIGFsc28gZGVmYXVsdCBub3cgdG8gdGhlIHZhbHVlIG9mIG5vbi1BbHRHciBlbnRyaWVzLgpvIEFkZGVkIHRoZSBwb3NzaWJpbGl0eSB0byBzcGxpdCBsb25nIGxpbmVzIGludG8gbXVsdGlwbGUgc2hvcnRlciBvbmVzCiAgYnkgYXBwZW5kaW5nIGEgYmFja3NsYXNoIGF0IHRoZSBlbmQgb2YgZWFjaCBwYXJ0aWFsIGxpbmUuCm8gQWRkZWQgYSB2ZXJzaW9uIG51bWJlciBhbmQgYSBzaG9ydCB1c2FnZSBtZXNzYWdlIHRvIGBkdW1wa2V5cycKbyBBZGRlZCB0aGUgb3B0aW9ucyAtLXNob3J0LWluZm8sIC0tbG9uZy1pbmZvIChyZXBsYWNlcyB0aGUgc3ltYm9sCiAgZHVtcCwgLXMpLCAtLW51bWVyaWMsIC0tZnVsbC10YWJsZSwgLS1mdW5jcy1vbmx5LCAtLWtleXMtb25seSB0bwogIGBkdW1wa2V5cycuIFNlZSBtYW5wYWdlIGZvciBtb3JlIGluZm8uCm8gQWRkZWQgYSB2ZXJzaW9uIG51bWJlciwgYSBzaG9ydCB1c2FnZSBtZXNzYWdlIGFuZCB0aGUgYWJpbGl0eSB0byBsb2FkCiAgbXVsdGlwbGUgbWFwIGZpbGVzIGF0IGEgdGltZSB0byBgbG9hZGtleXMnLgpvIEFkZGVkIHRoZSB1dGlsaXR5IGBta3RhYmxlJyB0byBnZW5lcmF0ZSB0aGUga2VybmVsIGRlZmF1bHQgYmluZGluZwogIHRhYmxlIGF1dG9tYXRpY2FsbHkgZnJvbSB0aGUgY3VycmVudGx5IGxvYWRlZCBrZXl0YWJsZS4KbyBBZGRlZCB0aGUgdXRpbGl0eSBgc2hvd2tleScgZm9yIGludGVyYWN0aXZlbHkgaW5zcGVjdGluZyB0aGUKICBzY2FuY29kZXMgYW5kIGtleWNvZGUgdmFsdWVzIHNlbnQgYnkga2V5IHByZXNzZXMgYW5kIHJlbGVhc2VzLgpvIEZpeGVkIHRoZSB2YWx1ZSBvZiBVbmNhcHNfU2hpZnQsIGVsaW1pbmF0ZWQgb2Jzb2xldGUgTWFwX3h4IHN5bWJvbHMKbyBBZGRlZCBNZXRhX0NvbnRyb2xfeHh4IHN5bWJvbHMuCm8gQWRkZWQgc3ltYm9scyBmb3IgbG9ja2luZyBtb2RpZmllcnMgKGtlcm5lbCAwLjk5cGwxMiBkb2Vzbid0IHN1cHBvcnQgdGhpcykKCg==