<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>22843</bug_id>
          
          <creation_ts>2008-12-13 04:38:57 -0800</creation_ts>
          <short_desc>Auto-generate JSWorkerContext</short_desc>
          <delta_ts>2008-12-14 01:55:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>102430</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-13 04:38:57 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102431</commentid>
    <comment_count>1</comment_count>
      <attachid>25998</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-13 04:47:15 -0800</bug_when>
    <thetext>Created attachment 25998
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102446</commentid>
    <comment_count>2</comment_count>
      <attachid>25998</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-13 11:30:25 -0800</bug_when>
    <thetext>Comment on attachment 25998
proposed patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102485</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-14 01:55:44 -0800</bug_when>
    <thetext>Committed revision 39289.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25998</attachid>
            <date>2008-12-13 04:47:15 -0800</date>
            <delta_ts>2008-12-13 11:30:25 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>AutogenerateWorkerContext.txt</filename>
            <type>text/plain</type>
            <size>83130</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTI3MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMDgtMTItMTMgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg0MworICAgICAgICBB
dXRvLWdlbmVyYXRlIEpTV29ya2VyQ29udGV4dAorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogZG9tL1dvcmtlckNvbnRleHQuaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgIEFkZGVkIEV4dGVu
ZHNET01HbG9iYWxPYmplY3QsIGEgbmV3IGF0dHJpYnV0ZSBmb3IgYmVoYXZpb3JzIGNvbW1vbiB0
byBET01XaW5kb3cgYW5kCisgICAgICAgIFdvcmtlckNvbnRleHQuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICBNYWRlIEpTV29ya2Vy
Q29udGV4dCBjcmVhdGlvbiBsb29rIG1vcmUgbGlrZSBKU0RPTVdpbmRvdyBjcmVhdGlvbiwgdG8g
d29yayB3aXRoIGdlbmVyYXRlZCBjb2RlLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAg
ICAgICAgKiBXZWJDb3JlLnNjb25zOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHQuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dC5oOiBSZW1vdmVkLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwOiBDb3BpZWQgZnJvbSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtl
ckNvbnRleHRCYXNlOjpKU1dvcmtlckNvbnRleHRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
V29ya2VyQ29udGV4dEJhc2U6On5KU1dvcmtlckNvbnRleHRCYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV29ya2VyQ29udGV4dEJhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0SlNXb3JrZXJDb250ZXh0QmFzZVRhYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHRCYXNlOjpwdXQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuaDogQ29waWVkIGZyb20gV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHQuaC4KKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpT
V29ya2VyQ29udGV4dDo6Y3VzdG9tR2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV29ya2VyQ29udGV4dDo6bWFyayk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNv
bnRleHQ6OnNlbGYpOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0OjpzZXRTZWxm
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dDo6YWRkRXZlbnRMaXN0ZW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIp
OgorICAgICAgICBNb3ZlZCBjb2RlIGFyb3VuZC4gTm90ZSB0aGF0IGN1cnJlbnRseSwgSlNXb3Jr
ZXJDb250ZXh0QmFzZSBsb29rdXAgdGFibGUgaXMgZW1wdHksIGJ1dCB3ZSdsbAorICAgICAgICBu
ZWVkIHRvIGFkZCBzb21lIGdsb2JhbCBvYmplY3RzIHRvIGl0IGluIHRoZSBmdXR1cmUsIGFzIGl0
IGlzIGRvbmUgaW4gSlNET01XaW5kb3dCYXNlLgorCisgICAgICAgICogcGFnZS9Xb3JrZXJOYXZp
Z2F0b3IuY3BwOgorICAgICAgICAqIHBhZ2UvV29ya2VyTmF2aWdhdG9yLmg6CisgICAgICAgIEFk
ZGVkIEVOQUJMRShXT1JLRVJTKSBpZmRlZnMuCisKIDIwMDgtMTItMTIgIEJyZW50IEZ1bGdoYW0g
IDxiZnVsZ2hhbUBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQu
CkluZGV4OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAzOTI3MSkKKysrIFdlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMzYwLDYgKzM2MCw3IEBAIERPTV9DTEFT
U0VTID0gXAogICAgIFdlYktpdFRyYW5zaXRpb25FdmVudCBcCiAgICAgV2hlZWxFdmVudCBcCiAg
ICAgV29ya2VyIFwKKyAgICBXb3JrZXJDb250ZXh0IFwKICAgICBXb3JrZXJMb2NhdGlvbiBcCiAg
ICAgV29ya2VyTmF2aWdhdG9yIFwKICAgICBYTUxIdHRwUmVxdWVzdCBcCkBAIC0zODIsNyArMzgz
LDcgQEAgYWxsIDogXAogICAgIFwKICAgICBKU0RPTVdpbmRvd0Jhc2UubHV0LmggXAogICAgIEpT
UkdCQ29sb3IubHV0LmggXAotICAgIEpTV29ya2VyQ29udGV4dC5sdXQuaCBcCisgICAgSlNXb3Jr
ZXJDb250ZXh0QmFzZS5sdXQuaCBcCiAgICAgXAogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5o
IFwKICAgICBcCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDM5MjcxKQorKysgV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw3IEBAIElETF9CSU5ESU5HUyAr
PSBcCiAJV2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmlkbCBcCiAJV2ViQ29yZS9k
b20vV2hlZWxFdmVudC5pZGwgXAogCVdlYkNvcmUvZG9tL1dvcmtlci5pZGwgXAorCVdlYkNvcmUv
ZG9tL1dvcmtlckNvbnRleHQuaWRsIFwKIAlXZWJDb3JlL2RvbS9Xb3JrZXJMb2NhdGlvbi5pZGwg
XAogCVdlYkNvcmUvaHRtbC9DYW52YXNHcmFkaWVudC5pZGwgXAogCVdlYkNvcmUvaHRtbC9DYW52
YXNQYXR0ZXJuLmlkbCBcCkBAIC0yMTMxLDEzICsyMTMyLDE0IEBAIHdlYmNvcmVfY3BwZmxhZ3Mg
Kz0gXAogCS1ERU5BQkxFX1dPUktFUlM9MQogCiB3ZWJjb3JlX2J1aWx0X25vc291cmNlcyArPSBc
Ci0JV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHQubHV0LmgKKwlXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UubHV0LmgKIAogd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29uc3RydWN0b3IuY3BwIFwKIAlXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29uc3RydWN0b3IuaCBcCi0JV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckNvbnRleHQuY3BwIFwKLQlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
Q29udGV4dC5oIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3Bw
IFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuaCBcCisJV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiAzOTI3MSkKKysrIFdlYkNvcmUvV2ViQ29yZS5w
cm8JKHdvcmtpbmcgY29weSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBTVFlMRVNIRUVUU19FTUJFRCA9
ICQkUFdEL2Nzcy9odG1sNC5jc3MKIERPTUxVVF9GSUxFUyArPSBcCiAgICAgYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNSR0JDb2xvci5jcHAgXAot
ICAgIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dC5jcHAKKyAgICBiaW5kaW5ncy9qcy9KU1dv
cmtlckNvbnRleHRCYXNlLmNwcAogCiBJRExfQklORElOR1MgKz0gXAogICAgIGNzcy9Db3VudGVy
LmlkbCBcCkBAIC0yNzMsNiArMjczLDcgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBkb20vV2Vi
S2l0VHJhbnNpdGlvbkV2ZW50LmlkbCBcCiAgICAgZG9tL1doZWVsRXZlbnQuaWRsIFwKICAgICBk
b20vV29ya2VyLmlkbCBcCisgICAgZG9tL1dvcmtlckNvbnRleHQuaWRsIFwKICAgICBkb20vV29y
a2VyTG9jYXRpb24uaWRsIFwKICAgICBodG1sL0NhbnZhc0dyYWRpZW50LmlkbCBcCiAgICAgaHRt
bC9DYW52YXNQYXR0ZXJuLmlkbCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuc2NvbnMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnNjb25zCShyZXZpc2lvbiAzOTI3MSkKKysrIFdlYkNv
cmUvV2ViQ29yZS5zY29ucwkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNiBAQCBzb3VyY2Vz
Wydkb20nXSA9IFsKICAgICAnZG9tL0NvbW1lbnQuY3BwJywKICAgICAnZG9tL0NvbnRhaW5lck5v
ZGUuY3BwJywKICAgICAnZG9tL0NTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0aW9uLmNwcCcsCi0g
ICAgJ2RvbS9EZWRpY2F0ZWRXb3JrZXIuY3BwJywKICAgICAnZG9tL0RvY3VtZW50LmNwcCcsCiAg
ICAgJ2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcCcsCiAgICAgJ2RvbS9Eb2N1bWVudFR5cGUuY3Bw
JywKQEAgLTEzNCw2ICsxMzMsOSBAQCBzb3VyY2VzWydkb20nXSA9IFsKICAgICAnZG9tL1dlYktp
dEFuaW1hdGlvbkV2ZW50LmNwcCcsCiAgICAgJ2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3Bw
JywKICAgICAnZG9tL1doZWVsRXZlbnQuY3BwJywKKyAgICAnZG9tL1dvcmtlci5jcHAnLAorICAg
ICdkb20vV29ya2VyQ29udGV4dC5jcHAnLAorICAgICdkb20vV29ya2VyTG9jYXRpb24uY3BwJywK
ICAgICAnZG9tL1hNTFRva2VuaXplci5jcHAnLAogICAgICdkb20vWE1MVG9rZW5pemVyTGlieG1s
Mi5jcHAnLAogXQpAQCAtMzg3LDYgKzM4OSw3IEBAIHNvdXJjZXNbJ3BhZ2UnXSA9IFsKICAgICAn
cGFnZS9TZWN1cml0eU9yaWdpbi5jcHAnLAogICAgICdwYWdlL1NldHRpbmdzLmNwcCcsCiAgICAg
J3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwJywKKyAgICAncGFnZS9Xb3JrZXJOYXZpZ2F0b3IuY3Bw
JywKIF0KIHNvdXJjZXNbJ3BhZ2UvYW5pbWF0aW9uJ10gPSBbCiAgICAgJ3BhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkJhc2UuY3BwJywKQEAgLTY3Myw3ICs2NzYsOCBAQCBzb3VyY2VzWydiaW5kaW5n
cy9qcyddID0gWwogICAgICJiaW5kaW5ncy9qcy9KU1RleHRDdXN0b20uY3BwIiwKICAgICAiYmlu
ZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCIsCiAgICAgImJpbmRpbmdzL2pzL0pTV29y
a2VyQ29uc3RydWN0b3IuY3BwIiwKLSAgICAiYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0LmNw
cCIsCisgICAgImJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwIiwKKyAgICAiYmlu
ZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCIsCiAgICAgImJpbmRpbmdzL2pzL0pT
V29ya2VyQ3VzdG9tLmNwcCIsCiAgICAgImJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDb25z
dHJ1Y3Rvci5jcHAiLAogICAgICJiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNw
cCIsCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDM5
MjcxKQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBj
b3B5KQpAQCAtMTc0NCw3ICsxNzQ0LDE1IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8Rmls
ZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViQ29yZVxEZXJp
dmVkU291cmNlc1xKU1dvcmtlckNvbnRleHQubHV0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iJChX
ZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpTV29ya2VyQ29udGV4
dC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRo
PSIkKFdlYktpdE91dHB1dERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNXb3JrZXJD
b250ZXh0LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQ
YXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNXb3Jr
ZXJDb250ZXh0QmFzZS5sdXQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KQEAg
LTEzOTg5LDExICsxMzk5NywxOSBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUN
Ci0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNXb3JrZXJDb250ZXh0LmNwcCIN
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNXb3JrZXJDb250ZXh0QmFzZS5j
cHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cYmluZGluZ3NcanNcSlNXb3JrZXJDb250ZXh0QmFzZS5oIg0KKwkJCQkJPg0KKwkJCQk8
L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpT
V29ya2VyQ29udGV4dEN1c3RvbS5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZp
bGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNXb3JrZXJDb250ZXh0Lmgi
DQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTV29ya2VyQ29udGV4dEN1c3Rv
bS5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQpJbmRleDogV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDM5MjcxKQorKysgV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTQyMzMsNiArNDIzMywxMSBAQAogCQlFMTdBNEExQjBEOTc5OTFEMDBGQzEwQzYgLyogRE9NU1ZH
QWx0R2x5cGhFbGVtZW50LmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUFBNkJBQzBEOTc0QTAwMDAwNTQxQUUgLyogRE9NU1ZH
QWx0R2x5cGhFbGVtZW50LmggKi87IH07CiAJCUUxN0E0QTFDMEQ5Nzk5MUQwMEZDMTBDNiAvKiBE
T01TVkdBbHRHbHlwaEVsZW1lbnRJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBQTZCQUUwRDk3NEEwMDAwMDU0
MUFFIC8qIERPTVNWR0FsdEdseXBoRWxlbWVudEludGVybmFsLmggKi87IH07CiAJCUUxODI1MDRG
MEVEMkYyMDIwMDQ5OUE4RiAvKiBGcmFtZUxvYWRlckNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTgyNTA0RTBFRDJGMjAyMDA0OTlBOEYg
LyogRnJhbWVMb2FkZXJDbGllbnQuY3BwICovOyB9OworCQlFMTgyNTY1MDBFRjJBQ0U2MDA5MzMy
NDIgLyogV29ya2VyQ29udGV4dC5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxODI1NjRGMEVGMkFDRTYwMDkzMzI0MiAvKiBXb3JrZXJDb250ZXh0
LmlkbCAqLzsgfTsKKwkJRTE4MjU2OEYwRUYyQjAyRDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTgy
NTY4RDBFRjJCMDJEMDA5MzMyNDIgLyogSlNXb3JrZXJDb250ZXh0LmNwcCAqLzsgfTsKKwkJRTE4
MjU2OTAwRUYyQjAyRDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4MjU2OEUwRUYyQjAyRDAwOTMzMjQy
IC8qIEpTV29ya2VyQ29udGV4dC5oICovOyB9OworCQlFMTgyNThBQzBFRjNDRDcwMDA5MzMyNDIg
LyogSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxODI1OEFCMEVGM0NENzAwMDkzMzI0MiAvKiBKU1dvcmtlckNv
bnRleHRDdXN0b20uY3BwICovOyB9OworCQlFMTgyNTlFNzBFRjNFMzRCMDA5MzMyNDIgLyogSlNX
b3JrZXJDb250ZXh0QmFzZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxODI1OUU2MEVGM0UzNEIwMDkzMzI0MiAvKiBKU1dvcmtlckNvbnRleHRC
YXNlLmx1dC5oICovOyB9OwogCQlFMUEzMDJCQzBERTgzNzAzMDBDNTJGMkMgLyogU3RyaW5nQnVp
bGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFB
MzAyQkIwREU4MzcwMzAwQzUyRjJDIC8qIFN0cmluZ0J1aWxkZXIuaCAqLzsgfTsKIAkJRTFBMzAy
QzEwREU4Mzc2OTAwQzUyRjJDIC8qIFN0cmluZ0J1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBMzAyQzAwREU4Mzc2OTAwQzUyRjJDIC8q
IFN0cmluZ0J1aWxkZXIuY3BwICovOyB9OwogCQlFMUE1Rjk5QjBFN0VBQTI1MDBBRjg1RUEgLyog
SlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMUE1Rjk5QTBFN0VBQTI1MDBBRjg1RUEgLyogSlNNZXNzYWdlQ2hh
bm5lbEN1c3RvbS5jcHAgKi87IH07CkBAIC00MjYxLDggKzQyNjYsOCBAQAogCQlFMUMzNjMwNjBF
QUYyRDA3MDA3NDEwQkMgLyogV29ya2VyTG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDMzYzMDUwRUFGMkQwNzAwNzQxMEJDIC8qIFdv
cmtlckxvY2F0aW9uLmNwcCAqLzsgfTsKIAkJRTFDMzZDMDMwRUIwNzZENjAwNzQxMEJDIC8qIEpT
RE9NR2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUMzNkMwMjBFQjA3NkQ2MDA3NDEwQkMgLyogSlNET01HbG9iYWxPYmplY3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUMzNkNC
RDBFQjA4MDYyMDA3NDEwQkMgLyogSlNET01HbG9iYWxPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDMzZDQkMwRUIwODA2MjAwNzQxMEJD
IC8qIEpTRE9NR2xvYmFsT2JqZWN0LmNwcCAqLzsgfTsKLQkJRTFDMzZEMzQwRUIwQTA5NDAwNzQx
MEJDIC8qIEpTV29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMUMzNkQzMjBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJDb250
ZXh0LmNwcCAqLzsgfTsKLQkJRTFDMzZEMzUwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2VyQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFD
MzZEMzMwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2VyQ29udGV4dC5oICovOyB9OworCQlFMUMz
NkQzNDBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUMzNkQzMjBFQjBBMDk0MDA3
NDEwQkMgLyogSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAgKi87IH07CisJCUUxQzM2RDM1MEVCMEEw
OTQwMDc0MTBCQyAvKiBKU1dvcmtlckNvbnRleHRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUMzNkQzMzBFQjBBMDk0MDA3NDEwQkMgLyogSlNX
b3JrZXJDb250ZXh0QmFzZS5oICovOyB9OwogCQlFMUM0REU2OTBFQTc1QzFFMDAyM0NDRDYgLyog
QWN0aXZlRE9NT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUM0REU2ODBFQTc1QzFFMDAyM0NDRDYgLyogQWN0aXZlRE9NT2JqZWN0LmggKi87
IH07CiAJCUUxQzRERTZFMEVBNzVDNjUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDNERFNkQwRUE3
NUM2NTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5jcHAgKi87IH07CiAJCUUxQzhCRTVEMEU4
QkQxNUEwMDY0Q0I3RCAvKiBKU1dvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMUM4QkU1QzBFOEJEMTVBMDA2NENCN0QgLyogSlNXb3JrZXIu
Y3BwICovOyB9OwpAQCAtODk0Niw2ICs4OTUxLDExIEBACiAJCUUxNDc5OUE2MEVDREUzQTQwMDI5
MkJGMyAvKiBXb3JrZXJNZXNzYWdpbmdQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXb3JrZXJNZXNzYWdpbmdQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMTQ3OTlCMzBFQ0RFOUQ4MDAyOTJCRjMgLyogV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTgyNTA0RTBFRDJGMjAyMDA0
OTlBOEYgLyogRnJhbWVMb2FkZXJDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRnJhbWVMb2FkZXJDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMTgyNTY0RjBFRjJBQ0U2MDA5MzMyNDIgLyogV29ya2VyQ29udGV4dC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV29ya2VyQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUxODI1NjhEMEVGMkIwMkQwMDkzMzI0MiAvKiBKU1dvcmtlckNvbnRleHQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXb3JrZXJDb250ZXh0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE4MjU2OEUwRUYyQjAyRDAwOTMz
MjQyIC8qIEpTV29ya2VyQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1dvcmtlckNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE4MjU4
QUIwRUYzQ0Q3MDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMTgyNTlFNjBFRjNFMzRCMDA5MzMyNDIgLyog
SlNXb3JrZXJDb250ZXh0QmFzZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNXb3JrZXJDb250ZXh0QmFzZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTFBMzAyQkIwREU4MzcwMzAwQzUyRjJDIC8qIFN0cmluZ0J1aWxkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMUEzMDJDMDBERTgzNzY5MDBDNTJGMkMgLyogU3RyaW5nQnVpbGRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdCdWlsZGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNUY5OUEwRTdFQUEyNTAwQUY4NUVB
IC8qIEpTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC04OTc2LDggKzg5ODYsOCBAQAogCQlFMUMzNjMwNTBFQUYyRDA3MDA3NDEw
QkMgLyogV29ya2VyTG9jYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV29ya2VyTG9jYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MUMzNkMwMjBFQjA3NkQ2MDA3NDEwQkMgLyogSlNET01HbG9iYWxPYmplY3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01HbG9iYWxPYmplY3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTFDMzZDQkMwRUIwODA2MjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFs
T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NR2xv
YmFsT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFDMzZEMzIwRUIw
QTA5NDAwNzQxMEJDIC8qIEpTV29ya2VyQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1dvcmtlckNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlFMUMzNkQzMzBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJDb250ZXh0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV29ya2VyQ29udGV4dC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUMzNkQzMjBFQjBBMDk0MDA3NDEwQkMgLyogSlNX
b3JrZXJDb250ZXh0QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1dvcmtlckNvbnRleHRCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTFDMzZEMzMwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2VyQ29udGV4dEJhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXb3JrZXJDb250ZXh0QmFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMUM0REU2ODBFQTc1QzFFMDAyM0NDRDYgLyogQWN0aXZl
RE9NT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjdGl2ZURPTU9i
amVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUM0REU2RDBFQTc1QzY1MDAy
M0NDRDYgLyogQWN0aXZlRE9NT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFjdGl2ZURPTU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUxQzhCRTQ0MEU4QkNDQkIwMDY0Q0I3RCAvKiBXb3JrZXIuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdvcmtlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzA2
OCw4ICsxMzA3OCw4IEBACiAJCQkJQkMzNDUyNDEwRDdFMDBFQTAwMTY1NzRBIC8qIEpTUkdCQ29s
b3IuY3BwICovLAogCQkJCUJDMzQ1MjQyMEQ3RTAwRUEwMDE2NTc0QSAvKiBKU1JHQkNvbG9yLmgg
Ki8sCiAJCQkJQjIxMTI3QTUwQjMxODY3NzAwMDlCRTUzIC8qIEpTU1ZHUE9EVHlwZVdyYXBwZXIu
aCAqLywKLQkJCQlFMUMzNkQzMjBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJDb250ZXh0LmNw
cCAqLywKLQkJCQlFMUMzNkQzMzBFQjBBMDk0MDA3NDEwQkMgLyogSlNXb3JrZXJDb250ZXh0Lmgg
Ki8sCisJCQkJRTFDMzZEMzIwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2VyQ29udGV4dEJhc2Uu
Y3BwICovLAorCQkJCUUxQzM2RDMzMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtlckNvbnRleHRC
YXNlLmggKi8sCiAJCQkJQkMzNDhCRTcwREI4MDM1NDAwNEFCQUI5IC8qIEpTWE1MSHR0cFJlcXVl
c3RDb25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJQkMzNDhCRTgwREI4MDM1NDAwNEFCQUI5IC8qIEpT
WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5oICovLAogCQkJCUJDRTk5RUMxMERDQTYyNDEwMDE4
MjY4MyAvKiBKU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5jcHAgKi8sCkBAIC0xMzIyMyw2ICsx
MzIzMyw3IEBACiAJCQkJNTE2QkI3OTIwQ0U5MUU2ODAwNTEyRjc5IC8qIEpTVHJlZVdhbGtlckN1
c3RvbS5jcHAgKi8sCiAJCQkJRTFDQTVDRDUwRThDREVFOTAwRThFRjkwIC8qIEpTV29ya2VyQ29u
c3RydWN0b3IuY3BwICovLAogCQkJCUUxQ0E1Q0QyMEU4Q0RFODAwMEU4RUY5MCAvKiBKU1dvcmtl
ckNvbnN0cnVjdG9yLmggKi8sCisJCQkJRTE4MjU4QUIwRUYzQ0Q3MDAwOTMzMjQyIC8qIEpTV29y
a2VyQ29udGV4dEN1c3RvbS5jcHAgKi8sCiAJCQkJRTFDQTVDQkIwRThDRENBRjAwRThFRjkwIC8q
IEpTV29ya2VyQ3VzdG9tLmNwcCAqLywKIAkJCQlCQzM0OEJCRDBEQjdGNTMxMDA0QUJBQjkgLyog
SlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgKi8sCiAJCQkJQkNERkQ0OTEwRTMwNTZCRDAwOUQx
MEFEIC8qIEpTWE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3BwICovLApAQCAtMTM1NTYsNiAr
MTM1NjcsOSBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJRTFDOEJFNUMwRThCRDE1QTAwNjRDQjdE
IC8qIEpTV29ya2VyLmNwcCAqLywKIAkJCQlFMUNBQTVDNTBFOEJEMjM2MDBBNzNFQ0EgLyogSlNX
b3JrZXIuaCAqLywKKwkJCQlFMTgyNTlFNjBFRjNFMzRCMDA5MzMyNDIgLyogSlNXb3JrZXJDb250
ZXh0QmFzZS5sdXQuaCAqLywKKwkJCQlFMTgyNTY4RDBFRjJCMDJEMDA5MzMyNDIgLyogSlNXb3Jr
ZXJDb250ZXh0LmNwcCAqLywKKwkJCQlFMTgyNTY4RTBFRjJCMDJEMDA5MzMyNDIgLyogSlNXb3Jr
ZXJDb250ZXh0LmggKi8sCiAJCQkJRTFDMzYyRUUwRUFGMkFBOTAwNzQxMEJDIC8qIEpTV29ya2Vy
TG9jYXRpb24uY3BwICovLAogCQkJCUUxQzM2MkVEMEVBRjJBQTkwMDc0MTBCQyAvKiBKU1dvcmtl
ckxvY2F0aW9uLmggKi8sCiAJCQkJRTEyNzFBNTcwRUVFQ0RFNDAwRjYxMjEzIC8qIEpTV29ya2Vy
TmF2aWdhdG9yLmNwcCAqLywKQEAgLTE0MjI5LDYgKzE0MjQzLDcgQEAKIAkJCQlFMUM4QkU0NDBF
OEJDQ0JCMDA2NENCN0QgLyogV29ya2VyLmlkbCAqLywKIAkJCQlFMUMyQzQ0MTBFQUQwMTdCMDA3
RTYxRkIgLyogV29ya2VyQ29udGV4dC5jcHAgKi8sCiAJCQkJRTFDMkM0M0QwRUFEMDEzMzAwN0U2
MUZCIC8qIFdvcmtlckNvbnRleHQuaCAqLywKKwkJCQlFMTgyNTY0RjBFRjJBQ0U2MDA5MzMyNDIg
LyogV29ya2VyQ29udGV4dC5pZGwgKi8sCiAJCQkJRTFDMzYzMDUwRUFGMkQwNzAwNzQxMEJDIC8q
IFdvcmtlckxvY2F0aW9uLmNwcCAqLywKIAkJCQlFMUMzNjMwMDBFQUYyQ0M2MDA3NDEwQkMgLyog
V29ya2VyTG9jYXRpb24uaCAqLywKIAkJCQlFMUMzNjJCQjBFQUYyOUZCMDA3NDEwQkMgLyogV29y
a2VyTG9jYXRpb24uaWRsICovLApAQCAtMTU3MjUsNyArMTU3NDAsNyBAQAogCQkJCTY1REYzMjA2
MDlEMUNDNjAwMDBCRTMyNSAvKiBKU1doZWVsRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
Q0FBNUM2MEU4QkQyMzYwMEE3M0VDQSAvKiBKU1dvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTFDQTVDRDMwRThDREU4MDAwRThFRjkwIC8qIEpTV29ya2VyQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUUxQzM2RDM1MEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtlckNvbnRleHQu
aCBpbiBIZWFkZXJzICovLAorCQkJCUUxQzM2RDM1MEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtl
ckNvbnRleHRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUMzNjJFRjBFQUYyQUE5MDA3NDEw
QkMgLyogSlNXb3JrZXJMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyNzFBNTgwRUVF
Q0RFNDAwRjYxMjEzIC8qIEpTV29ya2VyTmF2aWdhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzM0OEJENDBEQjdGODA0MDA0QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xNjQzMCw2ICsxNjQ0NSw4IEBACiAJCQkJMUE1NjlEMjMwRDdFMkI4MjAwN0MzOTgz
IC8qIHJ1bnRpbWVfb2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUQyNTBEN0UyQjgy
MDA3QzM5ODMgLyogcnVudGltZV9yb290LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUxRTA5
OUU2NDkyMDA1NkU1ODEgLyogdmlzaWJsZV91bml0cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTE4
MjU2OTAwRUYyQjAyRDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTE4MjU5RTcwRUYzRTM0QjAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dEJhc2UubHV0
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE2NTQ4LDYgKzE2NTY1LDcgQEAKIAkJCQk4NTEzNkNBODBB
RUQ2NjU5MDBGOTBBM0QgLyogd2VzdFJlc2l6ZUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAog
CQkJCTFBQjFBRTdBMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5nIGluIFJlc291
cmNlcyAqLywKIAkJCQkxQUIxQUU3QjBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91dEN1cnNvci5w
bmcgaW4gUmVzb3VyY2VzICovLAorCQkJCUUxODI1NjUwMEVGMkFDRTYwMDkzMzI0MiAvKiBXb3Jr
ZXJDb250ZXh0LmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNzcyNyw3ICsxNzc0NSw3IEBACiAJ
CQkJNjVERjMyMDUwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTV2hlZWxFdmVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMUM4QkU1RDBFOEJEMTVBMDA2NENCN0QgLyogSlNXb3JrZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTFDQTVDRDYwRThDREVFOTAwRThFRjkwIC8qIEpTV29ya2VyQ29uc3Ry
dWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTFDMzZEMzQwRUIwQTA5NDAwNzQxMEJDIC8q
IEpTV29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMUMzNkQzNDBFQjBBMDk0
MDA3NDEwQkMgLyogSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MUNBNUNCQzBFOENEQ0FGMDBFOEVGOTAgLyogSlNXb3JrZXJDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTFDMzYyRjAwRUFGMkFBOTAwNzQxMEJDIC8qIEpTV29ya2VyTG9jYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyNzFBNTkwRUVFQ0RFNDAwRjYxMjEzIC8qIEpTV29ya2Vy
TmF2aWdhdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTgzNzksNiArMTgzOTcsOCBAQAogCQkJ
CTFBNTY5RDIyMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX29iamVjdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTU2OUQyNDBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9yb290LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTkzMzA5RTFEMDk5RTY0OTIwMDU2RTU4MSAvKiB2aXNpYmxlX3Vu
aXRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxODI1NjhGMEVGMkIwMkQwMDkzMzI0MiAvKiBK
U1dvcmtlckNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTE4MjU4QUMwRUYzQ0Q3MDAw
OTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dC5jcHAJKHJldmlzaW9uIDM5MjcxKQor
KysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDI4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQot
I2lmIEVOQUJMRShXT1JLRVJTKQotCi0jaW5jbHVkZSAiSlNXb3JrZXJDb250ZXh0LmgiCi0KLSNp
bmNsdWRlICJFdmVudC5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpT
RXZlbnRMaXN0ZW5lci5oIgotI2luY2x1ZGUgIkpTTWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5o
IgotI2luY2x1ZGUgIkpTTWVzc2FnZUV2ZW50LmgiCi0jaW5jbHVkZSAiSlNNZXNzYWdlUG9ydC5o
IgotI2luY2x1ZGUgIkpTV29ya2VyTG9jYXRpb24uaCIKLSNpbmNsdWRlICJKU1dvcmtlck5hdmln
YXRvci5oIgotI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKLSNpbmNsdWRlICJXb3JrZXJMb2Nh
dGlvbi5oIgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0YXRpYyBKU1ZhbHVlKiBqc1dvcmtlckNvbnRleHRQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNz
YWdlKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSosIGNvbnN0IEFyZ0xpc3QmKTsKLXN0
YXRpYyBKU1ZhbHVlKiBqc1dvcmtlckNvbnRleHRQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlz
dGVuZXIoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKiwgY29uc3QgQXJnTGlzdCYpOwot
c3RhdGljIEpTVmFsdWUqIGpzV29ya2VyQ29udGV4dFByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZl
bnRMaXN0ZW5lcihFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqLCBjb25zdCBBcmdMaXN0
Jik7Ci1zdGF0aWMgSlNWYWx1ZSoganNXb3JrZXJDb250ZXh0UHJvdG90eXBlRnVuY3Rpb25EaXNw
YXRjaEV2ZW50KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSosIGNvbnN0IEFyZ0xpc3Qm
KTsKLUpTVmFsdWUqIGpzV29ya2VyQ29udGV4dExvY2F0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKLUpTVmFsdWUqIGpzV29ya2VyQ29udGV4
dE5hdmlnYXRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlT
bG90Jik7Ci1KU1ZhbHVlKiBqc1dvcmtlckNvbnRleHRPbm1lc3NhZ2UoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwotdm9pZCBzZXRKU1dvcmtlckNv
bnRleHRPbm1lc3NhZ2UoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7Ci12b2lkIHNl
dEpTV29ya2VyQ29udGV4dE1lc3NhZ2VFdmVudChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFs
dWUqKTsKLUpTVmFsdWUqIGpzV29ya2VyQ29udGV4dE1lc3NhZ2VFdmVudChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7Ci1KU1ZhbHVlKiBqc1dvcmtl
ckNvbnRleHRXb3JrZXJMb2NhdGlvbihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29u
c3QgUHJvcGVydHlTbG90Jik7Ci12b2lkIHNldEpTV29ya2VyQ29udGV4dFdvcmtlckxvY2F0aW9u
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOwotCi19Ci0KLS8qCi1AYmVnaW4gSlNX
b3JrZXJDb250ZXh0UHJvdG90eXBlVGFibGUKLSAgYWRkRXZlbnRMaXN0ZW5lciAgICAgICAgICAg
ICAgIGpzV29ya2VyQ29udGV4dFByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lciAgICAg
ICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAzCi0gIHJlbW92ZUV2ZW50TGlzdGVuZXIgICAg
ICAgICAgICBqc1dvcmtlckNvbnRleHRQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVu
ZXIgICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMwotICBkaXNwYXRjaEV2ZW50ICAgICAg
ICAgICAgICAgICAganNXb3JrZXJDb250ZXh0UHJvdG90eXBlRnVuY3Rpb25EaXNwYXRjaEV2ZW50
ICAgICAgICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKLSAgcG9zdE1lc3NhZ2UgICAg
ICAgICAgICAgICAgICAgIGpzV29ya2VyQ29udGV4dFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3Nh
Z2UgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKLUBlbmQKLSovCi0KLS8q
Ci1AYmVnaW4gSlNXb3JrZXJDb250ZXh0VGFibGUKLSAgbG9jYXRpb24gICAgICAgICAgICAgICAg
ICAgICAganNXb3JrZXJDb250ZXh0TG9jYXRpb24gICAgICAgICAgICAgICAgICAgICAgRG9udERl
bGV0ZXxSZWFkT25seQotICBuYXZpZ2F0b3IgICAgICAgICAgICAgICAgICAgICBqc1dvcmtlckNv
bnRleHROYXZpZ2F0b3IgICAgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0g
IG9ubWVzc2FnZSAgICAgICAgICAgICAgICAgICAgIGpzV29ya2VyQ29udGV4dE9ubWVzc2FnZSAg
ICAgICAgICAgICAgICAgICAgIERvbnREZWxldGUKLSAgTWVzc2FnZUV2ZW50ICAgICAgICAgICAg
ICAgICAganNXb3JrZXJDb250ZXh0TWVzc2FnZUV2ZW50ICAgICAgICAgICAgICAgICAgRG9udERl
bGV0ZQotICBXb3JrZXJMb2NhdGlvbiAgICAgICAgICAgICAgICBqc1dvcmtlckNvbnRleHRXb3Jr
ZXJMb2NhdGlvbiAgICAgICAgICAgICAgICBEb250RGVsZXRlCi1AZW5kCi0qLwotCi0jaW5jbHVk
ZSAiSlNXb3JrZXJDb250ZXh0Lmx1dC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUFTU0VS
VF9DTEFTU19GSVRTX0lOX0NFTEwoSlNXb3JrZXJDb250ZXh0KQotCi1zdGF0aWMgaW5saW5lIFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBjcmVhdGVKU1dvcmtlckNvbnRleHRTdHJ1Y3R1cmUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhKQotewotICAgIHJldHVybiBKU1dvcmtlckNvbnRleHQ6OmNyZWF0
ZVN0cnVjdHVyZShuZXcgKGdsb2JhbERhdGEpIEpTV29ya2VyQ29udGV4dFByb3RvdHlwZShKU1dv
cmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpKTsKLX0KLQot
SlNXb3JrZXJDb250ZXh0OjpKU1dvcmtlckNvbnRleHQoUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0
PiBpbXBsKQotICAgIDogSlNET01HbG9iYWxPYmplY3QoY3JlYXRlSlNXb3JrZXJDb250ZXh0U3Ry
dWN0dXJlKEhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSksIG5ldyBKU0RPTUdsb2JhbE9i
amVjdERhdGEsIHRoaXMpCi0gICAgLCBtX2ltcGwoaW1wbCkKLXsKLSAgICBHbG9iYWxQcm9wZXJ0
eUluZm8gc3RhdGljR2xvYmFsc1tdID0gewotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oSWRl
bnRpZmllcihnbG9iYWxFeGVjKCksICJzZWxmIiksIHRoaXMsIERvbnREZWxldGUgfCBSZWFkT25s
eSksCi0gICAgfTsKLSAgICAKLSAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIHNp
emVvZihzdGF0aWNHbG9iYWxzKSAvIHNpemVvZihHbG9iYWxQcm9wZXJ0eUluZm8pKTsKLQotfQot
Ci1KU1dvcmtlckNvbnRleHQ6On5KU1dvcmtlckNvbnRleHQoKQotewotfQotCi1TY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBKU1dvcmtlckNvbnRleHQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdAotewotICAgIHJldHVybiBtX2ltcGwuZ2V0KCk7Ci19Ci0KLXZvaWQgSlNXb3JrZXJDb250
ZXh0OjptYXJrKCkKLXsKLSAgICBCYXNlOjptYXJrKCk7Ci0KLSAgICBtYXJrQWN0aXZlT2JqZWN0
c0ZvckNvbnRleHQoKmdsb2JhbERhdGEoKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLQot
ICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2Fz
dDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KG1faW1wbC0+b25tZXNzYWdlKCkpKQotICAg
ICAgICBsaXN0ZW5lci0+bWFyaygpOwotCi0gICAgdHlwZWRlZiBXb3JrZXJDb250ZXh0OjpFdmVu
dExpc3RlbmVyc01hcCBFdmVudExpc3RlbmVyc01hcDsKLSAgICB0eXBlZGVmIFdvcmtlckNvbnRl
eHQ6Okxpc3RlbmVyVmVjdG9yIExpc3RlbmVyVmVjdG9yOwotICAgIEV2ZW50TGlzdGVuZXJzTWFw
JiBldmVudExpc3RlbmVycyA9IG1faW1wbC0+ZXZlbnRMaXN0ZW5lcnMoKTsKLSAgICBmb3IgKEV2
ZW50TGlzdGVuZXJzTWFwOjppdGVyYXRvciBtYXBJdGVyID0gZXZlbnRMaXN0ZW5lcnMuYmVnaW4o
KTsgbWFwSXRlciAhPSBldmVudExpc3RlbmVycy5lbmQoKTsgKyttYXBJdGVyKSB7Ci0gICAgICAg
IGZvciAoTGlzdGVuZXJWZWN0b3I6Oml0ZXJhdG9yIHZlY0l0ZXIgPSBtYXBJdGVyLT5zZWNvbmQu
YmVnaW4oKTsgdmVjSXRlciAhPSBtYXBJdGVyLT5zZWNvbmQuZW5kKCk7ICsrdmVjSXRlcikgewot
ICAgICAgICAgICAgSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGlj
X2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPih2ZWNJdGVyLT5nZXQoKSk7Ci0gICAg
ICAgICAgICBsaXN0ZW5lci0+bWFyaygpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0aWMg
Y29uc3QgSGFzaFRhYmxlKiBnZXRKU1dvcmtlckNvbnRleHRUYWJsZShFeGVjU3RhdGUqIGV4ZWMp
Ci17Ci0gICAgcmV0dXJuIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoZXhlYy0+Z2xvYmFsRGF0
YSgpLCAmSlNXb3JrZXJDb250ZXh0VGFibGUpOwotfQotCi1jb25zdCBDbGFzc0luZm8gSlNXb3Jr
ZXJDb250ZXh0OjpzX2luZm8gPSB7ICJXb3JrZXJDb250ZXh0IiwgMCwgMCwgZ2V0SlNXb3JrZXJD
b250ZXh0VGFibGUgfTsKLQotSlNPYmplY3QqIEpTV29ya2VyQ29udGV4dDo6Y3JlYXRlUHJvdG90
eXBlKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4gbmV3IChleGVjKSBKU1dvcmtlckNv
bnRleHRQcm90b3R5cGUoSlNXb3JrZXJDb250ZXh0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSkpOwotfQotCi12
b2lkIEpTV29ya2VyQ29udGV4dDo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKiB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQot
ewotICAgIGxvb2t1cFB1dDxKU1dvcmtlckNvbnRleHQsIEJhc2U+KGV4ZWMsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIGdldEpTV29ya2VyQ29udGV4dFRhYmxlKGV4ZWMpLCB0aGlzLCBzbG90KTsKLX0K
LQotYm9vbCBKU1dvcmtlckNvbnRleHQ6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQot
ewotICAgIC8vIExvb2sgZm9yIG92ZXJyaWRlcyBiZWZvcmUgbG9va2luZyBhdCBhbnkgb2Ygb3Vy
IG93biBwcm9wZXJ0aWVzLgotICAgIGlmIChKU0dsb2JhbE9iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNXb3JrZXJDb250ZXh0LCBCYXNlPihleGVjLCBn
ZXRKU1dvcmtlckNvbnRleHRUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsK
LX0KLQotSlNWYWx1ZSoganNXb3JrZXJDb250ZXh0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2Fn
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSogdGhpc1ZhbHVlLCBjb25zdCBB
cmdMaXN0JiBhcmdzKQotewotICAgIGlmICghdGhpc1ZhbHVlLT5pc09iamVjdCgmSlNXb3JrZXJD
b250ZXh0OjpzX2luZm8pKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJy
b3IpOwotICAgIEpTV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IHN0YXRpY19jYXN0PEpT
V29ya2VyQ29udGV4dCo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwotICAgIGNvbnN0IFVTdHJpbmcm
IG1lc3NhZ2UgPSBhcmdzLmF0KGV4ZWMsIDApLT50b1N0cmluZyhleGVjKTsKLQotICAgIHdvcmtl
ckNvbnRleHQtPmltcGwoKS0+cG9zdE1lc3NhZ2UobWVzc2FnZSk7Ci0gICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUqIGpzV29ya2VyQ29udGV4dFByb3RvdHlwZUZ1bmN0aW9u
QWRkRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSogdGhp
c1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQotewotICAgIGlmICghdGhpc1ZhbHVlLT5pc09i
amVjdCgmSlNXb3JrZXJDb250ZXh0OjpzX2luZm8pKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cihleGVjLCBUeXBlRXJyb3IpOwotICAgIEpTV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9
IHN0YXRpY19jYXN0PEpTV29ya2VyQ29udGV4dCo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwotICAg
IFJlZlB0cjxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSB3b3JrZXJDb250
ZXh0LT5maW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihleGVjLCBhcmdzLmF0
KGV4ZWMsIDEpKTsKLSAgICBpZiAoIWxpc3RlbmVyKQotICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKLSAgICB3b3JrZXJDb250ZXh0LT5pbXBsKCktPmFkZEV2ZW50TGlzdGVuZXIoYXJncy5h
dChleGVjLCAwKS0+dG9TdHJpbmcoZXhlYyksIGxpc3RlbmVyLnJlbGVhc2UoKSwgYXJncy5hdChl
eGVjLCAyKS0+dG9Cb29sZWFuKGV4ZWMpKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0K
LQotSlNWYWx1ZSoganNXb3JrZXJDb250ZXh0UHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExp
c3RlbmVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlKiB0aGlzVmFsdWUsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MpCi17Ci0gICAgaWYgKCF0aGlzVmFsdWUtPmlzT2JqZWN0KCZKU1dv
cmtlckNvbnRleHQ6OnNfaW5mbykpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5
cGVFcnJvcik7Ci0gICAgSlNXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gc3RhdGljX2Nh
c3Q8SlNXb3JrZXJDb250ZXh0Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Ci0gICAgSlNVbnByb3Rl
Y3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gd29ya2VyQ29udGV4dC0+ZmluZEpTVW5wcm90
ZWN0ZWRFdmVudExpc3RlbmVyKGV4ZWMsIGFyZ3MuYXQoZXhlYywgMSkpOwotICAgIGlmICghbGlz
dGVuZXIpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIHdvcmtlckNvbnRleHQt
PmltcGwoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihhcmdzLmF0KGV4ZWMsIDApLT50b1N0cmluZyhl
eGVjKSwgbGlzdGVuZXIsIGFyZ3MuYXQoZXhlYywgMiktPnRvQm9vbGVhbihleGVjKSk7Ci0gICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUqIGpzV29ya2VyQ29udGV4dFByb3Rv
dHlwZUZ1bmN0aW9uRGlzcGF0Y2hFdmVudChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNW
YWx1ZSogdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQotewotICAgIGlmICghdGhpc1Zh
bHVlLT5pc09iamVjdCgmSlNXb3JrZXJDb250ZXh0OjpzX2luZm8pKQotICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotICAgIEpTV29ya2VyQ29udGV4dCogd29ya2Vy
Q29udGV4dCA9IHN0YXRpY19jYXN0PEpTV29ya2VyQ29udGV4dCo+KGFzT2JqZWN0KHRoaXNWYWx1
ZSkpOwotICAgIEV2ZW50KiBldnQgPSB0b0V2ZW50KGFyZ3MuYXQoZXhlYywgMCkpOwotCi0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSlNWYWx1ZSogcmVzdWx0ID0ganNCb29sZWFuKHdv
cmtlckNvbnRleHQtPmltcGwoKS0+ZGlzcGF0Y2hFdmVudChldnQsIGVjKSk7Ci0gICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIGVjKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUpTVmFsdWUq
IGpzV29ya2VyQ29udGV4dExvY2F0aW9uKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQotewotICAgIFdvcmtlckNvbnRleHQq
IGltcCA9IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihzdGF0aWNfY2FzdDxKU1dvcmtlckNv
bnRleHQqPihhc09iamVjdChzbG90LnNsb3RCYXNlKCkpKS0+aW1wbCgpKTsKLSAgICByZXR1cm4g
dG9KUyhleGVjLCBpbXAtPmxvY2F0aW9uKCkpOwotfQotCi1KU1ZhbHVlKiBqc1dvcmtlckNvbnRl
eHROYXZpZ2F0b3IoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25z
dCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgV29ya2VyQ29udGV4dCogaW1wID0gc3RhdGlj
X2Nhc3Q8V29ya2VyQ29udGV4dCo+KHN0YXRpY19jYXN0PEpTV29ya2VyQ29udGV4dCo+KGFzT2Jq
ZWN0KHNsb3Quc2xvdEJhc2UoKSkpLT5pbXBsKCkpOwotICAgIHJldHVybiB0b0pTKGV4ZWMsIGlt
cC0+bmF2aWdhdG9yKCkpOwotfQotCi1KU1ZhbHVlKiBqc1dvcmtlckNvbnRleHRPbm1lc3NhZ2Uo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCi17Ci0gICAgV29ya2VyQ29udGV4dCogaW1wID0gc3RhdGljX2Nhc3Q8V29ya2Vy
Q29udGV4dCo+KHN0YXRpY19jYXN0PEpTV29ya2VyQ29udGV4dCo+KGFzT2JqZWN0KHNsb3Quc2xv
dEJhc2UoKSkpLT5pbXBsKCkpOwotICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciog
bGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KGltcC0+
b25tZXNzYWdlKCkpKSB7Ci0gICAgICAgIGlmIChKU09iamVjdCogbGlzdGVuZXJPYmogPSBsaXN0
ZW5lci0+bGlzdGVuZXJPYmooKSkKLSAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lck9iajsKLSAg
ICB9Ci0gICAgcmV0dXJuIGpzTnVsbCgpOwotfQotCi12b2lkIHNldEpTV29ya2VyQ29udGV4dE9u
bWVzc2FnZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlKiB2
YWx1ZSkKLXsKLSAgICBXb3JrZXJDb250ZXh0KiBpbXAgPSBzdGF0aWNfY2FzdDxXb3JrZXJDb250
ZXh0Kj4oc3RhdGljX2Nhc3Q8SlNXb3JrZXJDb250ZXh0Kj4odGhpc09iamVjdCktPmltcGwoKSk7
Ci0gICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmpl
Y3QoaW1wLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIGlmICghZ2xvYmFsT2JqZWN0
KQotICAgICAgICByZXR1cm47Ci0gICAgaW1wLT5zZXRPbm1lc3NhZ2UoZ2xvYmFsT2JqZWN0LT5m
aW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihleGVjLCB2YWx1ZSwgdHJ1ZSkp
OwotfQotCi1KU1ZhbHVlKiBqc1dvcmtlckNvbnRleHRNZXNzYWdlRXZlbnQoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQotewotICAg
IHJldHVybiBKU01lc3NhZ2VFdmVudDo6Z2V0Q29uc3RydWN0b3IoZXhlYyk7Ci19Ci0KLUpTVmFs
dWUqIGpzV29ya2VyQ29udGV4dFdvcmtlckxvY2F0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpCi17Ci0gICAgcmV0dXJuIEpTV29ya2Vy
TG9jYXRpb246OmdldENvbnN0cnVjdG9yKGV4ZWMpOwotfQotCi1zdGF0aWMgY29uc3QgSGFzaFRh
YmxlKiBnZXRKU1dvcmtlckNvbnRleHRQcm90b3R5cGVUYWJsZShFeGVjU3RhdGUqIGV4ZWMpCi17
Ci0gICAgcmV0dXJuIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoZXhlYy0+Z2xvYmFsRGF0YSgp
LCAmSlNXb3JrZXJDb250ZXh0UHJvdG90eXBlVGFibGUpOwotfQotCi1jb25zdCBDbGFzc0luZm8g
SlNXb3JrZXJDb250ZXh0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJXb3JrZXJDb250ZXh0UHJvdG90
eXBlIiwgMCwgMCwgZ2V0SlNXb3JrZXJDb250ZXh0UHJvdG90eXBlVGFibGUgfTsKLQotSlNPYmpl
Y3QqIEpTV29ya2VyQ29udGV4dFByb3RvdHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMpCi17Ci0g
ICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1dvcmtlckNvbnRleHQ+KGV4ZWMpOwotfQotCi1i
b29sIEpTV29ya2VyQ29udGV4dFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCi17Ci0gICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywg
Z2V0SlNXb3JrZXJDb250ZXh0UHJvdG90eXBlVGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7Ci19Ci0KLXZvaWQgc2V0SlNXb3JrZXJDb250ZXh0TWVzc2FnZUV2ZW50KEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUqIHZhbHVlKQotewotICAg
IC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgc3RhdGljX2Nhc3Q8SlNX
b3JrZXJDb250ZXh0Kj4odGhpc09iamVjdCktPnB1dERpcmVjdChJZGVudGlmaWVyKGV4ZWMsICJN
ZXNzYWdlRXZlbnQiKSwgdmFsdWUpOwotfQotCi12b2lkIHNldEpTV29ya2VyQ29udGV4dFdvcmtl
ckxvY2F0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUq
IHZhbHVlKQotewotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAg
c3RhdGljX2Nhc3Q8SlNXb3JrZXJDb250ZXh0Kj4odGhpc09iamVjdCktPnB1dERpcmVjdChJZGVu
dGlmaWVyKGV4ZWMsICJMb2NhdGlvbiIpLCB2YWx1ZSk7Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2VyQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJDb250ZXh0LmgJKHJldmlzaW9uIDM5MjcxKQorKysgV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw4MSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKgotICovCi0KLSNpZm5kZWYgSlNXb3JrZXJDb250ZXh0X2gKLSNkZWZpbmUgSlNXb3JrZXJD
b250ZXh0X2gKLQotI2lmIEVOQUJMRShXT1JLRVJTKQotCi0jaW5jbHVkZSAiSlNET01HbG9iYWxP
YmplY3QuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgY2xhc3MgV29ya2VyQ29udGV4
dDsKLQotICAgIGNsYXNzIEpTV29ya2VyQ29udGV4dCA6IHB1YmxpYyBKU0RPTUdsb2JhbE9iamVj
dCB7Ci0gICAgICAgIHR5cGVkZWYgSlNET01HbG9iYWxPYmplY3QgQmFzZTsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIEpTV29ya2VyQ29udGV4dChQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+KTsKLSAg
ICAgICAgdmlydHVhbCB+SlNXb3JrZXJDb250ZXh0KCk7Ci0KLSAgICAgICAgc3RhdGljIEpTQzo6
SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSopOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgcHV0KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSosIEpTQzo6UHV0UHJvcGVydHlTbG90Jik7Ci0gICAgICAg
IHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBK
U0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKLSAgICAg
ICAgdmlydHVhbCBjb25zdCBKU0M6OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1
cm4gJnNfaW5mbzsgfQotICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZv
OwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3RydWN0
dXJlKEpTQzo6SlNWYWx1ZSogcHJvdG90eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBXb3JrZXJDb250ZXh0KiBpbXBsKCkg
Y29uc3QgeyByZXR1cm4gbV9pbXBsLmdldCgpOyB9Ci0gICAgICAgIHZpcnR1YWwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwotCi0gICAgICAg
IHZpcnR1YWwgdm9pZCBtYXJrKCk7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8V29y
a2VyQ29udGV4dD4gbV9pbXBsOwotICAgIH07Ci0KLSAgICBjbGFzcyBKU1dvcmtlckNvbnRleHRQ
cm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU09iamVjdCB7Ci0gICAgcHVibGljOgotICAgICAgICBz
dGF0aWMgSlNDOjpKU09iamVjdCogc2VsZihKU0M6OkV4ZWNTdGF0ZSopOwotICAgICAgICBKU1dv
cmtlckNvbnRleHRQcm90b3R5cGUoUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gc3RydWN0dXJl
KSA6IEpTQzo6SlNPYmplY3Qoc3RydWN0dXJlKSB7IH0KLQotICAgICAgICB2aXJ0dWFsIGNvbnN0
IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmc19pbmZvOyB9Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87Ci0gICAgICAgIHZpcnR1
YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxKU0M6OlN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTQzo6SlNWYWx1ZSogcHJvdG90eXBl
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShw
cm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlKSk7Ci0gICAgICAgIH0KLSAg
ICB9OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV09SS0VS
UykKLQotI2VuZGlmIC8vIEpTV29ya2VyQ29udGV4dF9oCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDM5MTk3KQkoZnJvbSBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dC5jcHA6MzkxOTcpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMjgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShXT1JLRVJTKQorCisjaW5jbHVkZSAiSlNXb3JrZXJDb250ZXh0LmgiCisKKyNpbmNsdWRlICJF
dmVudC5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRXZlbnRMaXN0
ZW5lci5oIgorI2luY2x1ZGUgIkpTTWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5oIgorI2luY2x1
ZGUgIkpTTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiSlNNZXNzYWdlUG9ydC5oIgorI2luY2x1
ZGUgIkpTV29ya2VyTG9jYXRpb24uaCIKKyNpbmNsdWRlICJKU1dvcmtlck5hdmlnYXRvci5oIgor
I2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRlICJXb3JrZXJMb2NhdGlvbi5oIgor
Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBK
U1ZhbHVlKiBqc1dvcmtlckNvbnRleHRQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdlKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSosIGNvbnN0IEFyZ0xpc3QmKTsKK3N0YXRpYyBKU1Zh
bHVlKiBqc1dvcmtlckNvbnRleHRQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIoRXhl
Y1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKiwgY29uc3QgQXJnTGlzdCYpOworc3RhdGljIEpT
VmFsdWUqIGpzV29ya2VyQ29udGV4dFByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW5l
cihFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqLCBjb25zdCBBcmdMaXN0Jik7CitzdGF0
aWMgSlNWYWx1ZSoganNXb3JrZXJDb250ZXh0UHJvdG90eXBlRnVuY3Rpb25EaXNwYXRjaEV2ZW50
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSosIGNvbnN0IEFyZ0xpc3QmKTsKK0pTVmFs
dWUqIGpzV29ya2VyQ29udGV4dExvY2F0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
LCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKK0pTVmFsdWUqIGpzV29ya2VyQ29udGV4dE5hdmlnYXRv
cihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7CitK
U1ZhbHVlKiBqc1dvcmtlckNvbnRleHRPbm1lc3NhZ2UoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwordm9pZCBzZXRKU1dvcmtlckNvbnRleHRPbm1l
c3NhZ2UoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7Cit2b2lkIHNldEpTV29ya2Vy
Q29udGV4dE1lc3NhZ2VFdmVudChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKK0pT
VmFsdWUqIGpzV29ya2VyQ29udGV4dE1lc3NhZ2VFdmVudChFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7CitKU1ZhbHVlKiBqc1dvcmtlckNvbnRleHRX
b3JrZXJMb2NhdGlvbihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVy
dHlTbG90Jik7Cit2b2lkIHNldEpTV29ya2VyQ29udGV4dFdvcmtlckxvY2F0aW9uKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOworCit9CisKKy8qCitAYmVnaW4gSlNXb3JrZXJDb250
ZXh0UHJvdG90eXBlVGFibGUKKyAgYWRkRXZlbnRMaXN0ZW5lciAgICAgICAgICAgICAgIGpzV29y
a2VyQ29udGV4dFByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lciAgICAgICAgICAgICAg
RG9udERlbGV0ZXxGdW5jdGlvbiAzCisgIHJlbW92ZUV2ZW50TGlzdGVuZXIgICAgICAgICAgICBq
c1dvcmtlckNvbnRleHRQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIgICAgICAg
ICAgIERvbnREZWxldGV8RnVuY3Rpb24gMworICBkaXNwYXRjaEV2ZW50ICAgICAgICAgICAgICAg
ICAganNXb3JrZXJDb250ZXh0UHJvdG90eXBlRnVuY3Rpb25EaXNwYXRjaEV2ZW50ICAgICAgICAg
ICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyAgcG9zdE1lc3NhZ2UgICAgICAgICAgICAg
ICAgICAgIGpzV29ya2VyQ29udGV4dFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2UgICAgICAg
ICAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKK0BlbmQKKyovCisKKy8qCitAYmVnaW4g
SlNXb3JrZXJDb250ZXh0VGFibGUKKyAgbG9jYXRpb24gICAgICAgICAgICAgICAgICAgICAganNX
b3JrZXJDb250ZXh0TG9jYXRpb24gICAgICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFk
T25seQorICBuYXZpZ2F0b3IgICAgICAgICAgICAgICAgICAgICBqc1dvcmtlckNvbnRleHROYXZp
Z2F0b3IgICAgICAgICAgICAgICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CisgIG9ubWVzc2Fn
ZSAgICAgICAgICAgICAgICAgICAgIGpzV29ya2VyQ29udGV4dE9ubWVzc2FnZSAgICAgICAgICAg
ICAgICAgICAgIERvbnREZWxldGUKKyAgTWVzc2FnZUV2ZW50ICAgICAgICAgICAgICAgICAganNX
b3JrZXJDb250ZXh0TWVzc2FnZUV2ZW50ICAgICAgICAgICAgICAgICAgRG9udERlbGV0ZQorICBX
b3JrZXJMb2NhdGlvbiAgICAgICAgICAgICAgICBqc1dvcmtlckNvbnRleHRXb3JrZXJMb2NhdGlv
biAgICAgICAgICAgICAgICBEb250RGVsZXRlCitAZW5kCisqLworCisjaW5jbHVkZSAiSlNXb3Jr
ZXJDb250ZXh0Lmx1dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0FTU0VSVF9DTEFTU19G
SVRTX0lOX0NFTEwoSlNXb3JrZXJDb250ZXh0KQorCitzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBjcmVhdGVKU1dvcmtlckNvbnRleHRTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKQoreworICAgIHJldHVybiBKU1dvcmtlckNvbnRleHQ6OmNyZWF0ZVN0cnVjdHVy
ZShuZXcgKGdsb2JhbERhdGEpIEpTV29ya2VyQ29udGV4dFByb3RvdHlwZShKU1dvcmtlckNvbnRl
eHRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpKTsKK30KKworSlNXb3JrZXJD
b250ZXh0OjpKU1dvcmtlckNvbnRleHQoUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PiBpbXBsKQor
ICAgIDogSlNET01HbG9iYWxPYmplY3QoY3JlYXRlSlNXb3JrZXJDb250ZXh0U3RydWN0dXJlKEhl
YXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKSksIG5ldyBKU0RPTUdsb2JhbE9iamVjdERhdGEs
IHRoaXMpCisgICAgLCBtX2ltcGwoaW1wbCkKK3sKKyAgICBHbG9iYWxQcm9wZXJ0eUluZm8gc3Rh
dGljR2xvYmFsc1tdID0geworICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oSWRlbnRpZmllcihn
bG9iYWxFeGVjKCksICJzZWxmIiksIHRoaXMsIERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAg
fTsKKyAgICAKKyAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIHNpemVvZihzdGF0
aWNHbG9iYWxzKSAvIHNpemVvZihHbG9iYWxQcm9wZXJ0eUluZm8pKTsKKworfQorCitKU1dvcmtl
ckNvbnRleHQ6On5KU1dvcmtlckNvbnRleHQoKQoreworfQorCitTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBKU1dvcmtlckNvbnRleHQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2ltcGwuZ2V0KCk7Cit9CisKK3ZvaWQgSlNXb3JrZXJDb250ZXh0OjptYXJr
KCkKK3sKKyAgICBCYXNlOjptYXJrKCk7CisKKyAgICBtYXJrQWN0aXZlT2JqZWN0c0ZvckNvbnRl
eHQoKmdsb2JhbERhdGEoKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKworICAgIGlmIChK
U1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJv
dGVjdGVkRXZlbnRMaXN0ZW5lcio+KG1faW1wbC0+b25tZXNzYWdlKCkpKQorICAgICAgICBsaXN0
ZW5lci0+bWFyaygpOworCisgICAgdHlwZWRlZiBXb3JrZXJDb250ZXh0OjpFdmVudExpc3RlbmVy
c01hcCBFdmVudExpc3RlbmVyc01hcDsKKyAgICB0eXBlZGVmIFdvcmtlckNvbnRleHQ6Okxpc3Rl
bmVyVmVjdG9yIExpc3RlbmVyVmVjdG9yOworICAgIEV2ZW50TGlzdGVuZXJzTWFwJiBldmVudExp
c3RlbmVycyA9IG1faW1wbC0+ZXZlbnRMaXN0ZW5lcnMoKTsKKyAgICBmb3IgKEV2ZW50TGlzdGVu
ZXJzTWFwOjppdGVyYXRvciBtYXBJdGVyID0gZXZlbnRMaXN0ZW5lcnMuYmVnaW4oKTsgbWFwSXRl
ciAhPSBldmVudExpc3RlbmVycy5lbmQoKTsgKyttYXBJdGVyKSB7CisgICAgICAgIGZvciAoTGlz
dGVuZXJWZWN0b3I6Oml0ZXJhdG9yIHZlY0l0ZXIgPSBtYXBJdGVyLT5zZWNvbmQuYmVnaW4oKTsg
dmVjSXRlciAhPSBtYXBJdGVyLT5zZWNvbmQuZW5kKCk7ICsrdmVjSXRlcikgeworICAgICAgICAg
ICAgSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNV
bnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPih2ZWNJdGVyLT5nZXQoKSk7CisgICAgICAgICAgICBs
aXN0ZW5lci0+bWFyaygpOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgY29uc3QgSGFz
aFRhYmxlKiBnZXRKU1dvcmtlckNvbnRleHRUYWJsZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
cmV0dXJuIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoZXhlYy0+Z2xvYmFsRGF0YSgpLCAmSlNX
b3JrZXJDb250ZXh0VGFibGUpOworfQorCitjb25zdCBDbGFzc0luZm8gSlNXb3JrZXJDb250ZXh0
OjpzX2luZm8gPSB7ICJXb3JrZXJDb250ZXh0IiwgMCwgMCwgZ2V0SlNXb3JrZXJDb250ZXh0VGFi
bGUgfTsKKworSlNPYmplY3QqIEpTV29ya2VyQ29udGV4dDo6Y3JlYXRlUHJvdG90eXBlKEV4ZWNT
dGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gbmV3IChleGVjKSBKU1dvcmtlckNvbnRleHRQcm90
b3R5cGUoSlNXb3JrZXJDb250ZXh0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSkpOworfQorCit2b2lkIEpTV29y
a2VyQ29udGV4dDo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlKiB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGxv
b2t1cFB1dDxKU1dvcmtlckNvbnRleHQsIEJhc2U+KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IGdldEpTV29ya2VyQ29udGV4dFRhYmxlKGV4ZWMpLCB0aGlzLCBzbG90KTsKK30KKworYm9vbCBK
U1dvcmtlckNvbnRleHQ6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIC8v
IExvb2sgZm9yIG92ZXJyaWRlcyBiZWZvcmUgbG9va2luZyBhdCBhbnkgb2Ygb3VyIG93biBwcm9w
ZXJ0aWVzLgorICAgIGlmIChKU0dsb2JhbE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBn
ZXRTdGF0aWNWYWx1ZVNsb3Q8SlNXb3JrZXJDb250ZXh0LCBCYXNlPihleGVjLCBnZXRKU1dvcmtl
ckNvbnRleHRUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworSlNW
YWx1ZSoganNXb3JrZXJDb250ZXh0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSogdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBh
cmdzKQoreworICAgIGlmICghdGhpc1ZhbHVlLT5pc09iamVjdCgmSlNXb3JrZXJDb250ZXh0Ojpz
X2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOworICAg
IEpTV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IHN0YXRpY19jYXN0PEpTV29ya2VyQ29u
dGV4dCo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2Ug
PSBhcmdzLmF0KGV4ZWMsIDApLT50b1N0cmluZyhleGVjKTsKKworICAgIHdvcmtlckNvbnRleHQt
PmltcGwoKS0+cG9zdE1lc3NhZ2UobWVzc2FnZSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
Cit9CisKK0pTVmFsdWUqIGpzV29ya2VyQ29udGV4dFByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRM
aXN0ZW5lcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSogdGhpc1ZhbHVlLCBj
b25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIGlmICghdGhpc1ZhbHVlLT5pc09iamVjdCgmSlNX
b3JrZXJDb250ZXh0OjpzX2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBU
eXBlRXJyb3IpOworICAgIEpTV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IHN0YXRpY19j
YXN0PEpTV29ya2VyQ29udGV4dCo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIFJlZlB0cjxK
U1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSB3b3JrZXJDb250ZXh0LT5maW5k
T3JDcmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihleGVjLCBhcmdzLmF0KGV4ZWMsIDEp
KTsKKyAgICBpZiAoIWxpc3RlbmVyKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAg
ICB3b3JrZXJDb250ZXh0LT5pbXBsKCktPmFkZEV2ZW50TGlzdGVuZXIoYXJncy5hdChleGVjLCAw
KS0+dG9TdHJpbmcoZXhlYyksIGxpc3RlbmVyLnJlbGVhc2UoKSwgYXJncy5hdChleGVjLCAyKS0+
dG9Cb29sZWFuKGV4ZWMpKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworSlNWYWx1
ZSoganNXb3JrZXJDb250ZXh0UHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbmVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlKiB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xp
c3QmIGFyZ3MpCit7CisgICAgaWYgKCF0aGlzVmFsdWUtPmlzT2JqZWN0KCZKU1dvcmtlckNvbnRl
eHQ6OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7
CisgICAgSlNXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gc3RhdGljX2Nhc3Q8SlNXb3Jr
ZXJDb250ZXh0Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgSlNVbnByb3RlY3RlZEV2ZW50
TGlzdGVuZXIqIGxpc3RlbmVyID0gd29ya2VyQ29udGV4dC0+ZmluZEpTVW5wcm90ZWN0ZWRFdmVu
dExpc3RlbmVyKGV4ZWMsIGFyZ3MuYXQoZXhlYywgMSkpOworICAgIGlmICghbGlzdGVuZXIpCisg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIHdvcmtlckNvbnRleHQtPmltcGwoKS0+
cmVtb3ZlRXZlbnRMaXN0ZW5lcihhcmdzLmF0KGV4ZWMsIDApLT50b1N0cmluZyhleGVjKSwgbGlz
dGVuZXIsIGFyZ3MuYXQoZXhlYywgMiktPnRvQm9vbGVhbihleGVjKSk7CisgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUqIGpzV29ya2VyQ29udGV4dFByb3RvdHlwZUZ1bmN0
aW9uRGlzcGF0Y2hFdmVudChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSogdGhp
c1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIGlmICghdGhpc1ZhbHVlLT5pc09i
amVjdCgmSlNXb3JrZXJDb250ZXh0OjpzX2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cihleGVjLCBUeXBlRXJyb3IpOworICAgIEpTV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9
IHN0YXRpY19jYXN0PEpTV29ya2VyQ29udGV4dCo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAg
IEV2ZW50KiBldnQgPSB0b0V2ZW50KGFyZ3MuYXQoZXhlYywgMCkpOworCisgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgSlNWYWx1ZSogcmVzdWx0ID0ganNCb29sZWFuKHdvcmtlckNvbnRl
eHQtPmltcGwoKS0+ZGlzcGF0Y2hFdmVudChldnQsIGVjKSk7CisgICAgc2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIGVjKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0pTVmFsdWUqIGpzV29ya2Vy
Q29udGV4dExvY2F0aW9uKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwg
Y29uc3QgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIFdvcmtlckNvbnRleHQqIGltcCA9IHN0
YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihzdGF0aWNfY2FzdDxKU1dvcmtlckNvbnRleHQqPihh
c09iamVjdChzbG90LnNsb3RCYXNlKCkpKS0+aW1wbCgpKTsKKyAgICByZXR1cm4gdG9KUyhleGVj
LCBpbXAtPmxvY2F0aW9uKCkpOworfQorCitKU1ZhbHVlKiBqc1dvcmtlckNvbnRleHROYXZpZ2F0
b3IoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCit7CisgICAgV29ya2VyQ29udGV4dCogaW1wID0gc3RhdGljX2Nhc3Q8V29y
a2VyQ29udGV4dCo+KHN0YXRpY19jYXN0PEpTV29ya2VyQ29udGV4dCo+KGFzT2JqZWN0KHNsb3Qu
c2xvdEJhc2UoKSkpLT5pbXBsKCkpOworICAgIHJldHVybiB0b0pTKGV4ZWMsIGltcC0+bmF2aWdh
dG9yKCkpOworfQorCitKU1ZhbHVlKiBqc1dvcmtlckNvbnRleHRPbm1lc3NhZ2UoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Cit7CisgICAgV29ya2VyQ29udGV4dCogaW1wID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+
KHN0YXRpY19jYXN0PEpTV29ya2VyQ29udGV4dCo+KGFzT2JqZWN0KHNsb3Quc2xvdEJhc2UoKSkp
LT5pbXBsKCkpOworICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIg
PSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KGltcC0+b25tZXNzYWdl
KCkpKSB7CisgICAgICAgIGlmIChKU09iamVjdCogbGlzdGVuZXJPYmogPSBsaXN0ZW5lci0+bGlz
dGVuZXJPYmooKSkKKyAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lck9iajsKKyAgICB9CisgICAg
cmV0dXJuIGpzTnVsbCgpOworfQorCit2b2lkIHNldEpTV29ya2VyQ29udGV4dE9ubWVzc2FnZShF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlKiB2YWx1ZSkKK3sK
KyAgICBXb3JrZXJDb250ZXh0KiBpbXAgPSBzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4oc3Rh
dGljX2Nhc3Q8SlNXb3JrZXJDb250ZXh0Kj4odGhpc09iamVjdCktPmltcGwoKSk7CisgICAgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoaW1wLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAg
ICByZXR1cm47CisgICAgaW1wLT5zZXRPbm1lc3NhZ2UoZ2xvYmFsT2JqZWN0LT5maW5kT3JDcmVh
dGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihleGVjLCB2YWx1ZSwgdHJ1ZSkpOworfQorCitK
U1ZhbHVlKiBqc1dvcmtlckNvbnRleHRNZXNzYWdlRXZlbnQoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBK
U01lc3NhZ2VFdmVudDo6Z2V0Q29uc3RydWN0b3IoZXhlYyk7Cit9CisKK0pTVmFsdWUqIGpzV29y
a2VyQ29udGV4dFdvcmtlckxvY2F0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpCit7CisgICAgcmV0dXJuIEpTV29ya2VyTG9jYXRpb246
OmdldENvbnN0cnVjdG9yKGV4ZWMpOworfQorCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBnZXRK
U1dvcmtlckNvbnRleHRQcm90b3R5cGVUYWJsZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0
dXJuIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoZXhlYy0+Z2xvYmFsRGF0YSgpLCAmSlNXb3Jr
ZXJDb250ZXh0UHJvdG90eXBlVGFibGUpOworfQorCitjb25zdCBDbGFzc0luZm8gSlNXb3JrZXJD
b250ZXh0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJXb3JrZXJDb250ZXh0UHJvdG90eXBlIiwgMCwg
MCwgZ2V0SlNXb3JrZXJDb250ZXh0UHJvdG90eXBlVGFibGUgfTsKKworSlNPYmplY3QqIEpTV29y
a2VyQ29udGV4dFByb3RvdHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJu
IGdldERPTVByb3RvdHlwZTxKU1dvcmtlckNvbnRleHQ+KGV4ZWMpOworfQorCitib29sIEpTV29y
a2VyQ29udGV4dFByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7Cisg
ICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgZ2V0SlNXb3Jr
ZXJDb250ZXh0UHJvdG90eXBlVGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7
Cit9CisKK3ZvaWQgc2V0SlNXb3JrZXJDb250ZXh0TWVzc2FnZUV2ZW50KEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUqIHZhbHVlKQoreworICAgIC8vIFNoYWRv
d2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgc3RhdGljX2Nhc3Q8SlNXb3JrZXJDb250
ZXh0Kj4odGhpc09iamVjdCktPnB1dERpcmVjdChJZGVudGlmaWVyKGV4ZWMsICJNZXNzYWdlRXZl
bnQiKSwgdmFsdWUpOworfQorCit2b2lkIHNldEpTV29ya2VyQ29udGV4dFdvcmtlckxvY2F0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUqIHZhbHVlKQor
eworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgc3RhdGljX2Nh
c3Q8SlNXb3JrZXJDb250ZXh0Kj4odGhpc09iamVjdCktPnB1dERpcmVjdChJZGVudGlmaWVyKGV4
ZWMsICJMb2NhdGlvbiIpLCB2YWx1ZSk7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V29ya2VyQ29udGV4dEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDM5MTk3KQorKysgV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyAr
MjgsNyBAQAogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAKLSNpbmNsdWRlICJKU1dvcmtlckNvbnRl
eHQuaCIKKyNpbmNsdWRlICJKU1dvcmtlckNvbnRleHRCYXNlLmgiCiAKICNpbmNsdWRlICJFdmVu
dC5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgpAQCAtNDMsMjM5ICs0Myw0NCBAQAogCiB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBKU1Zh
bHVlKiBqc1dvcmtlckNvbnRleHRQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdlKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSosIGNvbnN0IEFyZ0xpc3QmKTsKLXN0YXRpYyBKU1ZhbHVl
KiBqc1dvcmtlckNvbnRleHRQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0
YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKiwgY29uc3QgQXJnTGlzdCYpOwotc3RhdGljIEpTVmFs
dWUqIGpzV29ya2VyQ29udGV4dFByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW5lcihF
eGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqLCBjb25zdCBBcmdMaXN0Jik7Ci1zdGF0aWMg
SlNWYWx1ZSoganNXb3JrZXJDb250ZXh0UHJvdG90eXBlRnVuY3Rpb25EaXNwYXRjaEV2ZW50KEV4
ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSosIGNvbnN0IEFyZ0xpc3QmKTsKLUpTVmFsdWUq
IGpzV29ya2VyQ29udGV4dExvY2F0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBj
b25zdCBQcm9wZXJ0eVNsb3QmKTsKLUpTVmFsdWUqIGpzV29ya2VyQ29udGV4dE5hdmlnYXRvcihF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7Ci1KU1Zh
bHVlKiBqc1dvcmtlckNvbnRleHRPbm1lc3NhZ2UoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwotdm9pZCBzZXRKU1dvcmtlckNvbnRleHRPbm1lc3Nh
Z2UoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7Ci12b2lkIHNldEpTV29ya2VyQ29u
dGV4dE1lc3NhZ2VFdmVudChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKLUpTVmFs
dWUqIGpzV29ya2VyQ29udGV4dE1lc3NhZ2VFdmVudChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7Ci1KU1ZhbHVlKiBqc1dvcmtlckNvbnRleHRXb3Jr
ZXJMb2NhdGlvbihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlT
bG90Jik7Ci12b2lkIHNldEpTV29ya2VyQ29udGV4dFdvcmtlckxvY2F0aW9uKEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiwgSlNWYWx1ZSopOwotCi19Ci0KIC8qCi1AYmVnaW4gSlNXb3JrZXJDb250ZXh0
UHJvdG90eXBlVGFibGUKLSAgYWRkRXZlbnRMaXN0ZW5lciAgICAgICAgICAgICAgIGpzV29ya2Vy
Q29udGV4dFByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lciAgICAgICAgICAgICAgRG9u
dERlbGV0ZXxGdW5jdGlvbiAzCi0gIHJlbW92ZUV2ZW50TGlzdGVuZXIgICAgICAgICAgICBqc1dv
cmtlckNvbnRleHRQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIgICAgICAgICAg
IERvbnREZWxldGV8RnVuY3Rpb24gMwotICBkaXNwYXRjaEV2ZW50ICAgICAgICAgICAgICAgICAg
anNXb3JrZXJDb250ZXh0UHJvdG90eXBlRnVuY3Rpb25EaXNwYXRjaEV2ZW50ICAgICAgICAgICAg
ICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKLSAgcG9zdE1lc3NhZ2UgICAgICAgICAgICAgICAg
ICAgIGpzV29ya2VyQ29udGV4dFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2UgICAgICAgICAg
ICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKK0BiZWdpbiBKU1dvcmtlckNvbnRleHRCYXNl
VGFibGUKIEBlbmQKICovCiAKLS8qCi1AYmVnaW4gSlNXb3JrZXJDb250ZXh0VGFibGUKLSAgbG9j
YXRpb24gICAgICAgICAgICAgICAgICAgICAganNXb3JrZXJDb250ZXh0TG9jYXRpb24gICAgICAg
ICAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotICBuYXZpZ2F0b3IgICAgICAgICAg
ICAgICAgICAgICBqc1dvcmtlckNvbnRleHROYXZpZ2F0b3IgICAgICAgICAgICAgICAgICAgICBE
b250RGVsZXRlfFJlYWRPbmx5Ci0gIG9ubWVzc2FnZSAgICAgICAgICAgICAgICAgICAgIGpzV29y
a2VyQ29udGV4dE9ubWVzc2FnZSAgICAgICAgICAgICAgICAgICAgIERvbnREZWxldGUKLSAgTWVz
c2FnZUV2ZW50ICAgICAgICAgICAgICAgICAganNXb3JrZXJDb250ZXh0TWVzc2FnZUV2ZW50ICAg
ICAgICAgICAgICAgICAgRG9udERlbGV0ZQotICBXb3JrZXJMb2NhdGlvbiAgICAgICAgICAgICAg
ICBqc1dvcmtlckNvbnRleHRXb3JrZXJMb2NhdGlvbiAgICAgICAgICAgICAgICBEb250RGVsZXRl
Ci1AZW5kCi0qLwotCi0jaW5jbHVkZSAiSlNXb3JrZXJDb250ZXh0Lmx1dC5oIgorI2luY2x1ZGUg
IkpTV29ya2VyQ29udGV4dEJhc2UubHV0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1dvcmtlckNvbnRleHQpCitBU1NFUlRfQ0xBU1NfRklU
U19JTl9DRUxMKEpTV29ya2VyQ29udGV4dEJhc2UpCiAKLXN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+IGNyZWF0ZUpTV29ya2VyQ29udGV4dFN0cnVjdHVyZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEpCi17Ci0gICAgcmV0dXJuIEpTV29ya2VyQ29udGV4dDo6Y3JlYXRlU3RydWN0
dXJlKG5ldyAoZ2xvYmFsRGF0YSkgSlNXb3JrZXJDb250ZXh0UHJvdG90eXBlKEpTV29ya2VyQ29u
dGV4dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkpOwotfQotCi1KU1dvcmtl
ckNvbnRleHQ6OkpTV29ya2VyQ29udGV4dChQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+IGltcGwp
Ci0gICAgOiBKU0RPTUdsb2JhbE9iamVjdChjcmVhdGVKU1dvcmtlckNvbnRleHRTdHJ1Y3R1cmUo
SGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0YSgpKSwgbmV3IEpTRE9NR2xvYmFsT2JqZWN0RGF0
YSwgdGhpcykKK0pTV29ya2VyQ29udGV4dEJhc2U6OkpTV29ya2VyQ29udGV4dEJhc2UoUGFzc1Jl
ZlB0cjxKU0M6OlN0cnVjdHVyZT4gc3RydWN0dXJlLCBQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+
IGltcGwpCisgICAgOiBKU0RPTUdsb2JhbE9iamVjdChzdHJ1Y3R1cmUsIG5ldyBKU0RPTUdsb2Jh
bE9iamVjdERhdGEsIHRoaXMpCiAgICAgLCBtX2ltcGwoaW1wbCkKIHsKLSAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8gc3RhdGljR2xvYmFsc1tdID0gewotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
SWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJzZWxmIiksIHRoaXMsIERvbnREZWxldGUgfCBSZWFk
T25seSksCi0gICAgfTsKLSAgICAKLSAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMs
IHNpemVvZihzdGF0aWNHbG9iYWxzKSAvIHNpemVvZihHbG9iYWxQcm9wZXJ0eUluZm8pKTsKLQog
fQogCi1KU1dvcmtlckNvbnRleHQ6On5KU1dvcmtlckNvbnRleHQoKQorSlNXb3JrZXJDb250ZXh0
QmFzZTo6fkpTV29ya2VyQ29udGV4dEJhc2UoKQogewogfQogCi1TY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBKU1dvcmtlckNvbnRleHQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAorU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogSlNXb3JrZXJDb250ZXh0QmFzZTo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW1wbC5nZXQoKTsKIH0KIAotdm9pZCBK
U1dvcmtlckNvbnRleHQ6Om1hcmsoKQotewotICAgIEJhc2U6Om1hcmsoKTsKLQotICAgIG1hcmtB
Y3RpdmVPYmplY3RzRm9yQ29udGV4dCgqZ2xvYmFsRGF0YSgpLCBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwotCi0gICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9
IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4obV9pbXBsLT5vbm1lc3Nh
Z2UoKSkpCi0gICAgICAgIGxpc3RlbmVyLT5tYXJrKCk7Ci0KLSAgICB0eXBlZGVmIFdvcmtlckNv
bnRleHQ6OkV2ZW50TGlzdGVuZXJzTWFwIEV2ZW50TGlzdGVuZXJzTWFwOwotICAgIHR5cGVkZWYg
V29ya2VyQ29udGV4dDo6TGlzdGVuZXJWZWN0b3IgTGlzdGVuZXJWZWN0b3I7Ci0gICAgRXZlbnRM
aXN0ZW5lcnNNYXAmIGV2ZW50TGlzdGVuZXJzID0gbV9pbXBsLT5ldmVudExpc3RlbmVycygpOwot
ICAgIGZvciAoRXZlbnRMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yIG1hcEl0ZXIgPSBldmVudExpc3Rl
bmVycy5iZWdpbigpOyBtYXBJdGVyICE9IGV2ZW50TGlzdGVuZXJzLmVuZCgpOyArK21hcEl0ZXIp
IHsKLSAgICAgICAgZm9yIChMaXN0ZW5lclZlY3Rvcjo6aXRlcmF0b3IgdmVjSXRlciA9IG1hcEl0
ZXItPnNlY29uZC5iZWdpbigpOyB2ZWNJdGVyICE9IG1hcEl0ZXItPnNlY29uZC5lbmQoKTsgKyt2
ZWNJdGVyKSB7Ci0gICAgICAgICAgICBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlzdGVu
ZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KHZlY0l0ZXItPmdl
dCgpKTsKLSAgICAgICAgICAgIGxpc3RlbmVyLT5tYXJrKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGUqIGdldEpTV29ya2VyQ29udGV4dFRhYmxlKEV4ZWNT
dGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4gZ2V0SGFzaFRhYmxlRm9yR2xvYmFsRGF0YShleGVj
LT5nbG9iYWxEYXRhKCksICZKU1dvcmtlckNvbnRleHRUYWJsZSk7Ci19Ci0KLWNvbnN0IENsYXNz
SW5mbyBKU1dvcmtlckNvbnRleHQ6OnNfaW5mbyA9IHsgIldvcmtlckNvbnRleHQiLCAwLCAwLCBn
ZXRKU1dvcmtlckNvbnRleHRUYWJsZSB9OwotCi1KU09iamVjdCogSlNXb3JrZXJDb250ZXh0Ojpj
cmVhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBuZXcgKGV4ZWMp
IEpTV29ya2VyQ29udGV4dFByb3RvdHlwZShKU1dvcmtlckNvbnRleHRQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgp
KSk7Ci19Ci0KLXZvaWQgSlNXb3JrZXJDb250ZXh0OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUqIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCi17Ci0gICAgbG9va3VwUHV0PEpTV29ya2VyQ29udGV4dCwgQmFzZT4oZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgZ2V0SlNXb3JrZXJDb250ZXh0VGFibGUoZXhlYyksIHRoaXMs
IHNsb3QpOwotfQotCi1ib29sIEpTV29ya2VyQ29udGV4dDo6Z2V0T3duUHJvcGVydHlTbG90KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCi17Ci0gICAgLy8gTG9vayBmb3Igb3ZlcnJpZGVzIGJlZm9yZSBsb29raW5nIGF0
IGFueSBvZiBvdXIgb3duIHByb3BlcnRpZXMuCi0gICAgaWYgKEpTR2xvYmFsT2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1dvcmtlckNvbnRleHQsIEJh
c2U+KGV4ZWMsIGdldEpTV29ya2VyQ29udGV4dFRhYmxlKGV4ZWMpLCB0aGlzLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwotfQotCi1KU1ZhbHVlKiBqc1dvcmtlckNvbnRleHRQcm90b3R5cGVGdW5jdGlv
blBvc3RNZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlKiB0aGlzVmFs
dWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCi17Ci0gICAgaWYgKCF0aGlzVmFsdWUtPmlzT2JqZWN0
KCZKU1dvcmtlckNvbnRleHQ6OnNfaW5mbykpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4
ZWMsIFR5cGVFcnJvcik7Ci0gICAgSlNXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8SlNXb3JrZXJDb250ZXh0Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Ci0gICAgY29u
c3QgVVN0cmluZyYgbWVzc2FnZSA9IGFyZ3MuYXQoZXhlYywgMCktPnRvU3RyaW5nKGV4ZWMpOwot
Ci0gICAgd29ya2VyQ29udGV4dC0+aW1wbCgpLT5wb3N0TWVzc2FnZShtZXNzYWdlKTsKLSAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSoganNXb3JrZXJDb250ZXh0UHJvdG90
eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBK
U1ZhbHVlKiB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCi17Ci0gICAgaWYgKCF0aGlz
VmFsdWUtPmlzT2JqZWN0KCZKU1dvcmtlckNvbnRleHQ6OnNfaW5mbykpCi0gICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0gICAgSlNXb3JrZXJDb250ZXh0KiB3b3Jr
ZXJDb250ZXh0ID0gc3RhdGljX2Nhc3Q8SlNXb3JrZXJDb250ZXh0Kj4oYXNPYmplY3QodGhpc1Zh
bHVlKSk7Ci0gICAgUmVmUHRyPEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9
IHdvcmtlckNvbnRleHQtPmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKGV4
ZWMsIGFyZ3MuYXQoZXhlYywgMSkpOwotICAgIGlmICghbGlzdGVuZXIpCi0gICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwotICAgIHdvcmtlckNvbnRleHQtPmltcGwoKS0+YWRkRXZlbnRMaXN0
ZW5lcihhcmdzLmF0KGV4ZWMsIDApLT50b1N0cmluZyhleGVjKSwgbGlzdGVuZXIucmVsZWFzZSgp
LCBhcmdzLmF0KGV4ZWMsIDIpLT50b0Jvb2xlYW4oZXhlYykpOwotICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwotfQotCi1KU1ZhbHVlKiBqc1dvcmtlckNvbnRleHRQcm90b3R5cGVGdW5jdGlvblJl
bW92ZUV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEpTVmFsdWUqIHRo
aXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJncykKLXsKLSAgICBpZiAoIXRoaXNWYWx1ZS0+aXNP
YmplY3QoJkpTV29ya2VyQ29udGV4dDo6c19pbmZvKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoZXhlYywgVHlwZUVycm9yKTsKLSAgICBKU1dvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQg
PSBzdGF0aWNfY2FzdDxKU1dvcmtlckNvbnRleHQqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKLSAg
ICBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSB3b3JrZXJDb250ZXh0LT5m
aW5kSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgYXJncy5hdChleGVjLCAxKSk7Ci0g
ICAgaWYgKCFsaXN0ZW5lcikKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgd29y
a2VyQ29udGV4dC0+aW1wbCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGFyZ3MuYXQoZXhlYywgMCkt
PnRvU3RyaW5nKGV4ZWMpLCBsaXN0ZW5lciwgYXJncy5hdChleGVjLCAyKS0+dG9Cb29sZWFuKGV4
ZWMpKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSoganNXb3JrZXJD
b250ZXh0UHJvdG90eXBlRnVuY3Rpb25EaXNwYXRjaEV2ZW50KEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqLCBKU1ZhbHVlKiB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCitzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlKiBnZXRKU1dvcmtlckNvbnRleHRCYXNlVGFibGUoRXhlY1N0YXRlKiBl
eGVjKQogewotICAgIGlmICghdGhpc1ZhbHVlLT5pc09iamVjdCgmSlNXb3JrZXJDb250ZXh0Ojpz
X2luZm8pKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotICAg
IEpTV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IHN0YXRpY19jYXN0PEpTV29ya2VyQ29u
dGV4dCo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwotICAgIEV2ZW50KiBldnQgPSB0b0V2ZW50KGFy
Z3MuYXQoZXhlYywgMCkpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSlNWYWx1
ZSogcmVzdWx0ID0ganNCb29sZWFuKHdvcmtlckNvbnRleHQtPmltcGwoKS0+ZGlzcGF0Y2hFdmVu
dChldnQsIGVjKSk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLQotICAgIHJldHVy
biByZXN1bHQ7CisgICAgcmV0dXJuIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoZXhlYy0+Z2xv
YmFsRGF0YSgpLCAmSlNXb3JrZXJDb250ZXh0QmFzZVRhYmxlKTsKIH0KIAotSlNWYWx1ZSoganNX
b3JrZXJDb250ZXh0TG9jYXRpb24oSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgV29ya2VyQ29udGV4dCogaW1w
ID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KHN0YXRpY19jYXN0PEpTV29ya2VyQ29udGV4
dCo+KGFzT2JqZWN0KHNsb3Quc2xvdEJhc2UoKSkpLT5pbXBsKCkpOwotICAgIHJldHVybiB0b0pT
KGV4ZWMsIGltcC0+bG9jYXRpb24oKSk7Ci19Citjb25zdCBDbGFzc0luZm8gSlNXb3JrZXJDb250
ZXh0QmFzZTo6c19pbmZvID0geyAiV29ya2VyQ29udGV4dCIsIDAsIDAsIGdldEpTV29ya2VyQ29u
dGV4dEJhc2VUYWJsZSB9OwogCi1KU1ZhbHVlKiBqc1dvcmtlckNvbnRleHROYXZpZ2F0b3IoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCit2b2lkIEpTV29ya2VyQ29udGV4dEJhc2U6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSogdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKLSAgICBXb3JrZXJDb250ZXh0KiBpbXAgPSBzdGF0aWNfY2FzdDxXb3Jr
ZXJDb250ZXh0Kj4oc3RhdGljX2Nhc3Q8SlNXb3JrZXJDb250ZXh0Kj4oYXNPYmplY3Qoc2xvdC5z
bG90QmFzZSgpKSktPmltcGwoKSk7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgaW1wLT5uYXZpZ2F0
b3IoKSk7CisgICAgbG9va3VwUHV0PEpTV29ya2VyQ29udGV4dEJhc2UsIEJhc2U+KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIGdldEpTV29ya2VyQ29udGV4dEJhc2VUYWJsZShleGVjKSwgdGhp
cywgc2xvdCk7CiB9CiAKLUpTVmFsdWUqIGpzV29ya2VyQ29udGV4dE9ubWVzc2FnZShKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xv
dCkKLXsKLSAgICBXb3JrZXJDb250ZXh0KiBpbXAgPSBzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0
Kj4oc3RhdGljX2Nhc3Q8SlNXb3JrZXJDb250ZXh0Kj4oYXNPYmplY3Qoc2xvdC5zbG90QmFzZSgp
KSktPmltcGwoKSk7Ci0gICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5l
ciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1wLT5vbm1lc3Nh
Z2UoKSkpIHsKLSAgICAgICAgaWYgKEpTT2JqZWN0KiBsaXN0ZW5lck9iaiA9IGxpc3RlbmVyLT5s
aXN0ZW5lck9iaigpKQotICAgICAgICAgICAgcmV0dXJuIGxpc3RlbmVyT2JqOwotICAgIH0KLSAg
ICByZXR1cm4ganNOdWxsKCk7Ci19Ci0KLXZvaWQgc2V0SlNXb3JrZXJDb250ZXh0T25tZXNzYWdl
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUqIHZhbHVlKQot
ewotICAgIFdvcmtlckNvbnRleHQqIGltcCA9IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihz
dGF0aWNfY2FzdDxKU1dvcmtlckNvbnRleHQqPih0aGlzT2JqZWN0KS0+aW1wbCgpKTsKLSAgICBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVjdChpbXAt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgaWYgKCFnbG9iYWxPYmplY3QpCi0gICAg
ICAgIHJldHVybjsKLSAgICBpbXAtPnNldE9ubWVzc2FnZShnbG9iYWxPYmplY3QtPmZpbmRPckNy
ZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKGV4ZWMsIHZhbHVlLCB0cnVlKSk7Ci19Ci0K
LUpTVmFsdWUqIGpzV29ya2VyQ29udGV4dE1lc3NhZ2VFdmVudChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gICAgcmV0dXJu
IEpTTWVzc2FnZUV2ZW50OjpnZXRDb25zdHJ1Y3RvcihleGVjKTsKLX0KLQotSlNWYWx1ZSoganNX
b3JrZXJDb250ZXh0V29ya2VyTG9jYXRpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiwgY29uc3QgUHJvcGVydHlTbG90JikKLXsKLSAgICByZXR1cm4gSlNXb3JrZXJMb2NhdGlv
bjo6Z2V0Q29uc3RydWN0b3IoZXhlYyk7Ci19Ci0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGUqIGdl
dEpTV29ya2VyQ29udGV4dFByb3RvdHlwZVRhYmxlKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBy
ZXR1cm4gZ2V0SGFzaFRhYmxlRm9yR2xvYmFsRGF0YShleGVjLT5nbG9iYWxEYXRhKCksICZKU1dv
cmtlckNvbnRleHRQcm90b3R5cGVUYWJsZSk7Ci19Ci0KLWNvbnN0IENsYXNzSW5mbyBKU1dvcmtl
ckNvbnRleHRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIldvcmtlckNvbnRleHRQcm90b3R5cGUiLCAw
LCAwLCBnZXRKU1dvcmtlckNvbnRleHRQcm90b3R5cGVUYWJsZSB9OwotCi1KU09iamVjdCogSlNX
b3JrZXJDb250ZXh0UHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICByZXR1
cm4gZ2V0RE9NUHJvdG90eXBlPEpTV29ya2VyQ29udGV4dD4oZXhlYyk7Ci19Ci0KLWJvb2wgSlNX
b3JrZXJDb250ZXh0UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKLXsK
LSAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCBnZXRKU1dv
cmtlckNvbnRleHRQcm90b3R5cGVUYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90
KTsKLX0KLQotdm9pZCBzZXRKU1dvcmtlckNvbnRleHRNZXNzYWdlRXZlbnQoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSogdmFsdWUpCi17Ci0gICAgLy8gU2hh
ZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBzdGF0aWNfY2FzdDxKU1dvcmtlckNv
bnRleHQqPih0aGlzT2JqZWN0KS0+cHV0RGlyZWN0KElkZW50aWZpZXIoZXhlYywgIk1lc3NhZ2VF
dmVudCIpLCB2YWx1ZSk7Ci19Ci0KLXZvaWQgc2V0SlNXb3JrZXJDb250ZXh0V29ya2VyTG9jYXRp
b24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSogdmFsdWUp
Ci17Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICBzdGF0aWNf
Y2FzdDxKU1dvcmtlckNvbnRleHQqPih0aGlzT2JqZWN0KS0+cHV0RGlyZWN0KElkZW50aWZpZXIo
ZXhlYywgIkxvY2F0aW9uIiksIHZhbHVlKTsKLX0KLQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJDb250ZXh0QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJDb250ZXh0QmFzZS5oCShyZXZpc2lvbiAzOTE5NykJKGZyb20gV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckNvbnRleHQuaDozOTE5NykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJDb250ZXh0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqCisgKi8KKworI2lmbmRlZiBKU1dvcmtlckNvbnRleHRfaAorI2RlZmluZSBKU1dvcmtlckNv
bnRleHRfaAorCisjaWYgRU5BQkxFKFdPUktFUlMpCisKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9i
amVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBXb3JrZXJDb250ZXh0
OworCisgICAgY2xhc3MgSlNXb3JrZXJDb250ZXh0IDogcHVibGljIEpTRE9NR2xvYmFsT2JqZWN0
IHsKKyAgICAgICAgdHlwZWRlZiBKU0RPTUdsb2JhbE9iamVjdCBCYXNlOworICAgIHB1YmxpYzoK
KyAgICAgICAgSlNXb3JrZXJDb250ZXh0KFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4pOworICAg
ICAgICB2aXJ0dWFsIH5KU1dvcmtlckNvbnRleHQoKTsKKworICAgICAgICBzdGF0aWMgSlNDOjpK
U09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKik7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBwdXQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNDOjpKU1ZhbHVlKiwgSlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICAgICAg
dmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpT
Qzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgICAg
ICB2aXJ0dWFsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVy
biAmc19pbmZvOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpKU1ZhbHVlKiBwcm90b3R5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUpKTsKKyAgICAgICAgfQorCisgICAgICAgIFdvcmtlckNvbnRleHQqIGltcGwoKSBj
b25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KKyAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CisKKyAgICAgICAg
dmlydHVhbCB2b2lkIG1hcmsoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFJlZlB0cjxXb3Jr
ZXJDb250ZXh0PiBtX2ltcGw7CisgICAgfTsKKworICAgIGNsYXNzIEpTV29ya2VyQ29udGV4dFBy
b3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTT2JqZWN0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0
YXRpYyBKU0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6RXhlY1N0YXRlKik7CisgICAgICAgIEpTV29y
a2VyQ29udGV4dFByb3RvdHlwZShQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBzdHJ1Y3R1cmUp
IDogSlNDOjpKU09iamVjdChzdHJ1Y3R1cmUpIHsgfQorCisgICAgICAgIHZpcnR1YWwgY29uc3Qg
SlNDOjpDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZzX2luZm87IH0KKyAg
ICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKKyAgICAgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRl
bnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90Jik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEpTQzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU1ZhbHVlKiBwcm90b3R5cGUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHBy
b3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUpKTsKKyAgICAgICAgfQorICAg
IH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJT
KQorCisjZW5kaWYgLy8gSlNXb3JrZXJDb250ZXh0X2gKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJDb250ZXh0QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJDb250ZXh0QmFzZS5oCShyZXZpc2lvbiAzOTE5NykKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4ICsy
NCw4IEBACiAgKgogICovCiAKLSNpZm5kZWYgSlNXb3JrZXJDb250ZXh0X2gKLSNkZWZpbmUgSlNX
b3JrZXJDb250ZXh0X2gKKyNpZm5kZWYgSlNXb3JrZXJDb250ZXh0QmFzZV9oCisjZGVmaW5lIEpT
V29ya2VyQ29udGV4dEJhc2VfaAogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAKQEAgLTM1LDQ3ICsz
NSwyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBXb3JrZXJDb250ZXh0Owog
Ci0gICAgY2xhc3MgSlNXb3JrZXJDb250ZXh0IDogcHVibGljIEpTRE9NR2xvYmFsT2JqZWN0IHsK
KyAgICBjbGFzcyBKU1dvcmtlckNvbnRleHRCYXNlIDogcHVibGljIEpTRE9NR2xvYmFsT2JqZWN0
IHsKICAgICAgICAgdHlwZWRlZiBKU0RPTUdsb2JhbE9iamVjdCBCYXNlOwogICAgIHB1YmxpYzoK
LSAgICAgICAgSlNXb3JrZXJDb250ZXh0KFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4pOwotICAg
ICAgICB2aXJ0dWFsIH5KU1dvcmtlckNvbnRleHQoKTsKKyAgICAgICAgSlNXb3JrZXJDb250ZXh0
QmFzZShQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiwgUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0
Pik7CisgICAgICAgIHZpcnR1YWwgfkpTV29ya2VyQ29udGV4dEJhc2UoKTsKIAotICAgICAgICBz
dGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlKiwgSlNDOjpQdXRQcm9wZXJ0eVNsb3Qm
KTsKLSAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xv
dCYpOwogICAgICAgICB2aXJ0dWFsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBj
b25zdCB7IHJldHVybiAmc19pbmZvOyB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNz
SW5mbyBzX2luZm87Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU1ZhbHVlKiBwcm90b3R5cGUpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUpKTsKLSAgICAgICAgfQogCiAgICAgICAgIFdvcmtlckNvbnRl
eHQqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KICAgICAgICAgdmlydHVh
bCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7
CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIG1hcmsoKTsKLQogICAgIHByaXZhdGU6CiAgICAgICAg
IFJlZlB0cjxXb3JrZXJDb250ZXh0PiBtX2ltcGw7CiAgICAgfTsKIAotICAgIGNsYXNzIEpTV29y
a2VyQ29udGV4dFByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTT2JqZWN0IHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6RXhlY1N0YXRlKik7Ci0g
ICAgICAgIEpTV29ya2VyQ29udGV4dFByb3RvdHlwZShQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJl
PiBzdHJ1Y3R1cmUpIDogSlNDOjpKU09iamVjdChzdHJ1Y3R1cmUpIHsgfQotCi0gICAgICAgIHZp
cnR1YWwgY29uc3QgSlNDOjpDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZz
X2luZm87IH0KLSAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKLSAg
ICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IEpTQzo6SWRlbnRpZmllciYsIEpTQzo6UHJvcGVydHlTbG90Jik7Ci0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEpTQzo6U3RydWN0dXJlPiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU1ZhbHVl
KiBwcm90b3R5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVy
ZTo6Y3JlYXRlKHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUpKTsKLSAg
ICAgICAgfQotICAgIH07Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShXT1JLRVJTKQogCi0jZW5kaWYgLy8gSlNXb3JrZXJDb250ZXh0X2gKKyNlbmRpZiAvLyBK
U1dvcmtlckNvbnRleHRCYXNlX2gKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2VyQ29udGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdPUktFUlMpCisKKyNpbmNsdWRlICJKU1dvcmtlckNv
bnRleHQuaCIKKworI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRXZlbnRM
aXN0ZW5lci5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKwordXNpbmcgbmFtZXNwYWNl
IEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEpTV29ya2VyQ29udGV4dDo6Y3Vz
dG9tR2V0T3duUHJvcGVydHlTbG90KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAg
Ly8gTG9vayBmb3Igb3ZlcnJpZGVzIGJlZm9yZSBsb29raW5nIGF0IGFueSBvZiBvdXIgb3duIHBy
b3BlcnRpZXMuCisgICAgaWYgKEpTR2xvYmFsT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZXhl
YywgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIEpTV29ya2VyQ29udGV4dDo6bWFyaygpCit7CisgICAgQmFzZTo6
bWFyaygpOworCisgICAgbWFya0FjdGl2ZU9iamVjdHNGb3JDb250ZXh0KCpnbG9iYWxEYXRhKCks
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisKKyAgICBpZiAoSlNVbnByb3RlY3RlZEV2ZW50
TGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVu
ZXIqPihpbXBsKCktPm9ubWVzc2FnZSgpKSkKKyAgICAgICAgbGlzdGVuZXItPm1hcmsoKTsKKwor
ICAgIHR5cGVkZWYgV29ya2VyQ29udGV4dDo6RXZlbnRMaXN0ZW5lcnNNYXAgRXZlbnRMaXN0ZW5l
cnNNYXA7CisgICAgdHlwZWRlZiBXb3JrZXJDb250ZXh0OjpMaXN0ZW5lclZlY3RvciBMaXN0ZW5l
clZlY3RvcjsKKyAgICBFdmVudExpc3RlbmVyc01hcCYgZXZlbnRMaXN0ZW5lcnMgPSBpbXBsKCkt
PmV2ZW50TGlzdGVuZXJzKCk7CisgICAgZm9yIChFdmVudExpc3RlbmVyc01hcDo6aXRlcmF0b3Ig
bWFwSXRlciA9IGV2ZW50TGlzdGVuZXJzLmJlZ2luKCk7IG1hcEl0ZXIgIT0gZXZlbnRMaXN0ZW5l
cnMuZW5kKCk7ICsrbWFwSXRlcikgeworICAgICAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjppdGVy
YXRvciB2ZWNJdGVyID0gbWFwSXRlci0+c2Vjb25kLmJlZ2luKCk7IHZlY0l0ZXIgIT0gbWFwSXRl
ci0+c2Vjb25kLmVuZCgpOyArK3ZlY0l0ZXIpIHsKKyAgICAgICAgICAgIEpTVW5wcm90ZWN0ZWRF
dmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExp
c3RlbmVyKj4odmVjSXRlci0+Z2V0KCkpOworICAgICAgICAgICAgbGlzdGVuZXItPm1hcmsoKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworSlNWYWx1ZSogSlNXb3JrZXJDb250ZXh0OjpzZWxmKEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1cm4gYXNWYWx1ZSgpOworfQorCit2b2lk
IEpTV29ya2VyQ29udGV4dDo6c2V0U2VsZihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIHZhbHVl
KQoreworICAgIHB1dERpcmVjdChJZGVudGlmaWVyKGV4ZWMsICJzZWxmIiksIHZhbHVlKTsKK30K
KworSlNWYWx1ZSogSlNXb3JrZXJDb250ZXh0OjphZGRFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBSZWZQdHI8SlNVbnByb3RlY3RlZEV2
ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlz
dGVuZXIoZXhlYywgYXJncy5hdChleGVjLCAxKSk7CisgICAgaWYgKCFsaXN0ZW5lcikKKyAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaW1wbCgpLT5hZGRFdmVudExpc3RlbmVyKGFy
Z3MuYXQoZXhlYywgMCktPnRvU3RyaW5nKGV4ZWMpLCBsaXN0ZW5lci5yZWxlYXNlKCksIGFyZ3Mu
YXQoZXhlYywgMiktPnRvQm9vbGVhbihleGVjKSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
Cit9CisKK0pTVmFsdWUqIEpTV29ya2VyQ29udGV4dDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgSlNVbnByb3RlY3RlZEV2
ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gZmluZEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKGV4
ZWMsIGFyZ3MuYXQoZXhlYywgMSkpOworICAgIGlmICghbGlzdGVuZXIpCisgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworICAgIGltcGwoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihhcmdzLmF0
KGV4ZWMsIDApLT50b1N0cmluZyhleGVjKSwgbGlzdGVuZXIsIGFyZ3MuYXQoZXhlYywgMiktPnRv
Qm9vbGVhbihleGVjKSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQoKUHJvcGVydHkgY2hh
bmdlcyBvbjogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMzky
NzEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw5IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxl
cjo6aW5pdFNjcmlwdCgKIAogICAgIEpTTG9jayBsb2NrKGZhbHNlKTsKIAotICAgIG1fd29ya2Vy
Q29udGV4dFdyYXBwZXIgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNXb3JrZXJDb250ZXh0
KG1fd29ya2VyQ29udGV4dCk7CisgICAgUmVmUHRyPFN0cnVjdHVyZT4gcHJvdG90eXBlU3RydWN0
dXJlID0gSlNXb3JrZXJDb250ZXh0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoanNOdWxsKCkp
OworICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IEpTV29ya2VyQ29udGV4dDo6Y3Jl
YXRlU3RydWN0dXJlKG5ldyAobV9nbG9iYWxEYXRhLmdldCgpKSBKU1dvcmtlckNvbnRleHRQcm90
b3R5cGUocHJvdG90eXBlU3RydWN0dXJlLnJlbGVhc2UoKSkpOworICAgIG1fd29ya2VyQ29udGV4
dFdyYXBwZXIgPSBuZXcgKG1fZ2xvYmFsRGF0YS5nZXQoKSkgSlNXb3JrZXJDb250ZXh0KHN0cnVj
dHVyZS5yZWxlYXNlKCksIG1fd29ya2VyQ29udGV4dCk7CiB9CiAKIFNjcmlwdFZhbHVlIFdvcmtl
clNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJj
ZUNvZGUpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0JKHJldmlzaW9uIDM5MjcxKQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtNDM4LDcgKzQzOCw3IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCB+JGNsYXNzTmFt
ZSgpO1xuIikgaWYgKCEkaGFzUGFyZW50IG9yICRpbnRlcmZhY2VOYW1lIGVxICJEb2N1bWVudCIp
OwogCiAgICAgIyBQcm90b3R5cGUKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpFeGVjU3RhdGUqKTtcbiIpIGlm
ICRpbnRlcmZhY2VOYW1lIG5lICJET01XaW5kb3ciOworICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0
ZSopO1xuIikgdW5sZXNzICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFeHRlbmRz
RE9NR2xvYmFsT2JqZWN0In0pOwogCiAgICAgJGltcGxJbmNsdWRlc3siJHtjbGFzc05hbWV9Q3Vz
dG9tLmgifSA9IDEgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSGVh
ZGVyIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHV0RnVuY3Rp
b24ifTsKIApAQCAtNjYxLDYgKzY2MSw4IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICJwdWJsaWM6XG4iKTsKICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEg
IkRPTVdpbmRvdyIpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkKiBv
cGVyYXRvciBuZXcoc2l6ZV90KTtcbiIpOworICAgIH0gZWxzaWYgKCRpbnRlcmZhY2VOYW1lIGVx
ICJXb3JrZXJDb250ZXh0IikgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIEpTQzo6SlNHbG9iYWxEYXRhKik7XG4iKTsKICAgICB9
IGVsc2UgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpT
T2JqZWN0KiBzZWxmKEpTQzo6RXhlY1N0YXRlKik7XG4iKTsKICAgICB9CkBAIC04OTMsMTcgKzg5
NSwyMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIH0gZWxzZSB7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiY29uc3QgQ2xhc3NJbmZvICR7Y2xhc3NOYW1lfVByb3RvdHlw
ZTo6c19pbmZvID0geyBcIiR7dmlzaWJsZUNsYXNzTmFtZX1Qcm90b3R5cGVcIiwgMCwgJiR7Y2xh
c3NOYW1lfVByb3RvdHlwZVRhYmxlLCAwIH07XG5cbiIpOwogICAgIH0KLSAgICBpZiAoJGludGVy
ZmFjZU5hbWUgbmUgIkRPTVdpbmRvdyIpIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJK
U09iamVjdCogJHtjbGFzc05hbWV9UHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYylcbiIp
OwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPCR7Y2xhc3NOYW1lfT4oZXhlYyk7
XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwotICAgIH0KICAgICBp
ZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ2b2lkKiAke2NsYXNzTmFtZX1Qcm90b3R5cGU6Om9wZXJhdG9yIG5ldyhzaXplX3Qg
c2l6ZSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFs
RGF0YSgpLT5oZWFwLmFsbG9jYXRlKHNpemUpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAifVxuXG4iKTsKKyAgICB9IGVsc2lmICgkaW50ZXJmYWNlTmFtZSBlcSAiV29ya2VyQ29u
dGV4dCIpIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkKiAke2NsYXNzTmFtZX1Q
cm90b3R5cGU6Om9wZXJhdG9yIG5ldyhzaXplX3Qgc2l6ZSwgSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhKVxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnbG9iYWxEYXRhLT5oZWFwLmFsbG9jYXRlKHNp
emUpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTT2JqZWN0KiAke2NsYXNzTmFtZX1Q
cm90b3R5cGU6OnNlbGYoRXhlY1N0YXRlKiBleGVjKVxuIik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAie1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBn
ZXRET01Qcm90b3R5cGU8JHtjbGFzc05hbWV9PihleGVjKTtcbiIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQogICAgIGlmICgkbnVtQ29uc3RhbnRzID4gMCB8
fCAkbnVtRnVuY3Rpb25zID4gMCkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wg
JHtjbGFzc05hbWV9UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcbiIp
OwpAQCAtOTk5LDcgKzEwMDUsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiAgICBmb3JnZXRET01PYmplY3QoKkhlYXA6OmhlYXAo
dGhpcyktPmdsb2JhbERhdGEoKSwgc3RhdGljX2Nhc3Q8JHtpbXBsQ2xhc3NOYW1lfSo+KGltcGwo
KSkpO1xufVxuXG4iKTsKICAgICB9CiAKLSAgICBpZiAoJGludGVyZmFjZU5hbWUgbmUgIkRPTVdp
bmRvdyIpIHsKKyAgICBpZiAoISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkV4dGVu
ZHNET01HbG9iYWxPYmplY3QifSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTT2Jq
ZWN0KiAke2NsYXNzTmFtZX06OmNyZWF0ZVByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMpXG4iKTsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgaWYgKCRoYXNQYXJl
bnQgJiYgJHBhcmVudENsYXNzTmFtZSBuZSAiSlNDOjpET01Ob2RlRmlsdGVyIikgewpAQCAtMTIx
Myw4ICsxMjE5LDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
bGlzdGVuZXJUeXBlID0gIkpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyIjsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpbnRl
cmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvdyo+KHRoaXNPYmplY3QpO1xuIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkV4dGVuZHNET01HbG9iYWxPYmplY3QifSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmplY3QpO1xuIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJGltcGxJbmNsdWRlc3siRnJhbWUuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNET01HbG9iYWxPYmplY3QuaCJ9ID0gMTsKSW5k
ZXg6IFdlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL1dvcmtlckNvbnRleHQuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vV29ya2Vy
Q29udGV4dC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKwor
bW9kdWxlIHRocmVhZHMgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9
V09SS0VSUywKKyAgICAgICAgQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90LAorICAgICAgICBDdXN0
b21NYXJrRnVuY3Rpb24sCisgICAgICAgIEV4dGVuZHNET01HbG9iYWxPYmplY3QsCisgICAgICAg
IExlZ2FjeVBhcmVudD1KU1dvcmtlckNvbnRleHRCYXNlLAorICAgICAgICBOb1N0YXRpY1RhYmxl
cworICAgIF0gV29ya2VyQ29udGV4dCB7CisjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBU
KQorICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbV0gV29ya2VyQ29udGV4dCBzZWxmOworI2VuZGlm
CisKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25tZXNzYWdlOworICAgICAgICB2
b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdlKTsKKworICAgICAgICBhdHRyaWJ1
dGUgW1JlcGxhY2VhYmxlXSBXb3JrZXJMb2NhdGlvbiBsb2NhdGlvbjsKKyAgICAgICAgYXR0cmli
dXRlIFtSZXBsYWNlYWJsZV0gV29ya2VyTmF2aWdhdG9yIG5hdmlnYXRvcjsKKyAgICAgICAgCisg
ICAgICAgIGF0dHJpYnV0ZSBNZXNzYWdlRXZlbnRDb25zdHJ1Y3RvciBNZXNzYWdlRXZlbnQ7Cisg
ICAgICAgIGF0dHJpYnV0ZSBXb3JrZXJMb2NhdGlvbkNvbnN0cnVjdG9yIFdvcmtlckxvY2F0aW9u
OworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgICAgICBbQ3VzdG9tXSB2
b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIHVzZUNhcHR1cmUp
OworICAgICAgICBbQ3VzdG9tXSB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5n
IHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZl
bnRMaXN0ZW5lciBsaXN0ZW5lciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNo
RXZlbnQoaW4gRXZlbnQgZXZ0KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsK
KyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24gMzkyNzEpCisrKyBXZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBt
b2R1bGUgd2luZG93IHsKICAgICAgICAgQ3VzdG9tTWFya0Z1bmN0aW9uLAogICAgICAgICBDdXN0
b21OYXRpdmVDb252ZXJ0ZXIsCiAgICAgICAgIEN1c3RvbVB1dEZ1bmN0aW9uLAorICAgICAgICBF
eHRlbmRzRE9NR2xvYmFsT2JqZWN0LAogICAgICAgICBHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlciwK
ICAgICAgICAgTGVnYWN5UGFyZW50PUpTRE9NV2luZG93QmFzZQogICAgIF0gRE9NV2luZG93IHsK
SW5kZXg6IFdlYkNvcmUvcGFnZS9Xb3JrZXJOYXZpZ2F0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9Xb3JrZXJOYXZpZ2F0b3IuY3BwCShyZXZpc2lvbiAzOTI3MSkKKysrIFdlYkNv
cmUvcGFnZS9Xb3JrZXJOYXZpZ2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw5
IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdPUktFUlMpCisK
ICNpbmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NDQsMyArNDcsNSBAQCBTdHJpbmcgV29ya2VyTmF2aWdhdG9yOjp1c2VyQWdlbnQoKSBjb25zCiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQpJ
bmRleDogV2ViQ29yZS9wYWdlL1dvcmtlck5hdmlnYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9Xb3JrZXJOYXZpZ2F0b3IuaAkocmV2aXNpb24gMzkyNzEpCisrKyBXZWJDb3JlL3Bh
Z2UvV29ya2VyTmF2aWdhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNp
Zm5kZWYgV29ya2VyTmF2aWdhdG9yX2gKICNkZWZpbmUgV29ya2VyTmF2aWdhdG9yX2gKIAorI2lm
IEVOQUJMRShXT1JLRVJTKQorCiAjaW5jbHVkZSAiTmF2aWdhdG9yQmFzZS5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQ5LDQg
KzUxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
KyNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKKwogI2VuZGlmIC8vIFdvcmtlck5hdmlnYXRvcl9o
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAzOTI3MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDA4LTEyLTEzICBBbGV4ZXkgUHJvc2t1cnlh
a292ICA8YXBAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4
NDMKKyAgICAgICAgQXV0by1nZW5lcmF0ZSBKU1dvcmtlckNvbnRleHQKKworICAgICAgICAqIGZh
c3Qvd29ya2Vycy93b3JrZXItcmVwbGFjZS1zZWxmLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC93b3JrZXJzL3dvcmtlci1yZXBsYWNlLXNlbGYuaHRtbDogQWRkZWQuCisgICAg
ICAgIFRlc3QgdGhhdCAic2VsZiIgaXMgcmVwbGFjZWFibGUuIFRoaXMgbWF0Y2hlcyB3aW5kb3cu
c2VsZiBiZWhhdmlvciwgYnV0IG5vdCBGaXJlZm94LgorCisgICAgICAgICogZmFzdC93b3JrZXJz
L3dvcmtlci1sb2NhdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC93b3JrZXJzL3dv
cmtlci1sb2NhdGlvbi5odG1sOgorICAgICAgICBBZGRlZCBhIHRlc3QgZm9yIGdsb2JhbCBjb25z
dHJ1Y3Rvci4KKwogMjAwOC0xMi0xMiAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvd29ya2VyLWxvY2F0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWxvY2F0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMzkyNzEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWxvY2F0aW9uLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIFRlc3QgV29ya2VyTG9j
YXRpb24gcHJvcGVydGllcy4KIAorV29ya2VyTG9jYXRpb246IFtvYmplY3QgV29ya2VyTG9jYXRp
b25Db25zdHJ1Y3Rvcl0KIHR5cGVvZiBsb2NhdGlvbjogb2JqZWN0CiBsb2NhdGlvbjogZmlsZTo8
Li4uPi9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1jb21tb24uanMKIGxvY2F0aW9uLmhy
ZWY6IGZpbGU6PC4uLj4vZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItY29tbW9uLmpzCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWxvY2F0aW9uLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1sb2NhdGlvbi5odG1sCShy
ZXZpc2lvbiAzOTI3MSkKKysrIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbG9jYXRp
b24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQCBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CiB9CiAKIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCdyZXNvdXJj
ZXMvd29ya2VyLWNvbW1vbi5qcycpOword29ya2VyLnBvc3RNZXNzYWdlKCJldmFsIFdvcmtlckxv
Y2F0aW9uIik7CiB3b3JrZXIucG9zdE1lc3NhZ2UoImV2YWwgdHlwZW9mIGxvY2F0aW9uIik7CiB3
b3JrZXIucG9zdE1lc3NhZ2UoImV2YWwgbG9jYXRpb24iKTsKIHdvcmtlci5wb3N0TWVzc2FnZSgi
ZXZhbCBsb2NhdGlvbi5ocmVmIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29y
a2VyLXJlcGxhY2Utc2VsZi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC93b3JrZXJzL3dvcmtlci1yZXBsYWNlLXNlbGYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1yZXBsYWNlLXNlbGYtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKK1Rlc3QgdGhhdCBzZWxmIGlzIHJl
cGxhY2VhYmxlLgorCitzZWxmPSdQQVNTJzogUEFTUworc2VsZjogUEFTUworRE9ORQorCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXJlcGxhY2Ut
c2VsZi1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4
dC9wbGFpbgpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC93b3JrZXJzL3dvcmtlci1yZXBsYWNlLXNlbGYuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLXJlcGxhY2Utc2VsZi5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1yZXBsYWNlLXNlbGYuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMSBAQAorPGJvZHk+Cis8cD5UZXN0IHRoYXQgc2Vs
ZiBpcyByZXBsYWNlYWJsZS48L3A+Cis8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KKzxzY3JpcHQ+Citm
dW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIg
d29ya2VyID0gbmV3IFdvcmtlcigncmVzb3VyY2VzL3dvcmtlci1jb21tb24uanMnKTsKK3dvcmtl
ci5wb3N0TWVzc2FnZSgiZXZhbCBzZWxmPSdQQVNTJyIpOword29ya2VyLnBvc3RNZXNzYWdlKCJl
dmFsIHNlbGYiKTsKK3dvcmtlci5wb3N0TWVzc2FnZSgiZXZhbCBmb28vL2JhciIpOworCit3b3Jr
ZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgaWYgKCEvZm9vXC9cL2Jhci8udGVz
dChldnQuZGF0YSkpCisgICAgICAgIGxvZyhldnQuZGF0YS5yZXBsYWNlKG5ldyBSZWdFeHAoIi8u
KkxheW91dFRlc3RzIiksICI8Li4uPiIpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgbG9nKCJET05F
Iik7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvd29ya2VyLXJlcGxhY2Utc2VsZi5odG1sCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1p
bWUtdHlwZQogICArIHRleHQvaHRtbAoK
</data>
<flag name="review"
          id="12232"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>