LyoKICogQ29weXJpZ2h0IDIwMDQgYnkgS3J6eXN6dG9mIEZvbHRtYW4KICogQ29weXJpZ2h0IDIwMDYgYnkgTWlrb2xhaiBaYWxld3NraQogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX1BPTElTSCwgU1VCTEFOR19ERUZBVUxUCgpJRE1fTUFJTk1FTlUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZQbGlrIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJk5vd3lcdEN0cmwrTiIsICAgICAgICAgICBJRF9GSUxFX05FVwogICAgICAgIE1FTlVJVEVNICImT3R383J6Li4uXHRDdHJsK08iLCAgICAgIElEX0ZJTEVfT1BFTgogICAgICAgIE1FTlVJVEVNICImWmFwaXN6XHRDdHJsK1MiLCAgICAgICAgIElEX0ZJTEVfU0FWRQogICAgICAgIE1FTlVJVEVNICJaJmFwaXN6IGpha28uLi4iLCAgICAgICAgIElEX0ZJTEVfU0FWRUFTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZQcmludCAuIC4gLlx0Q3RybCtQIiwgICAgSURfUFJJTlQKICAgICAgICBNRU5VSVRFTSAiUHJpbnQgcHJldmllJncgLiAuIC4iLCAgICBJRF9QUkVWSUVXCiAgICAgICAgTUVOVUlURU0gIlBhZyZlIHNldHVwIC4gLiAuIiwgICAgICAgSURfUFJJTlRTRVRVUAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJaYSZrb/FjeiIsICAgICAgICAgSURfRklMRV9FWElUCiAgICBFTkQKICAgIFBPUFVQICImRWR5Y2phIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkNvZm5palx0Q3RybCtaIiwgICAgICAgICAgICAgICBJRF9FRElUX1VORE8KICAgICAgICBNRU5VSVRFTSAiJlBvd3TzcnpcdEN0cmwrWSIsICAgICAgICAgICAgICAgSURfRURJVF9SRURPCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIld5JnRuaWpcdEN0cmwrWCIsICAgICAgICAgICAgICAgIElEX0VESVRfQ1VUCiAgICAgICAgTUVOVUlURU0gIiZLb3BpdWpcdEN0cmwrQyIsICAgICAgICAgICAgICAgSURfRURJVF9DT1BZCiAgICAgICAgTUVOVUlURU0gIldrbCZlalx0Q3RybCtWIiwgICAgICAgICAgICAgICAgSURfRURJVF9QQVNURQogICAgICAgIE1FTlVJVEVNICImVXN18Vx0RGVsIiwgICAgICAgICAgICAgICAgICAgIElEX0VESVRfQ0xFQVIKICAgICAgICBNRU5VSVRFTSAiJlphem5hY3ogd3N6eXN0a29cdEN0cmwrQSIsICAgICAgICAgSURfRURJVF9TRUxFQ1RBTEwKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkZpbmQgLiAuIC5cdENydGwrRiIsICAgICAgICAgICBJRF9GSU5ECiAgICAgICAgTUVOVUlURU0gIkZpbmQgJm5leHRcdEYzIiwgICAgICAgICAgICAgICAgSURfRklORF9ORVhUCiAgICAgICAgTUVOVUlURU0gIiZSZXBsYWNlIC4gLiAuXHRDdHJsK0giLCAgICAgICAgSURfUkVQTEFDRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJUeWxrbyBkbyAmb2Rjenl0dSIsICAgICAgICAgICAgICAgICAgSURfRURJVF9SRUFET05MWQogICAgICAgIE1FTlVJVEVNICImWm1vZGlmeWtvd2FueSIsICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZJRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBQT1BVUCAiJkRvZGF0a2kiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIlphem5hY3plbmllIC0gJmluZm8iLCAgICAgICAgICAgICBJRF9FRElUX1NFTEVDVElPTklORk8KICAgICAgICAgICAgTUVOVUlURU0gIiZGb3JtYXQgem5ha/N3IiwgICAgICAgICAgIElEX0VESVRfQ0hBUkZPUk1BVAogICAgICAgICAgICBNRU5VSVRFTSAiJlN0YW5kYXJkb3d5IGZvcm1hdCB6bmFr83ciLCAgICAgICAgICAgSURfRURJVF9ERUZDSEFSRk9STUFUCiAgICAgICAgICAgIE1FTlVJVEVNICJGb3JtYXQgYWthJnBpdHUiLCAgICAgICAgICAgSURfRURJVF9QQVJBRk9STUFUCiAgICAgICAgICAgIE1FTlVJVEVNICImUG9iaWW/IHRla3N0IiwgICAgICAgICAgICAgICAgICAgSURfRURJVF9HRVRURVhUCiAgICAgICAgRU5ECiAgICBFTkQKICAgIFBPUFVQICImVmlldyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZUb29sYmFyIiwgICAgICAgIElEX1RPR0dMRV9UT09MQkFSCiAgICAgICAgTUVOVUlURU0gIiZGb3JtYXRiYXIiLCAgICAgIElEX1RPR0dMRV9GT1JNQVRCQVIKICAgICAgICBNRU5VSVRFTSAiJlN0YXR1c2JhciIsICAgICAgSURfVE9HR0xFX1NUQVRVU0JBUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImT3B0aW9ucyAuIC4gLiIsICBJRF9WSUVXUFJPUEVSVElFUwogICAgRU5ECiAgICBQT1BVUCAiJkluc2VydCIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZEYXRlIGFuZCB0aW1lIC4gLiAuIiwgIElEX0RBVEVUSU1FCiAgICBFTkQKICAgIFBPUFVQICJGJm9ybWF0IgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkZvbnQgLiAuIC4iLCAgICAgICAgICAgICAgICAgIElEX0ZPTlRTRVRUSU5HUwogICAgICAgIE1FTlVJVEVNICImQnVsbGV0IHBvaW50cyIgICAgICAgICAgICAgICAgSURfQlVMTEVUCiAgICAgICAgTUVOVUlURU0gIiZQYXJhZ3JhcGggLiAuIC4iICAgICAgICAgICAgICBJRF9QQVJBRk9STUFUCiAgICAgICAgTUVOVUlURU0gIlRhYiZzIC4gLiAuIiAgICAgICAgICAgICAgICAgICBJRF9UQUJTVE9QUwogICAgICAgIFBPUFVQICImVLNvIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImU3lzdGVtXHRDdHJsKzEiLCAgICAgICAgIElEX0JBQ0tfMQogICAgICAgICAgICBNRU5VSVRFTSAiJlBvc3RUaGF0ICi/87N0eSlcdEN0cmwrMiIsICAgICAgICAgICBJRF9CQUNLXzIKICAgICAgICBFTkQKICAgIEVORAogICAgUE9QVVAgIiZIZWxwIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkFib3V0IFdpbmUgV29yZHBhZCIgICAgICAgSURfQUJPVVQKICAgIEVORApFTkQKCklETV9QT1BVUCBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiV3kmdG5paiIsICAgICAgICAgICAgICBJRF9FRElUX0NVVAogICAgICAgIE1FTlVJVEVNICImS29waXVqIiwgICAgICAgICAgICAgIElEX0VESVRfQ09QWQogICAgICAgIE1FTlVJVEVNICJXa2wmZWoiLCAgICAgICAgICAgICAgIElEX0VESVRfUEFTVEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkJ1bGxldCBwb2ludHMiICAgICAgICBJRF9CVUxMRVQKICAgICAgICBNRU5VSVRFTSAiJlBhcmFncmFwaCAuIC4gLiIgICAgICBJRF9QQVJBRk9STUFUCiAgICBFTkQKRU5ECgpJRERfREFURVRJTUUgRElBTE9HIERJU0NBUkRBQkxFIDMwLCAyMCwgMTMwLCA4MApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRGF0ZSBhbmQgdGltZSIKRk9OVCAxMCwgIk1TIFNhbnMgU2VyaWYiCkJFR0lOCiAgICBMVEVYVCAgICAgICAgIkF2YWlsYWJsZSBmb3JtYXRzIiwwLDMsMiwxMDAsMTUKICAgIExJU1RCT1ggICAgICBJRENfREFURVRJTUUsMywxMiw4MCw2NSxMQlNfTk9JTlRFR1JBTEhFSUdIVAogICAgUFVTSEJVVFRPTiAgICImT0siLElET0ssODcsMTIsNDAsMTIKICAgIFBVU0hCVVRUT04gICAiJkNhbmNlbCIsSURDQU5DRUwsODcsMjYsNDAsMTIKRU5ECgpJRERfTkVXRklMRSBESUFMT0cgRElTQ0FSREFCTEUgMzAsIDIwLCAxNDAsIDgwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJOZXciCkZPTlQgMTAsICJNUyBTYW5zIFNlcmlmIgpCRUdJTgogICAgTFRFWFQgICAgICAgICJOZXcgZG9jdW1lbnQgdHlwZSIsMCwzLDIsMTAwLDE1CiAgICBMSVNUQk9YICAgICAgSURDX05FV0ZJTEUsMywxMiw5MCw2NSxMQlNfTk9JTlRFR1JBTEhFSUdIVAogICAgUFVTSEJVVFRPTiAgICImT0siLElET0ssOTcsMTIsNDAsMTIKICAgIFBVU0hCVVRUT04gICAiJkNhbmNlbCIsSURDQU5DRUwsOTcsMjYsNDAsMTIKRU5ECgpJRERfUEFSQUZPUk1BVCBESUFMT0cgRElTQ0FSREFCTEUgMzAsIDIwLCAyMDAsIDExMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ2FwdGlvbiAiUGFyYWdyYXBoIGZvcm1hdCIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggIkluZGVudGF0aW9uIiwgMCwgMTAsIDEwLCAxMjAsIDY4CiAgICBMVEVYVCAiTGVmdCIsIDAsIDE1LCAyMiwgNDAsIDEzCiAgICBFRElUVEVYVCBJRENfUEFSQV9MRUZULCA1NSwgMjAsIDYwLCAxMwogICAgTFRFWFQgIlJpZ2h0IiwgMCwgMTUsIDQwLCA0MCwgMTMKICAgIEVESVRURVhUIElEQ19QQVJBX1JJR0hULCA1NSwgMzgsIDYwLCAxMwogICAgTFRFWFQgIkZpcnN0IGxpbmUiLCAwLCAxNSwgNTgsIDQwLCAxMwogICAgRURJVFRFWFQgSURDX1BBUkFfRklSU1QsIDU1LCA1NiwgNjAsIDEzCiAgICBMVEVYVCAiQWxpZ25tZW50IiwgMCwgMTUsIDg3LCA0MCwgMTMKICAgIENPTUJPQk9YIElEQ19QQVJBX0FMSUdOLCA1NSwgODUsIDYwLCAxMywgQ0JTX0RST1BET1dOTElTVAogICAgUFVTSEJVVFRPTiAiJk9LIiwgSURPSywgMTM3LCAxNSwgNTAsIDE1CiAgICBQVVNIQlVUVE9OICImQ2FuY2VsIiwgSURDQU5DRUwsIDEzNywgMzMsIDUwLCAxNQpFTkQKCklERF9UQUJTVE9QUyBESUFMT0cgRElTQ0FSREFCTEUgMzAsIDIwLCAyMDAsIDExMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ2FwdGlvbiAiVGFicyIKRk9OVCA4LCAiTVMgU0hlbGwgRExnIgpCRUdJTgogICAgR1JPVVBCT1ggIlRhYiBzdG9wcyIsIDAsIDEwLCAxMCwgMTIwLCA5MAogICAgQ09NQk9CT1ggSURDX1RBQlNUT1BTLCAyMCwgMjAsIDEwMCwgNjAsIENCU19TSU1QTEUgfCBDQlNfU09SVAogICAgREVGUFVTSEJVVFRPTiAiJkFkZCIsIElEX1RBQl9BREQsIDIwLCA4MCwgNDUsIDE1CiAgICBQVVNIQlVUVE9OICImUmVtb3ZlIiwgSURfVEFCX0RFTCwgNzIsIDgwLCA0NSwgMTUKICAgIFBVU0hCVVRUT04gIiZPSyIsIElET0ssIDEzNywgMTUsIDUwLCAxNQogICAgUFVTSEJVVFRPTiAiJkNhbmNlbCIsIElEQ0FOQ0VMLCAxMzcsIDMzLCA1MCwgMTUKICAgIFBVU0hCVVRUT04gIlJlbW92ZSBhbCZsIiwgSURfVEFCX0VNUFRZLCAxMzcsIDUxLCA1MCwgMTUKRU5ECgpJRERfRk9STUFUT1BUUyBESUFMT0cgRElTQ0FSREFCTEUgMCwgMCwgMjgwLCAxMTAKU1RZTEUgRFNfU1lTTU9EQUwKQ2FwdGlvbiAiIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAiTGluZSB3cmFwcGluZyIsIDAsIDEwLCAxMCwgMTMwLCA4NQogICAgUkFESU9CVVRUT04gIldyYXAgdGV4dCBieSB0aGUgJndpbmRvdyBib3JkZXIiLCBJRENfUEFHRUZNVF9XVywgMTgsIDI1LCAxMTcsIDE1CiAgICBSQURJT0JVVFRPTiAiV3JhcCB0ZXh0IGJ5IHRoZSAmbWFyZ2luIiwgSURDX1BBR0VGTVRfV00sIDE4LCA0NSwgMTE3LCAxNQogICAgR1JPVVBCT1ggIlRvb2xiYXJzIiwgMCwgMTUwLCAxMCwgMTIwLCA4NQogICAgQ0hFQ0tCT1ggIiZUb29sYmFyIiwgSURDX1BBR0VGTVRfVEIsIDE2MCwgMjAsIDgwLCAxNQogICAgQ0hFQ0tCT1ggIiZGb3JtYXRiYXIiLCBJRENfUEFHRUZNVF9GQiwgMTYwLCAzOCwgODAsIDE1CiAgICBDSEVDS0JPWCAiJlN0YXR1c2JhciIsIElEQ19QQUdFRk1UX1NCLCAxNjAsIDU2LCA4MCwgMTUKICAgIExURVhUICIiLCBJRENfUEFHRUZNVF9JRCwgMCwwLDAsMApFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBTVFJJTkdfUklDSFRFWFRfRklMRVNfUlRGLCAgICAgIlRla3N0IHNmb3JtYXRvd2FueSAtIFJURiAoKi5ydGYpIgogICAgU1RSSU5HX1RFWFRfRklMRVNfVFhULCAgICAgICAgICJEb2t1bWVudCB0ZWtzdG93eSAoKi50eHQpIgogICAgU1RSSU5HX1RFWFRfRklMRVNfVU5JQ09ERV9UWFQsICJVbmljb2RlIHRleHQgZG9jdW1lbnQgKCoudHh0KSIKICAgIFNUUklOR19BTExfRklMRVMsICAgICAgICAgICAgICAiV3N6eXN0a2llIGRva3VtZW50eSAoKi4qKSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgU1RSSU5HX0FMSUdOX0xFRlQsICAgICAgICAgICAgIkxlZnQiCiAgICBTVFJJTkdfQUxJR05fUklHSFQsICAgICAgICAgICAiUmlnaHQiCiAgICBTVFJJTkdfQUxJR05fQ0VOVEVSLCAgICAgICAgICAiQ2VudGVyIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBTVFJJTkdfTkVXRklMRV9SSUNIVEVYVCwgICAgICJSaWNoIHRleHQgZG9jdW1lbnQiCiAgICBTVFJJTkdfTkVXRklMRV9UWFQsICAgICAgICAgICJUZXh0IGRvY3VtZW50IgogICAgU1RSSU5HX05FV0ZJTEVfVFhUX1VOSUNPREUsICAiVW5pY29kZSB0ZXh0IGRvY3VtZW50IgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBTVFJJTkdfUFJJTlRFUl9GSUxFU19QUk4sICAgICAgICAiUHJpbnRlciBmaWxlcyAoKi5QUk4pIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBTVFJJTkdfVklFV1BST1BTX1RJVExFLCAgICAgICAgICAiT3B0aW9ucyIKICAgIFNUUklOR19WSUVXUFJPUFNfVEVYVCwgICAgICAgICAgICJUZXh0IgogICAgU1RSSU5HX1ZJRVdQUk9QU19SSUNIVEVYVCwgICAgICAgIlJpY2ggdGV4dCIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgU1RSSU5HX1BSRVZJRVdfUFJJTlQsICAgICAgICAgICAgIlByaW50IgogICAgU1RSSU5HX1BSRVZJRVdfTkVYVFBBR0UsICAgICAgICAgIk5leHQgcGFnZSIKICAgIFNUUklOR19QUkVWSUVXX1BSRVZQQUdFLCAgICAgICAgICJQcmV2aW91cyBwYWdlIgogICAgU1RSSU5HX1BSRVZJRVdfQ0xPU0UsICAgICAgICAgICAgIkNsb3NlIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBTVFJJTkdfVU5JVFNfQ00sICAgICAgICAgICAgICJjbSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgU1RSSU5HX0RFRkFVTFRfRklMRU5BTUUsICAgICAiRG9jdW1lbnQiCiAgICBTVFJJTkdfUFJPTVBUX1NBVkVfQ0hBTkdFUywgICJTYXZlIGNoYW5nZXMgdG8gJyVzJz8iCiAgICBTVFJJTkdfU0VBUkNIX0ZJTklTSEVELCAgICAgICJGaW5pc2hlZCBzZWFyY2hpbmcgdGhlIGRvY3VtZW50LiIKICAgIFNUUklOR19MT0FEX1JJQ0hFRF9GQUlMRUQsICAgIkZhaWxlZCB0byBsb2FkIHRoZSBSaWNoRWRpdCBsaWJyYXJ5LiIKICAgIFNUUklOR19TQVZFX0xPU0VGT1JNQVRUSU5HLCAgIllvdSBoYXZlIGNob3NlbiB0byBzYXZlIGluIHBsYWluIHRleHQgZm9ybWF0LCAiIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndoaWNoIHdpbGwgY2F1c2UgYWxsIGZvcm1hdHRpbmcgdG8gYmUgbG9zdC4gIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmUgeW91IHN1cmUgdGhhdCB5b3Ugd2lzaCB0byBkbyB0aGlzPyIKICAgIFNUUklOR19JTlZBTElEX05VTUJFUiwgICAgICAgIkludmFsaWQgbnVtYmVyIGZvcm1hdCIKICAgIFNUUklOR19PTEVfU1RPUkFHRV9OT1RfU1VQUE9SVEVELCAiT0xFIHN0b3JhZ2UgZG9jdW1lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIgpFTkQK